mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 04:33:28 +00:00
116 lines
9.9 KiB
Markdown
116 lines
9.9 KiB
Markdown
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** ЁЯТм [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** ЁЯРж [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
|
|
# Description
|
|
|
|
рдПрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдПрдХ **рд╣рдорд▓рд╛рд╡рд░** **`href`** рддрд░реНрдХ рдХреЛ **`<a`** рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ **`target="_blank" rel="opener"`** рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рдкреАрдбрд╝рд┐рдд рджреНрд╡рд╛рд░рд╛ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, **рд╣рдорд▓рд╛рд╡рд░** рдЗрд╕ **рд▓рд┐рдВрдХ** рдХреЛ рдПрдХ рд╡реЗрдм рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИ (рдПрдХ **рджреБрд╖реНрдЯ** **рд╡реЗрдмрд╕рд╛рдЗрдЯ**)ред рдлрд┐рд░, рдЬрдм **рдкреАрдбрд╝рд┐рдд рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ** рдФрд░ рд╣рдорд▓рд╛рд╡рд░ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдпрд╣ **рджреБрд╖реНрдЯ** **рд╡реЗрдмрд╕рд╛рдЗрдЯ** **`window.opener`** рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ **рдореВрд▓** **рдкреГрд╖реНрда** рдХреЛ **рдирд┐рдпрдВрддреНрд░рд┐рдд** рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреАред\
|
|
рдпрджрд┐ рдкреГрд╖реНрда рдореЗрдВ **`rel="opener"` рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди `target="_blank"` рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ `rel="noopener"` рдирд╣реАрдВ рд╣реИ** рддреЛ рдпрд╣ рднреА рдХрдордЬреЛрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
|
|
|
|
рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ **рдореВрд▓ рд╡реЗрдм рдХрд╛ рд╕реНрдерд╛рди рдмрджрд▓рдирд╛** `window.opener.location = https://attacker.com/victim.html` рдПрдХ рдРрд╕реА рд╡реЗрдм рдкрд░ рдЬреЛ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реИ рдЬреЛ **рдореВрд▓ рдПрдХ рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ**, рддрд╛рдХрд┐ рдпрд╣ **рдореВрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ** рдХреЗ **рд▓реЙрдЧрд┐рди** **рдлреЙрд░реНрдо** рдХреА **рдирдХрд▓** рдХрд░ рд╕рдХреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдорд╛рдВрдЧ рд╕рдХреЗред
|
|
|
|
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЪреВрдВрдХрд┐ **рд╣рдорд▓рд╛рд╡рд░ рдЕрдм рдореВрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ**, рд╡рд╣ рдЗрд╕реЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ **рдЧреБрдкреНрдд рд╣рдорд▓реЛрдВ** рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХреНрд╕-рдлрд┐рд▓реНрдЯреНрд░реЗрдЯ рдХрд░рдирд╛?)
|
|
|
|
# Overview
|
|
|
|
## With back link
|
|
|
|
рдЬрдм рд░реЛрдХрдерд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмреАрдЪ рд▓рд┐рдВрдХ:
|
|
|
|
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png)
|
|
|
|
## Without back link
|
|
|
|
рдЬрдм рд░реЛрдХрдерд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмреАрдЪ рд▓рд┐рдВрдХ:
|
|
|
|
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITHOUT\_LINK.png)
|
|
|
|
## Examples <a href="#examples" id="examples"></a>
|
|
|
|
рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреГрд╖реНрда рдмрдирд╛рдПрдВ рдФрд░ `python3 -m http.server` рдХреЗ рд╕рд╛рде рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдПрдВ\
|
|
рдлрд┐рд░, **рдПрдХреНрд╕реЗрд╕** `http://127.0.0.1:8000/`vulnerable.html, **рдХреНрд▓рд┐рдХ** рдХрд░реЗрдВ рд▓рд┐рдВрдХ рдкрд░ рдФрд░ рдиреЛрдЯ рдХрд░реЗрдВ рдХрд┐ **рдореВрд▓** **рд╡реЗрдмрд╕рд╛рдЗрдЯ** **рдпреВрдЖрд░рдПрд▓** **рдХреИрд╕реЗ рдмрджрд▓рддрд╛ рд╣реИ**ред
|
|
|
|
{% 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 %}
|
|
|
|
## Accessible properties <a href="#accessible-properties" id="accessible-properties"></a>
|
|
|
|
рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЬрд╣рд╛рдВ **cross-origin** рдкрд╣реБрдБрдЪ рд╣реЛрддреА рд╣реИ (рд╡рд┐рднрд┐рдиреНрди рдбреЛрдореЗрди рдХреЗ рдмреАрдЪ рдкрд╣реБрдБрдЪ), **opener** рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд **window** рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд▓рд╛рд╕ рдЙрджрд╛рд╣рд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ, рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╕рд╛рдЗрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВ:
|
|
|
|
- **`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) рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдЙрдЬрд╛рдЧрд░ рдХреА рдЧрдИ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред
|
|
|
|
# Prevention
|
|
|
|
рд░реЛрдХрдерд╛рдо рдХреА рдЬрд╛рдирдХрд╛рд░реА [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing) рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝рд┐рдд рдХреА рдЧрдИ рд╣реИред
|
|
|
|
## References
|
|
|
|
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** ЁЯТм [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** ЁЯРж [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|