最新版本(mm/dd/yy): 02/25/2018
翻译至Reverse Tabnabbing
(译者注:该漏洞在我看来和标签钓鱼差不多,可是在owasp中被收录为新漏洞,在网上找到关于这个漏洞的资料不是很多,翻译之处如有错误,还请诸位多多指出)
概述
反向标签钓鱼(Reverse Tabnabbing)是一种攻击,其中从目标页面链接的页面能够重写该页面,例如将其替换为钓鱼网站。由于用户最初是在正确的页面上,他们不太可能会注意到它已更改为钓鱼网站,特别是该网站看起来与目标相同。如果用户向这个新页面进行身份验证,则他们的凭据(或其他敏感数据)将被发送到钓鱼网站,而不是合法网站。
除了目标站点能够覆盖目标页面之外,如果用户位于不安全的网络(例如公共WiFi热点)上,任何http链接都可能被欺骗以覆盖目标页面。即使目标站点仅通过https可用,攻击也是可能的,因为攻击者只需要欺骗正在链接的http站点。
当源站点使用HTML链接中的 target
指令来指定目标加载位置时,通常可以进行攻击,该目标加载位置(target loading location)不会替换当前位置,然后让当前窗口/选项卡(window/tab)可用而且不包括下面将要讲述的任何预防性措施。
对于通过 window.open
javascript函数打开的链接,攻击也是可能的。
概览
有返回链接
未使用预防属性时,父页和子页之间的链接:
没有返回链接
使用预防属性时,父页面和子页面之间的链接:
实例
易受攻击的页面:
<html>
<body>
<li><a href="bad.example.com" target="_blank">Vulnerable target using html link to open the new page</a></li>
<button onclick="window.open('https://bad.example.com')">Vulnerable target using javascript to open the new page</button>
</body>
</html>
链接到以下网址的恶意网站:
<html>
<body>
if (window.opener) {
window.opener.location = "https://phish.example.com";
}
</body>
</html>
当用户点击Vulnerable Target按钮时,恶意网站(Malicious Site)会在新选项卡中打开(如预期的那样),但原始选项卡中的目标网站将被钓鱼网站取代。
访问性能
在跨源(跨域)访问时,恶意站点只能从opener javascript对象引用(实际上是对window javascript类实例的引用)访问以下属性:
- opener.closed: 返回一个布尔值,用该值指示窗口是否已关闭。
- opener.frames:返回当前窗口中的所有iframe元素。
- opener.length: 返回当前窗口中的iframe元素数。
- opener.opener:返回对创建窗口的窗口引用。
- opener.parent:返回当前窗口的父窗口。
- opener.self:返回当前窗口。
- opener.top:返回最顶层的浏览器窗口。
如果域相同,则恶意站点可以访问由window javascript对象引用的所有公开属性。
预防
预防信息写在HTML 5备忘单中。
参考文献
- https://dev.to/ben/the-targetblank-vulnerability-by-example–
target="_blank"
漏洞的例子 - https://mathiasbynens.github.io/rel-noopener/ – 关于
rel=noopener
的属性值 - https://medium.com/@jitbit/target-blank-the-most-underestimated-vulnerability-ever-96e328301f4c -target=”_blank”—有史以来最被低估的漏洞
- Bure53的 浏览器安全白皮书(Browser Security White Paper )-247页