hacktricks/pentesting-web/reverse-tab-nabbing.md
2023-06-03 13:10:46 +00:00

7.9 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
  • Travaillez-vous dans une entreprise de cybersécurité? Voulez-vous voir votre entreprise annoncée dans HackTricks? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF? Consultez les PLANS D'ABONNEMENT!

  • Découvrez The PEASS Family, notre collection exclusive de NFTs

  • Obtenez le swag officiel PEASS & HackTricks

  • Rejoignez le groupe Discord ou le groupe Telegram ou suivez-moi sur Twitter @carlospolopm.

  • Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et hacktricks-cloud.

Description

Dans une situation où un attaquant peut contrôler l'argument href d'une balise <a> avec l'attribut target="_blank" rel="opener" qui va être cliquée par une victime, l'attaquant pointe ce lien vers un site web sous son contrôle (un site web malveillant). Ensuite, une fois que la victime clique sur le lien et accède au site web de l'attaquant, ce site web malveillant sera capable de contrôler la page originale via l'objet javascript window.opener. Si la page ne contient pas rel="opener" mais contient target="_blank" et n'a pas non plus rel="noopener", elle peut également être vulnérable.

Une façon courante d'exploiter ce comportement serait de changer l'emplacement du site web original via window.opener.location = https://attacker.com/victim.html vers un site web contrôlé par l'attaquant qui ressemble à l'original, de sorte qu'il peut imiter le formulaire de connexion du site web original et demander des informations d'identification à l'utilisateur.

Cependant, notez que comme l'attaquant peut maintenant contrôler l'objet de fenêtre du site web original, il peut l'exploiter de différentes manières pour effectuer des attaques plus discrètes (peut-être en modifiant les événements javascript pour exfiltrer des informations vers un serveur contrôlé par lui ?)

Aperçu

Avec lien de retour

Lien entre les pages parent et enfant lorsque l'attribut de prévention n'est pas utilisé :

Sans lien de retour

Lien entre les pages parent et enfant lorsque l'attribut de prévention est utilisé :

Exemples

Créez les pages suivantes dans un dossier et exécutez un serveur web avec python3 -m http.server
Ensuite, accédez à http://127.0.0.1:8000/vulnerable.html, cliquez sur le lien et notez comment l'URL du site web original change.

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

<a href="https://example.com" target="_blank" rel="noopener noreferrer" onclick="window.opener.location='https://attacker.com'">Click me!</a>

{% endcode %}

Le reverse tab nabbing est une technique d'attaque qui consiste à modifier le comportement par défaut des liens hypertextes pour rediriger l'utilisateur vers un site malveillant. Cette technique est souvent utilisée pour voler des informations d'identification ou pour exécuter du code malveillant sur le navigateur de la victime.

Le reverse tab nabbing fonctionne en exploitant le comportement par défaut des liens hypertextes qui s'ouvrent dans un nouvel onglet ou une nouvelle fenêtre. En modifiant le code HTML d'un lien hypertexte pour inclure un script malveillant, un attaquant peut rediriger l'utilisateur vers un site malveillant tout en gardant le site d'origine ouvert dans un onglet ou une fenêtre différente.

Pour se protéger contre le reverse tab nabbing, les utilisateurs doivent être conscients des liens hypertextes qu'ils cliquent et éviter de cliquer sur des liens suspects ou non fiables. Les développeurs peuvent également protéger leurs sites en ajoutant l'attribut rel="noopener noreferrer" aux liens hypertextes qui s'ouvrent dans un nouvel onglet ou une nouvelle fenêtre. Cela empêchera le script malveillant d'accéder à la fenêtre parente et de rediriger l'utilisateur vers un site malveillant.

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

Propriétés accessibles

Le site malveillant ne peut accéder qu'aux propriétés suivantes de l'objet de référence javascript opener (qui est en fait une référence à une instance de la classe javascript window) en cas d'accès cross origin (entre différents domaines) :

  • opener.closed : Renvoie une valeur booléenne indiquant si une fenêtre a été fermée ou non.
  • opener.frames : Renvoie tous les éléments iframe dans la fenêtre actuelle.
  • opener.length : Renvoie le nombre d'éléments iframe dans la fenêtre actuelle.
  • opener.opener : Renvoie une référence à la fenêtre qui a créé la fenêtre.
  • opener.parent : Renvoie la fenêtre parent de la fenêtre actuelle.
  • opener.self : Renvoie la fenêtre actuelle.
  • opener.top : Renvoie la fenêtre de navigateur la plus haute.

Si les domaines sont identiques, le site malveillant peut accéder à toutes les propriétés exposées par l'objet de référence javascript window.

Prévention

Les informations de prévention sont documentées dans la feuille de triche HTML5.

Références

{% embed url="https://owasp.org/www-community/attacks/Reverse_Tabnabbing" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥