Démarrez la machine, hackez le système et trouvez les flags cachés pour compléter ce défi et gagner des XP!
L'injection XML External Entity (XXE) est une vulnérabilité de sécurité web qui cible les applications traitant des entrées XML. Quand les parseurs XML sont configurés pour résoudre les références d'entités externes, les attaquants peuvent exploiter cette fonctionnalité pour lire des fichiers arbitraires sur le serveur, effectuer du Server-Side Request Forgery (SSRF), et dans certains cas obtenir l'exécution de code à distance. Le XXE a été reconnu comme une menace critique dans le Top 10 de l'OWASP et affecte toute application qui analyse des données XML provenant de sources non fiables.
XML supporte une fonctionnalité appelée entités externes, définies dans la Document Type Definition (DTD), qui permet aux documents XML de référencer des ressources externes. Une déclaration d'entité comme <!ENTITY xxe SYSTEM "file:///etc/passwd"> indique au parseur XML de récupérer le contenu du fichier spécifié et de l'inclure partout où la référence d'entité &xxe; apparaît dans le document. Quand une application reflète le contenu XML analysé à l'utilisateur, le contenu du fichier est divulgué dans la réponse.
La surface d'attaque du XXE est plus large que ce que beaucoup de développeurs réalisent. Tout endpoint acceptant des entrées XML est potentiellement vulnérable - cela inclut les services web SOAP, les processeurs de flux RSS, les gestionnaires de téléchargement de documents (les fichiers DOCX, XLSX et SVG sont tous basés sur XML), les flux d'authentification SAML et les parseurs de fichiers de configuration. Même les applications qui semblent utiliser JSON peuvent accepter du XML si l'en-tête Content-Type est modifié, car de nombreux frameworks supportent plusieurs types de contenu de manière transparente.
Quand l'application ne reflète pas directement le contenu XML, les attaquants peuvent utiliser des techniques hors bande (OOB) pour exfiltrer des données. En définissant des entités externes qui effectuent des requêtes HTTP vers un serveur contrôlé par l'attaquant avec le contenu des fichiers encodé dans l'URL, des données sensibles peuvent être extraites sans aucune sortie visible dans la réponse de l'application. Les entités de paramètres et les techniques basées sur les erreurs fournissent des canaux d'exfiltration supplémentaires quand les approches standards échouent.
La défense la plus efficace contre le XXE est de désactiver le traitement des entités externes dans la configuration du parseur XML. En Java, cela signifie configurer des fonctionnalités comme disallow-doctype-decl et external-general-entities pour empêcher la résolution d'entités. La plupart des bibliothèques XML modernes utilisent par défaut des configurations sécurisées, mais le code ancien et certains frameworks activent encore des fonctionnalités dangereuses. La validation des entrées, l'utilisation de JSON au lieu de XML lorsque possible, et les tests de sécurité réguliers complètent le renforcement du parseur.
Créez un compte gratuit et pratiquez la cybersécurité.
Créez un compte gratuit pour démarrer votre propre serveur dédié, soumettre des flags et gagner des XP au classement.
Commencer à Hacker GratuitementLabs qui partagent des compétences similaires
Choisissez comment vous voulez commencer
Connectez-vous à votre compte