近期斗哥在学习有关于浏览器同源策略方面的知识点,发现了一个有趣的绕过浏览器同源策略的方法,故在这一期的文章中与大家分享。
01.浏览器同源策略
按照百度百科的说法就是:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
其实换句话来说就是在浏览器中,同一个域名下的网站只能调用本域名下的资源。就好比说现在有一个网址http://www.test.com/index/的页面,在同源策略的约束下可以调用http://www.test.com/index2/的资源,但是不能调用http://www.abc123.com/index/的资源(<script>,<link>,<iframe>,<img>等标签的SRC属性除外)。同源策略最直接的表现就是能够区分出各个网站的cookie信息,使得我们能够有条不紊的访问各个网站而不会照成信息混乱。
02.域名重新绑定攻击
我们都知道在网络攻击形式中,是可以通过恶意网页调用受害者本地资源来进行的。然而在上述所讲的同源策略约束下,从理论上来说浏览器打开的网页是无法访问运行本地的恶意脚本的,这能够保证我们上网过程中,本地资源得到安全保护。
但是在实际中,同源策略的约束可以被轻松绕过,比如说域名重新绑定攻击就可以轻松的绕过SOP(浏览器同源策略)。
图 1
如上图1,我们普通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地址。
图 2
如上图2,假设其实刚我们访问的其实是一个钓鱼网站。当第一次访问该网站后过了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)。
03.DNS ReBinding技术实现
在上述内容中,了解了什么是域名重新绑定攻击,重点在于DNS服务能够在两次DNS查询中返回不用的IP地址,第一次是真正的IP,第二次是攻击目标IP地址。那么如何实现公共DNS服务器下能够返回自定义信息呢?看下图3。
图 3
如上图3中,攻击者通过在公网上自己建立一台DNS服务器,地址为dns.b.com(与a.com不在同一域下),并在公共DNS上写入一条NS(域名)记录,将查询*.a,com的请求转发到攻击者自建的DNS服务器上面。
这个时候由于是攻击者自己的DNS,攻击者就可以自定义查询的结果,如第一次查询返回的IP地址设置为钓鱼网站www.a.com的IP,第二次查询返回的地址为要攻击的目标IP 127.0.0.1,完成DNS ReBinding攻击。
04.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
05.总结
DNS Rebinding 的介绍就到这里啦!欢迎各位小伙伴们给斗哥留言,一起学习探讨!具体的实验模拟过程尽请期待。