很多Web运用都供应了从其他的做事器上获取数据的功能,根据用户指定的URL,Web运用可以获取图片、下载文件、读取文件内容等。这种功能如果被恶意利用,将导致存在毛病的Web运用被作为代理通道去攻击本地或远程做事器。这种形式的攻击被称为做事端要求假造攻击。
一样平常情形下,SSRF攻击的目标是外网无法访问的内部系统。
SSRF要求假造

本文紧张分享一下技能知识,欢迎关注学习!
一、漏洞事理
二、SSRF挖掘技巧
三、常见的SSRF攻击
3.1、针对做事器本身的SSRF攻击
3.2、针对其他后端系统的SSRF攻击
3.3、端口扫描
3.4、对内网web运用进行指纹识别及攻击个中存在漏洞的运用
3.5、文件读取和命令实行
四、绕过SSRF的常见防御
4.1、绕过利用黑名单防御
4.2、绕过利用白名单的防御
4.3、通过开放重定向绕过SSRF过滤器
五、SSRF防御
一、漏洞事理SSRF的形成大多是由于做事端供应了从其他做事器获取数据的功能,但是没有对目标地址进行过滤和限定。
紧张攻击办法:
1.对外网、做事器所在内网、本地进行端口扫描,获取一些做事的banner信息。
2.攻击运行在内网或者本地的运用程序。
3.对内网的web运用进行指纹识别(通过要求默认文件得到特定的指纹),对资产信息进行识别。
4.利用file协议读取本地文件。
5.攻击内外网的web运用,紧张是利用HTTP GET要求就可以实现的攻击等。
比如,一个正常的Web运用本该当从指定URL获取网页文本内容或加载指定地址的图片,而攻击者利用漏洞假造做事器端发起要求,从而打破了客户端获取不到数据的限定,如内网资源、做事器本地资源等。
如下代码:
<?php$url=$_GET['url'];echo file_get_contents($url);?>
这段代码利用file_get_contents函数从用户指定的URL获取图片并展示给用户。此时如果攻击者提交如下payload,就可以获取到内网主机HTTP做事8000端口的开放情形
(http://example.com/ssrf.php?url=http:192.168.209.134:8000)。
二、SSRF挖掘技巧目前常见的漏洞挖掘办法有两种:
1、从web功能上挖掘
①分享:通过url地址分享网页内容
②转码做事
③在线翻译
④图片的下载与加载
⑤图片、文章收藏功能
⑥未公开的API实现及调用URL的功能
2、从URL关键字挖掘
Share、wap、url、link、src、source、target、u、3g、display、sourceURL、imageURL、domain……
三、常见的SSRF攻击SSRF攻击常日利用信赖关系来进行攻击并实行未经授权的操作。这些信赖关系可能与做事器本身有关,也可能与同一系统内的其他后端系统有关。
3.1、针对做事器本身的SSRF攻击
在针对做事器本身的SSRF攻击中,攻击者诱使运用程序通过其环收受接管集接口向承载运用程序的做事器发出HTTP要求。常日,这将涉及为URL供应一个主机名,例如127.0.0.1(指向回送适配器的保留IP地址)或localhost(同一适配器的常用名称)。
例如:一个购物运用程序,该运用程序利用户可以查看特定商店中某商品是否有库存。为了供应库存信息,运用程序必须根据所涉及的产品和商店查询各种后端REST API。该功能是通过将URL通过前端HTTP要求通报到干系的后端API端点来实现的。因此,当用户查看某件商品的库存状态时,他们的浏览器会发出如下要求:
他们的浏览器会发出如下要求:
POST /product/stock HTTP/1.0Content-Type: application/x-www-form-urlencodedContent-Length: 118stockApi=http://stock.weliketoshop.net:8080/product/stock/check%3FproductId%3D6%26storeId%3D1
做事器向指定的URL发出要求,检索库存状态,然后将其返回给用户。
在这种情形下,攻击者可以修正要求以指定做事器本身本地的URL。例如:
POST /product/stock HTTP/1.0Content-Type: application/x-www-form-urlencodedContent-Length: 118stockApi=http://localhost/admin
在这里,做事器将获取/admin的内容并将其返回给用户。
现在攻击者可以直接访问/admin;但是,常日只有适当的经由身份验证的用户才能访问管理功能。因此,直接访问URL时将不会看到任何有代价的内容。但是,当对/admin的要求来自本地打算机时,将绕过常规的访问掌握,该运用程序付与对管理功能的完备访问权限,由于该要求来自受信赖的位置。
3.2、针对其他后端系统的SSRF攻击
SSRF引起的另一种信赖关系是:做事器能够与用户无法直接访问的其他后端系统进行交互,这些系统常日具有不可路由的专用IP地址。由于后端系统常日受网络拓扑保护,因此它们的安全状态较弱。在许多情形下,内部后端系统包含敏感功能,能够与该系统进行交互的任何人都可以在不进行身份验证的情形下对其进行访问。
在前面的示例中,假设在后端URL处有一个管理界面 https://192.168.0.68/admin。在这里,攻击者可以通过提交以下要求来利用SSRF漏洞来访问管理界面:
POST /product/stock HTTP/1.0Content-Type: application/x-www-form-urlencodedContent-Length: 118stockApi=http://192.168.0.68/admin
3.3、端口扫描
http://example.com/ssrf.php?url=http:ip:21/http://example.com/ssrf.php?url=http:ip:443/http://example.com/ssrf.php?url=http:ip:80/http://example.com/ssrf.php?url=http:ip:3306/等
我们可以通过相应韶光、返回的缺点信息、返回的做事Banner信息、相应韶光等来对端口开放情形进行给判断。
3.4、对内网web运用进行指纹识别及攻击个中存在漏洞的运用
大多数web运用都有一些独特的文件和目录,通过这些文件可以识别出运用的类型,乃至详细的版本。基于此特点可利用SSRF漏洞对内网Web运用进行指纹识别,如下Payload可以识别主机是否安装了WordPress:
http://example.com/ssrf.php?url=https%3A%2F%2F127.0.0.1%3A443%2Fwp-content%2Fthemes%2Fdefault%2Fimages%2Faudio.jpg
得到指纹后,便能有针对性地对其存在的漏洞进行利用,如下payload展示了如何利用SSRF漏洞攻击内网的JBOSS运用:
http://example.com/ssrf.php?url=http%3A%2F%2F127.0.0.1%3A8080%2Fjmx-console%2FHtmlAdaptor%3Faction%3DinvokeOp%26name%
3.5、文件读取和命令实行
1、文件读取
如果攻击者指定了file协议,则可通过file协议来读取做事器上的文件内容,如下:
http://example.com/ssrf.php?url=file:///etc/passwd
2、命令实行
例如PHP环境下,利用expect协议实行系统命令,如下:
http://example.com/ssrf.php?url=expect://id
四、绕过SSRF的常见防御
4.1、绕过利用黑名单防御
一些运用程序阻挡包含主机名(如127.0.0.1和localhost)或敏感URL(如/admin)的输入/admin。在这种情形下,绕过方法如下:
1、替代IP127.0.0.1,例如2130706433、017700000001、127.1。
2、注册您自己的域名,该域名解析为127.0.0.1。您可以spoofed.burpcollaborator.net用于此目的。
3、利用URL编码或大小写变革对壅塞的字符串进行稠浊。
4.2、绕过利用白名单的防御
某些运用程序仅许可输入匹配,以许可值开头或包含许可值的白名单的输入。在这种情形下,您有时可以利用URL解析中的不一致来绕过过滤器。
URL规范包含许多功能,在实现URL的临时剖析和验证时可能会被忽略:
1、利用@字符在主机名之前的URL中嵌入凭据。例如:https://expected-host@evil-host。
2、利用该#字符来指示URL片段。例如:https://evil-host#expected-host。
3、利用DNS命名层次构造将所需的输入放入DNS名称中。例如:https://expected-host.evil-host。
4、利用URL编码字符来稠浊URL解析代码,如果实现过滤器的代码与实行后端HTTP要求的代码以不同的办法处理URL编码的字符,则特殊有用。
5、这些技能可以组合在一起利用。
4.3、通过开放重定向绕过SSRF过滤器
通过利用开放重定向漏洞,有时可以绕过任何基于过滤器的防御。
假设严格验证了用户提交的URL,以防止恶意利用SSRF行为,但是,许可利用URL的运用程序包含一个打开的重定向漏洞。供应用于使后端HTTP要求支持重定向的API,可以布局一个知足过滤条件的URL,并导致将要求重定向到所需的后端目标。
例如,假设运用程序包含一个开放重定向漏洞,个中包含以下URL:/product/nextProduct?currentProductId=6&path=http://evil-user.net返回重定向到:http://evil-user.net
以利用开放重定向漏洞绕过,并按如下办法利用SSRF漏洞:
POST /product/stock HTTP/1.0Content-Type: application/x-www-form-urlencodedContent-Length: 118stockApi=http://weliketoshop.net/product/nextProduct?currentProductId=6&path=http://192.168.0.68/admin
这种SSRF漏洞之以是有效,是由于运用程序首先验证了供应的stockAPIURL是否在许可的域上,然后,运用程序供应的URL,触发重定向,并向攻击者选择的内部URL发出要求。
五、SSRF防御SSRF漏洞的防御紧张是担保用户要求的合法性、做事器行为的合规性两个方面。
1、限定要求端口只能为web端口,只许可访问HTTP和HTTPS的要求;
2、过滤返回的信息;
3、禁止不常利用的端口;
4、限定不能访问内网的IP,防止对内网进行攻击;
5、对付DNS重绑定,利用DNS缓存或者Host白名单