Reverse Tab Nabbing
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 punta questo link a un web sotto il suo controllo (un sito maligno). Poi, una volta che la vittima clicca sul link e accede al sito dell'attaccante, questo sito maligno 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 abusare di questo comportamento sarebbe cambiare la posizione del web originale tramite window.opener.location = https://attacker.com/victim.html
a un web controllato dall'attaccante che sembra quello originale, in modo da imitare il modulo di accesso del sito originale e chiedere le credenziali all'utente.
Tuttavia, nota che poiché l'attaccante ora può controllare l'oggetto finestra del sito originale, può abusarne in altri modi per eseguire attacchi più furtivi (forse modificando eventi javascript per esfiltrare informazioni a un server controllato da lui?)
Link tra pagine padre e figlio quando l'attributo di prevenzione non è utilizzato:
Link tra pagine padre e figlio quando l'attributo di prevenzione è utilizzato:
Crea le seguenti pagine in una cartella e avvia un server web con python3 -m http.server
Poi, accedi a http://127.0.0.1:8000/
vulnerable.html, clicca sul link e nota come l'URL del sito originale cambia.
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 l'oggetto JavaScript opener, che possono essere accessibili da un sito malevolo 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
: Il numero di elementi iframe presenti nella finestra corrente è restituito da questa proprietà.
opener.opener
: Un riferimento alla finestra che ha aperto la finestra corrente può essere ottenuto tramite questa proprietà.
opener.parent
: Questa proprietà restituisce la finestra padre della finestra corrente.
opener.self
: L'accesso alla finestra corrente stessa è fornito da questa proprietà.
opener.top
: Questa proprietà restituisce la finestra del browser più alta.
Tuttavia, nei casi in cui i domini siano identici, il sito malevolo ottiene accesso a tutte le proprietà esposte dal riferimento all'oggetto JavaScript window.
Le informazioni sulla prevenzione sono documentate nel HTML5 Cheat Sheet.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)