- 浏览器同源策略
按照百度百科的说法就是:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
其实换句话来说就是在浏览器中,同一个域名下的网站只能调用本域名下的资源。就好比说现在有一个网址http://www.test.com/index/的页面,在同源策略的约束下可以调用http://www.test.com/index2/的资源,但是不能调用http://www.abc123.com/index/的资源(
- 域名重新绑定攻击
我们都知道在网络攻击形式中,是可以通过恶意网页调用受害者本地资源来进行的。然而在上述所讲的同源策略约束下,从理论上来说浏览器打开的网页是无法访问运行本地的恶意脚本的,这能够保证我们上网过程中,本地资源得到安全保护。
但是在实际中,同源策略的约束可以被轻松绕过,比如说域名重新绑定攻击就可以轻松的绕过SOP(浏览器同源策略)。
同样,在SSRF攻击中也可以用到这种技术
SSRF过滤器设计有漏洞的SSRF过滤器执行步骤如下:
获取输入的URL,从该URL中提取HOST,如果提取出来的是IP,那么直接跳到第三步;
对该HOST进行DNS解析,获取到解析的IP;
检测该IP是否是合法的,比如是否是私有IP等(是就直接终止流程);
如果IP检测为合法的,则进入CURL发包;
漏洞点:
我们从DNS解析的角度看,该检测方式一共有两次,第一次是步骤2中对该HOST进行DNS解析,第二次是使用CURL发包的时候进行解析。这两次DNS解析是有时间差的,我们可以使用这个时间差进行绕过。
其实上面就已经讲清楚DNS Rebinding漏洞的原理了,只不过只有大致步骤,下面我们就通过具体实现来深入了解。
背景知识了解DNS Rebinding漏洞的利用步骤前,了解一些这些背景知识还是很有必要的。
DNS TTLTTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上缓存时间,数值越小,修改记录各地生效时间越快。
当各地的DNS(LDNS)服务器接受到解析请求时,就会向域名指定的授权DNS服务器发出解析请求从而获得解析记录;该解析记录会在DNS(LDNS)服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向授权DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
常见的设置TTL值的场景:
• 增大TTL值,以节约域名解析时间
• 减小TTL值,减少更新域名记录时的不可访问时间
比如大名鼎鼎的:
114.114.114.114
8.8.8.8
…
我们普通PC第一次访问网站http://www.a.com时,会先到公共的DNS服务器上去查询www.a.com这个地址对应的IP地址时多少,再根据DNS服务器返回来的IP地址去访问目标网站。
一般来说我们的操作系统默认能够将DNS返回来的这个IP地址信息保存60秒,而超过60秒后如果需要再次访问www.a.com这个地址则需要再一次向DNS服务器来查询查询IP地址。换句话就是说:如果这个时候我们访问的网站设置了60秒之后会调用http://www.a.com/dir/这个url下面的资源,那么就需要我们的PC再一次向DNS进行查询该地址对应的IP地址。
假设其实刚我们访问的其实是一个钓鱼网站。当第一次访问该网站后过了60秒,由于该恶意网站设置了60后会自动调用http://www.a.com/dir/这个url下面的资源。我们PC访问前再次进行DNS查询的时候,DNS返回的IP地址被修改为127.0.0.1,这个时候浏览器去调用http://www.a.com/dir/其实就变成了http://127.0.0.1/dir/的资源,也就是PC本地的资源。由于只是IP地址发生了改变,而浏览器实际上请求的地址还是http://www.a.com/dir/,所以这样其实还是符合浏览器的同源策略,却非法的调用到了PC的本地资源。这样的行为被称之为域名重新绑定攻击(DNS ReBinding)。
可能大家会对为什么第二次dns服务器返回127.0.0.1有些疑惑,请接着往下看
dns重绑定技术实现在上述内容中,了解了什么是域名重新绑定攻击,重点在于DNS服务能够在两次DNS查询中返回不用的IP地址,第一次是真正的IP,第二次是攻击目标IP地址。那么如何实现公共DNS服务器下能够返回自定义信息呢?看下图
攻击者通过在公网上自己建立一台DNS服务器,地址为dns.b.com(与a.com不在同一域下),并在公共DNS上写入一条NS(域名)记录,将查询*.a,com的请求转发到攻击者自建的DNS服务器上面。
这个时候由于是攻击者自己的DNS,攻击者就可以自定义查询的结果,如第一次查询返回的IP地址设置为钓鱼网站www.a.com的IP,第二次查询返回的地址为要攻击的目标IP 127.0.0.1,完成DNS ReBinding攻击。
DNS ReBinding技术应用目前互联网上有非常多的该技术的应用分析文章
利用DNS ReBinding通过微信第三方防撤回插件窃取微信好友列表和聊天记录,地址:https://xlab.tencent.com/cn/2018/10/23/weixin-cheater-risks/?from=timeline&isappinstalled=0
通过DNS rebinding绕过同源策略攻击Transmission分析,
地址:https://www.anquanke.com/post/id/97366
通过 DNS Rebinding 获取访客 QQ 号,
地址:https://segmentfault.com/p/1210000010014129/read



