2016-05-14 13:58:42 来源:360安全播报 作者:默白 阅读:119次
分享到:
SSRF攻击是指攻击者强行控制存在漏洞的服务器,从而发送恶意请求给第三方服务器或内部资源。然后再利用该漏洞启动特定攻击,比如跨站点端口攻击,服务枚举以及其他多种攻击。
这种性能使得SSRF攻击变得十分危险,因为它可以借用某个易受攻击的服务器来攻击其他公共资源和当地基础设施。
会被SSRF利用的几种常见漏洞:
· URL重定向
· 远程文件包含
· SQL注入
· 框架注入
· 链接注入
· XML外部实体
攻击者会利用这种漏洞做些什么?
攻击者在确定这种漏洞之后,可以利用它作为进一步攻击的道具,进一步的攻击包括:
· 端口扫描被防火墙保护着的内部主机。
· 攻击内部应用程序。
· 借用文件处理程序 “file:///c:/windows/system32/.”访问本地网页服务器。
· 枚举服务。
攻击者还有诸如mailto://、gopher://这样的其他选择,如何选择取决于服务器和解析器如何处理该请求。
端口扫描
SSRF能够利用端口扫描。
扫描本地接口:
GET /Vulnerablepage.php? VulnParameter=http://127.0.0.1:80
GET /Vulnerablepage.php? VulnParameter=http://127.0.0.1:443
GET /Vulnerablepage.php? VulnParameter=http://127.0.0.1:21
根据不同的回应,攻击者可以打开或者关闭端口。同样地,这种做法也可以用于扫描其他资源。
这样的过程可以利用Burp的入侵功能设置有效荷载位置(GET /Vulnerablepage.php?VulnParameter=http://127.0.0.1:§§ HTTP/1.1)来实现自动化。
接着将“有效荷载类型”设置为“数字”,“端口”设置为“0-65535”。然后就可以实行攻击了,当然别忘了为有效荷载解密。
SSRF测试
通常情况下,含有URL的输入字段是这种攻击乐见的形式。然而我们发现带有不能做出任何推断的随机参数的应用程序也是容易攻击的对象。所以鉴于我们并不清楚服务器是如何处理这些参数的,检查可疑参数含有的漏洞就变得很有必要了。
概念证明
根据以下步骤可以进行概念证明的渗透测试。
· 在应用程序中标示一个潜在的输入域来测试漏洞。
· 用nc –l –v port no指令启动Netcat(假设服务器名为servertest)。
· 只要服务器开始运行,就在易受攻击的输入域中输入http://servertest:portno/testSSRF。
要使用类似于/testSSRF 的独特目录,这样可以确保该请求是由我们这个易受攻击的服务器发出的。
· 如果该服务器是易于攻击的,它就会建立此连接,然后Netcat侦听器就会显示有关该连接的详细信息,就像下图所示这样。
工具
在测试过程中,Burp的协作功能给我们带来了极大的便利。它可以在最开始先识别出问题所在,然后我们再用上述方法进行手动验证。
这种协作功能将有效荷载发送到精心打造的已感染应用程序中,以启动与协作服务器的连接。然后Burp会不断地监视协作服务器,来确保是否有任何请求触发连接。
建议
· 不要用用户数据进行数据验证。
· 硬化应用程序服务器,并且确保已经关闭不必要的端口和服务。
· 为允许运行的主机和服务设置白名单。
本文由 360安全播报 翻译,转载请注明“转自360安全播报”,并附上链接。
原文链接:https://blogs.mcafee.com/mcafee-labs/server-side-request-forgery-takes-advantage-vulnerable-app-servers/