Reverse Tab Nabbing

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Opis

U situaciji gde napadač može da kontroliše href argument <a taga sa atributom target="_blank" rel="opener" koji će biti kliknut od strane žrtve, napadač usmerava ovu vezu na web stranicu pod njegovom kontrolom (maliciozna web stranica). Kada žrtva klikne na link i pristupi napadačevoj web stranici, ova maliciozna web stranica će moći da kontroliše originalnu stranicu putem javascript objekta window.opener. Ako stranica nema rel="opener" ali sadrži target="_blank" i takođe nema rel="noopener", može biti takođe ranjiva.

Uobičajen način zloupotrebe ovog ponašanja bio bi da se promeni lokacija originalnog web-a putem window.opener.location = https://attacker.com/victim.html na web pod kontrolom napadača koja izgleda kao originalna, tako da može da imitira login formu originalne web stranice i traži od korisnika kredencijale.

Međutim, imajte na umu da pošto napadač sada može da kontroliše objekat prozora originalne web stranice, može ga zloupotrebiti na druge načine za izvođenje diskretnijih napada (možda modifikovanjem javascript događaja da izvuče informacije na server pod njegovom kontrolom?)

Pregled

Sa povratnim linkom

Link između roditeljskih i dečijih stranica kada atribut za prevenciju nije korišćen:

https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png

Bez povratnog linka

Link između roditeljskih i dečijih stranica kada je atribut za prevenciju korišćen:

https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png

Primeri

Kreirajte sledeće stranice u folderu i pokrenite web server sa python3 -m http.server Zatim, pristupite http://127.0.0.1:8000/vulnerable.html, kliknite na link i primetite kako se URL originalne web stranice menja.

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>
malicious.html
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
malicious_redir.html
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>

Accessible properties

U scenariju gde se dešava cross-origin pristup (pristup preko različitih domena), svojstva window JavaScript klase, na koja se poziva putem opener JavaScript objekta, koja mogu biti dostupna zloćudnom sajtu su ograničena na sledeće:

  • opener.closed: Ovo svojstvo se koristi da se utvrdi 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: Broj iframe elemenata prisutnih u trenutnom prozoru se vraća ovim svojstvom.

  • 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: Pristup trenutnom prozoru se obezbeđuje ovim svojstvom.

  • opener.top: Ovo svojstvo vraća najgornji prozor pretraživača.

Međutim, u slučajevima kada su domeni identični, zloćudni sajt dobija pristup svim svojstvima koja izlaže window JavaScript objekat.

Prevention

Informacije o prevenciji su dokumentovane u HTML5 Cheat Sheet.

References

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated