Aller au contenu

Attaque par tabnabbing utilisant window.opener

exemple concret et simple d’attaque par tabnabbing utilisant window.opener.


🎯 Contexte⚓︎

  • Site A : un site légitime (blog, forum, site scolaire, etc.)
  • Site B : un site malveillant
  • Le site A ouvre le site B dans un nouvel onglet

1️⃣ Code sur le site légitime (Site A)⚓︎

<a href="https://site-malveillant.com" target="_blank">
  Visiter notre partenaire
</a>

⚠️ Problème : il manque rel="noopener" ➡️ Le site malveillant aura accès à window.opener


2️⃣ Ce que fait le site malveillant (Site B)⚓︎

Quand l’utilisateur ouvre le lien, le site B s’exécute dans un autre onglet et contient ce script :

if (window.opener) {
  window.opener.location = "https://faux-site-banque.com";
}

3️⃣ Ce que voit l’utilisateur 👀⚓︎

  1. L’utilisateur clique sur le lien
  2. Un nouvel onglet s’ouvre (site B)
  3. Il revient plus tard à l’onglet d’origine
  4. L’onglet a changé et affiche :

  5. un faux site de banque

  6. ou un faux formulaire de connexion
  7. ou une page demandant un mot de passe

👉 L’utilisateur pense être toujours sur le site légitime


4️⃣ Pourquoi ça marche ?⚓︎

  • L’URL semble correcte
  • L’onglet est le même
  • Le design imite le vrai site
  • L’utilisateur ne se méfie pas

🎣 C’est une attaque de phishing indirect


5️⃣ Exemple visuel du danger⚓︎

[ Onglet 1 ]  Blog légitime  ❌ → devient Faux site bancaire
[ Onglet 2 ]  Site malveillant

6️⃣ Comment bloquer totalement cette attaque ✅⚓︎

✔️ Solution simple⚓︎

<a href="https://site-externe.com"
   target="_blank"
   rel="noopener noreferrer">

➡️ Résultat côté site malveillant :

window.opener === null

❌ Impossible de rediriger ou manipuler l’onglet d’origine


7️⃣ Bonnes pratiques à retenir 🔐⚓︎

  • Toujours utiliser rel="noopener" avec target="_blank"
  • Ne jamais faire confiance aux sites externes
  • Auditer les liens sortants dans les applications web
  • Former les utilisateurs aux risques de phishing