首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端黑魔法之远程控制地址栏

由于今天看到一篇文章《危险的target="_blank"与“opener”》1,里面提到了一个老知识点,就是target="_blank"的时候,新打开的页面可以通过window.opener来控制源页面的URL,进行钓鱼攻击。这个攻击手法我在博客《神奇的opener对象》2中也说过,这里就不再赘述了。这篇文章抛出另一种与target有关的钓鱼攻击。

0x01 效果演示

首先可以看一个小例子:

http://675ba661.2m1.pw/41593a

打开上述链接,然后点击“click me”,打开了百度。这时查看地址栏,的的确确是百度,然后我们等待10秒,再次查看地址栏,这个时候已经变成攻击者的网址了;即使此时我们再访问淘宝等页面,只要仍然在这个标签页下,地址栏就仍然会被控制。

0x02 原理说明

上述页面的代码也很简单:

click me

如果用户点击了超链接“click me”,这里会启动一个循环定时器,每过10秒钟,将会将超链接的地址更换成一个仿百度的钓鱼网站,并再次点击。(当然,如果是真实攻击的话,最好是做一个真实目标的反代服务器,这个在我另一篇文章《openresty+lua在反向代理服务中的玩法》3中也有详细的介绍)。

比如,我们是一个“网址导航”类型的恶意网站,用户在我们网站上打开了百度、淘宝等标签页面,我们将可以根据用户打开的超链接来生成钓鱼页面,伪造这些网站的登录页面,精准地进行钓鱼。我这里就不进行演示了。

0x03 扩展尝试

除了超链接以外,用window.open也可以达到一样的效果:

不过,window.open经常会被广告拦截相关的功能给阻止掉,所以可能效果不如直接用超链接。

那么,继续深入研究。这个现象究竟是否和window.name有关呢?那么是不是我们知道了某个页面的name,即可对其页面的URL进行控制?

我们可以做一个实验。编写A页面

(http://a.675ba661.2m1.pw/A_victim):

编写B页面

(http://b.675ba661.2m1.pw/B_attacker):

A页面是目标网站,其中设置自己的name是baidu;B是攻击者的页面,其中设置

显然,我们在B中点击“click me”以后,会打开一个新的页面,而不是修改A页面的URL。这个实验说明,URL的远程控制和window.name没有直接关系,而是和页面的父子关系有关。

0x04 总结

本文所描述的攻击方式和opener的攻击方式比较相似,都是在不能跨域的情况下,控制目标标签页的URL,进而进行钓鱼攻击。

但我觉得这个攻击持久型更佳,因为即使用户在新标签中输入自己的域名,或者又通过超链接点击到其他网站里,这个页面的地址栏永远是受到源页面的控制的。理论上在源页面不关闭的情况下,可以永久控制新页面的地址栏。

参考链接

1 https://paper.seebug.org/538/

2 https://www.leavesongs.com/HTML/opener-fishing.html

3 https://www.leavesongs.com/SOFT/play-with-openresty-lua-web.html

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180315B1C01400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券