mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 06:30:37 +00:00
116 lines
6.3 KiB
Markdown
116 lines
6.3 KiB
Markdown
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
|
|
# 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:
|
|
|
|
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png)
|
|
|
|
## Bez povratnog linka
|
|
|
|
Link između roditeljskih i dečijih stranica kada je atribut za prevenciju korišćen:
|
|
|
|
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITHOUT\_LINK.png)
|
|
|
|
## Primeri <a href="#examples" id="examples"></a>
|
|
|
|
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" %}
|
|
```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>
|
|
```
|
|
{% endcode %}
|
|
|
|
{% code title="malicious.html" %}
|
|
```markup
|
|
<!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" %}
|
|
```markup
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<h1>New Malicious Site</h1>
|
|
</body>
|
|
</html>
|
|
```
|
|
{% endcode %}
|
|
|
|
## Accessible properties <a href="#accessible-properties" id="accessible-properties"></a>
|
|
|
|
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**](https://developer.mozilla.org/en-US/docs/Web/API/Window) JavaScript objekat.
|
|
|
|
# Prevention
|
|
|
|
Informacije o prevenciji su dokumentovane u [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing).
|
|
|
|
## References
|
|
|
|
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|