SSRF 漏洞的理解
1. 漏洞描述
SSRF漏洞指的是攻击者可以通过构造恶意请求,是服务器端发起未经授权的网络请求。攻击者可以通过利用此漏洞来访问本地资源、、绕过防火墙和内网限制,并进一步攻击内部系统。
2. 漏洞原理
服务器收到来自客户端的URL地址,并由服务器发送该URL请求。
对用户输入的URL并没有进行恰当的过滤,导致任意URL输入。
没对相应的结果进行检验,直接输出。
3. 漏洞场景
SSRF漏洞可发生在任何允许用户提供URL或IP地址并将其用于服务器端请求的场景,常见的场景文件上传功能,图片处理、远程资源加载等。
4. 漏洞评级
根据严重程度,SSRF漏洞通常被评为中等到高风险。具体评级取决于漏洞的利用范围、攻击者可以访问的敏感信息和影响的严重程度。
5. 漏洞危害
SSRF可能导致很多危害,包括但不限于:泄露内部系统和应用程序的敏感信息、绕过防火墙和内网限制、攻击内部系统、执行远程命令等。
- 端口扫描;
- 内网web应用指纹识别;
- 攻击内网应用;
- 读取本地文件
6. 漏洞验证
构造恶意请求,尝试访问不应该被访问的资源或系统,并观察服务器的响应。然后根据服务器的响应来判断是否存在SSRF漏洞。
7. 漏洞利用
利用SSRF漏洞需要攻击者构造一个恶意的URL,然后将这个URL提交给服务器。这个URL可以是使服务器向攻击者指定的目标发起请求,从而获取敏感信息或执行恶意代码。
8. 漏洞防御
过滤输入:
限制协议,仅允许http或https协议;
限制IP,避免应用被用来获取内网数据,攻击内网;
限制端口,限制请求端口为常用端口。
过滤输出:
过滤返回信息,只要不符合要求的,全部过滤;
统一错误信息,让攻击无法对内网进行判断。
9. 典型案例
一个著名的SSRF漏洞案例是CVE-2019-1559,这个漏洞存在于Apache Struts 2中。攻击者可以利用这个漏洞获取敏感信息,甚至可以执行恶意代码。在这个案例中,Apache Struts 2没有正确验证用户输入的URL,从而使攻击者可以构造一个恶意的URL来实施攻击。