Reverse Tab Nabbing

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

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.

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>
złośliwy.html
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
malicious_redir.html
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>

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:

Last updated