SSRF DNS rebind绕过

作者: 康康 分类: Web安全 发布时间: 2018-04-24 22:34

摘自http://www.mottoin.com/95734.html

0x00 传统SSRF过滤

传统SSRF过滤器的方式大致是以下几个步骤:

  1. 获取到输入的URL,从该URL中提取host
  2. 对该host进行DNS解析,获取到解析的IP
  3. 检测该IP是否是合法的,比如是否是私有IP等
  4. 如果IP检测为合法的,则进入curl的阶段发包

乍一看,这种过滤方式似乎没有什么问题。

我们从DNS解析的角度看,该检测方式一共有两次,第一次是步骤2中对该host进行DNS解析,第二次是使用CURL发包的时候进行解析。这两次DNS解析是有时间差的,我们可以使用这个时间差进行绕过。

0x01 DNS Rebinding绕过

DNS Rebinding不是啥新技术了,之前有人用这个技术来做SOP绕过,我们先来看一下具体流程。

攻击者需要自己持有一个域名,然后将这个域名解析指向自己的DNS Server,在该server上写个解析服务,每次返回不同的解析结果。

比如:

20170122120350258

你可以看到,这个解析服务每次返回的结果不同,第一次请求DNS查询,结果返回的是101.191.60.117,是一个合法的公网IP,但是第二次请求时,变成了私有IP 10.36.5.215。注意到,这两条记录的ttl都是0,这是为了防止有DNS服务器对解析结果进行缓存。

说到这里,基本就可以道出绕过原理了。从传统SSRF过滤思路来看,DNS解析一共分两次,其中第一次是至关重要的有效性检测,第二次则是具体发起的请求。我们利用DNS Rebinding技术,在第一次校验IP的时候返回一个合法的IP,在真实发起请求的时候,返回我们真正想要访问的内网IP即可。

一条评论
  • 356688

    5月26日 下午9:22

    拜读了,多多学习总是好的!

发表评论

电子邮件地址不会被公开。 必填项已用*标注