tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Opis
W sytuacji, w której atakujący może kontrolować argument href
tagu <a
z atrybutem target="_blank" rel="opener"
, który ma zostać kliknięty przez ofiarę, atakujący wskazuje ten link na stronę internetową pod swoją kontrolą (złośliwa strona). Następnie, gdy ofiara kliknie link i uzyska dostęp do strony atakującego, ta złośliwa strona będzie mogła kontrolować oryginalną stronę za pomocą obiektu javascript window.opener
.
Jeśli strona nie ma rel="opener"
, ale zawiera target="_blank"
i nie ma `rel="noopener"**, może być również podatna.
Zwykłym sposobem na nadużycie tego zachowania byłoby zmiana lokalizacji oryginalnej strony za pomocą window.opener.location = https://attacker.com/victim.html
na stronę kontrolowaną przez atakującego, która wygląda jak oryginalna, aby mogła imitować formularz logowania oryginalnej strony internetowej i prosić użytkownika o dane logowania.
Należy jednak zauważyć, że ponieważ atakujący teraz może kontrolować obiekt okna oryginalnej strony internetowej, może go nadużywać na inne sposoby, aby przeprowadzać bardziej ukryte ataki (może modyfikując zdarzenia javascript, aby wykradać informacje na serwer kontrolowany przez niego?)
Przegląd
Z linkiem zwrotnym
Link między stronami nadrzędnymi a podrzędnymi, gdy atrybut zapobiegający nie jest używany:
Bez linku zwrotnego
Link między stronami nadrzędnymi a podrzędnymi, gdy atrybut zapobiegający jest używany:
Przykłady
Utwórz następujące strony w folderze i uruchom serwer webowy za pomocą python3 -m http.server
Następnie uzyskaj dostęp do http://127.0.0.1:8000/
vulnerable.html, kliknij na link i zauważ, jak oryginalny adres URL strony się zmienia.
<!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>
Dostępne właściwości
W scenariuszu, w którym występuje cross-origin (dostęp między różnymi domenami), właściwości instancji klasy JavaScript window, do której odnosi się obiekt JavaScript opener, które mogą być dostępne dla złośliwej witryny, są ograniczone do następujących:
opener.closed
: Ta właściwość jest używana do określenia, czy okno zostało zamknięte, zwracając wartość boolean.opener.frames
: Ta właściwość zapewnia dostęp do wszystkich elementów iframe w bieżącym oknie.opener.length
: Liczba elementów iframe obecnych w bieżącym oknie jest zwracana przez tę właściwość.opener.opener
: Referencja do okna, które otworzyło bieżące okno, może być uzyskana za pomocą tej właściwości.opener.parent
: Ta właściwość zwraca okno nadrzędne bieżącego okna.opener.self
: Ta właściwość zapewnia dostęp do samego bieżącego okna.opener.top
: Ta właściwość zwraca najwyższe okno przeglądarki.
Jednak w przypadkach, gdy domeny są identyczne, złośliwa witryna uzyskuje dostęp do wszystkich właściwości udostępnionych przez obiekt JavaScript window.
Zapobieganie
Informacje o zapobieganiu są udokumentowane w HTML5 Cheat Sheet.
Odniesienia
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.