Web渗透测试之SSRF攻击:绕过SSRF过滤器

前言

  在前篇我们了解完有关SSRF的基本知识后,现在将提升挑战难度,我们来看看如何绕过针对SSRF攻击进行一定程度防御的过滤器。

防御的基本原理

  在前篇中我们提到SSRF产生的原因为未对URL中引用的URL进行限制,使得攻击者能够利用这一漏洞使得引用的URL指向内网中的其它地址以获得本应该被拒绝外网访问的资源。因此常见的SSRF防御手段为对引用的URL进行限制。常见的限制手段有黑名单和白名单两种。
  所谓的黑名单就是名单上的URL都不能引用,白名单就是只有名单上的URL才能引用。针对黑名单和白名单的特性,我们就能尝试对SSRF过滤器进行绕过。

基于黑名单的SSRF过滤器绕过

  在了解了黑名单的特性后,如果还想访问黑名单上的URL(如127.0.0.1或localhost)就不能直接用,而应该用其它的表达形式。现以127.0.0.1为例。

对IP地址进行进制转化;

  如果黑名单上的IP地址为127.0.0.1,那么我们可以尝试将此IP地址转换为八进制、十进制、十六进制等进行URL引用,以实现127.0.0.1黑名单限制。也可将127.0.0.1省略为127.1,依旧可行
  以十进制为例证明十进制的IP地址依旧会被正常解析:
ping十进制IP地址

注册域名使其解析为目标IP地址

  以www.localtest.me为例进行测试:
解析到本机地址
  依旧可以被解析为本机回环地址。但此方法仅适用于对服务器本身发起请求伪造,若要应用于内网其它IP地址则成本过大。

基于白名单的SSRF过滤器绕过

  在其它应用方面白名单虽然可以称得上是安全性极高,但在SSRF防御中,如果完全套用白名单的模式则会导致用户体验极差。以图片分享为例,如果某网站允许用户以URL的形式分享图片,则每一张图片最后的URL标识部分必定是不相同的。
  如果过滤器完全套用白名单的模式,则这项图片分享功能将会形同虚设。因此在基于白名单的SSRF过滤器中,采用的是只允许以白名单上标有的URL为前值进行的URL引用,这样就可以避免由于图片URL标识后缀不一致导致功能瘫痪。知道白名单过滤器的这一特性后,我们就可以利用URL的规范性进行SSRF白名单过滤器绕过,但不确定性太高。如果URL解析器不支持嵌入式URL凭据,则很难奏效。

  1. 利用@嵌入URL,如http://xxx/xx@http://yyy/yy(xxx:白名单限制的前值);
  2. 利用#嵌入UR,如http://yyy/yy#http://xxx/xx(xxx:白名单限制前值);
  3. 注册域名,如http://xxx.yyy;
  4. 使用URL编码字符干扰URL解析;

利用重定向漏洞对SSRF过滤器进行绕过

  针对黑名单模式的绕过较为简单,但白名单模式的绕过难度较高,但我们可以将SSRF与其它漏洞结合,以实现绕过SSRF过滤器的目的。现以SSRF结合重定向漏洞为例。
  在此之前先简单讲解什么是重定向漏洞。所谓的重定向就是重新跳转到一个新的URL地址,而重定向漏洞产生的原因,则是因为重新跳转的URL是用户可控的,因此称位重定向漏洞,一般用于钓鱼。其格式一般如下:

http://xxx/xx/?path=http://yyy/yy

  既然path后的URL用户可控,则可以将其指向内网IP。以下是SSRF结合重定向漏洞绕过SSRF过滤器。
  靶场首页:
靶场首页
  按照上篇的套路,点击商品查询库存后进行抓包:
抓包
  解码后可以发现stockAPI为/product/stock/check?productId=1&storeId=1,尝试修改使其指向内网IP后果然行行不通:
请求失败
  接着发现一个跳转功能:
其它功能
  当点击下一个商品时发现URL出现重定向(path:/xxx):
重定向
  尝试由此处为突破口,将其修改为http://baidu.com以确定是否存在重定向漏洞:
重定向到百度
  状态码为302 Found,表明确实可以重定向到百度,于是将先前查询库存时的stockAPI修改为:
/product/nextProduct?path=http://192.168.0.x:8080/admin
进行批量扫描,最终查得的IP地址为192.168.0.12:
请求成功
  状态码为200 OK,接着发现有删除用户功能,删除用户calos:
删除成功

总结

  常见的SSRF过滤器有两种原理,分别是黑名单和白名单。基于黑名单的SSRF过滤器相对容意绕过,基于白名单的SSRF过滤器则较难绕过,有一定的运气成分。此外,如果能过够同时将其它漏洞(如重定向漏洞)与SSRF相结合,则能达到意想不到的效果,起到事半功倍的作用。但这也要求漏洞挖掘者有较高的能力和意识,能够挖掘到其它类型的漏洞并加以利用。
  以上就是本篇的全部内容,我们下篇见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值