Reverse Tab Nabbing
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
在一个攻击者可以控制一个**<a
** 标签的 href
参数,并且该标签具有 target="_blank" rel="opener"
属性的情况下,攻击者将此链接指向一个他控制的网页(一个恶意 网站)。然后,一旦受害者点击该链接并访问攻击者的网站,这个恶意 网站将能够通过 javascript 对象 window.opener
控制 原始 页面。
如果页面没有 rel="opener"
但包含 target="_blank"
,并且也没有 rel="noopener"
,它也可能是脆弱的。
滥用这种行为的常规方法是通过 window.opener.location = https://attacker.com/victim.html
更改原始网页的位置,指向一个由攻击者控制的看起来像原始网页的网页,以便它可以模仿原始网站的登录 表单并向用户请求凭据。
然而,请注意,由于攻击者现在可以控制原始网站的窗口对象,他可以以其他方式滥用它来执行更隐蔽的攻击(也许修改 javascript 事件以将信息外泄到他控制的服务器?)
当未使用预防属性时,父页面和子页面之间的链接:
当使用预防属性时,父页面和子页面之间的链接:
在一个文件夹中创建以下页面并运行一个 web 服务器,使用 python3 -m http.server
然后,访问 http://127.0.0.1:8000/
vulnerable.html,点击链接并注意原始 网站 URL 的变化。
在发生跨源访问的情况下(跨不同域的访问),恶意网站可以访问的window JavaScript 类实例的属性仅限于以下内容:
opener.closed
:此属性用于确定窗口是否已关闭,返回布尔值。
opener.frames
:此属性提供对当前窗口内所有 iframe 元素的访问。
opener.length
:此属性返回当前窗口中存在的 iframe 元素的数量。
opener.opener
:可以通过此属性获取打开当前窗口的窗口的引用。
opener.parent
:此属性返回当前窗口的父窗口。
opener.self
:此属性提供对当前窗口本身的访问。
opener.top
:此属性返回最上层的浏览器窗口。
然而,在域名相同的情况下,恶意网站可以访问window JavaScript 对象引用所暴露的所有属性。
预防信息记录在HTML5 Cheat Sheet中。
学习与实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE) 学习与实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)