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

7.2 KiB

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

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 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?)

Panoramica

Link tra pagine padre e figlio quando l'attributo di prevenzione non è utilizzato:

https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png

Link tra pagine padre e figlio quando l'attributo di prevenzione è utilizzato:

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
Poi, accedi a http://127.0.0.1:8000/vulnerable.html, clicca sul link e nota come l'URL del sito 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>

{% endcode %}

{% code title="malicious.html" %}

<html lang="it"> <head> </head>

Tab Nabbing

Il tab nabbing è una tecnica di phishing che sfrutta il comportamento degli utenti quando aprono nuovi tab nel browser.

Quando un utente clicca su un link, il sito maligno può aprire un nuovo tab e reindirizzare l'originale a una pagina di login falsa.

Per proteggersi dal tab nabbing, è importante utilizzare l'attributo rel="noopener noreferrer" nei link che aprono nuovi tab.

</html> {% endcode %} ```markup <html> </html> ``` {% endcode %}

{% 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 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.

Prevenzione

Le informazioni sulla prevenzione sono documentate nel HTML5 Cheat Sheet.

Riferimenti

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}