Reverse Tab Nabbing
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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?)
Link između roditeljskih i dečijih stranica kada atribut za prevenciju nije korišćen:
Link između roditeljskih i dečijih stranica kada je atribut za prevenciju korišćen:
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.
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.
Informacije o prevenciji su dokumentovane u HTML5 Cheat Sheet.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)