(OWASP汉化)攻击系列大全(五十四):反向标签钓鱼

最新版本(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备忘单中。

参考文献