XXE

Def et Fonctionnement :


https://www.youtube.com/watch?v=gjm6VHZa_8s
XML eXternal Entity injection est une faille de sécurité WEB qui interagis avec le processing des données XML. Ces injections peuvent subvenir car les échanges entre le navigateur et le serveur utilisent un traitemement XML qui contient des fonctions faibles.
Généralement l'attaquant peut accéder à des documents stockés sur le file-server. Avec une escalade de privilèges il est possible de faire une SSRF.

XML est un langage de programmation utilisé pour transporter et stocker de la donnée. . Des XML entities, ce sont en gros des variables qui peuvent être utilisées dans plusieurs parties du XML, permettent de représenter des charactères (< correspond à <).DTD est une définition de la structure des échanges XML et quels sont les valeurs que ces échanges peuvent contenir. C'est dans le DTD que les variables sont créées. XML external entities sont des entités qui pour définition une localisation externe.
Pasted image 20240429153818.png
Les entities servent à beaucoup plus que juste stocker des variables. Cela peut permettre d'aller chercher des fichiers etc...
Pasted image 20240429154410.png
On voit donc facilement qu'il serait possible d'executer des commandes à partir d'un XML.

Types de XXE :


Exemples :


Pasted image 20240502105753.png

Exploitation :


Liste de payloads : https://github.com/payloadbox/xxe-injection-payload-list
Tout d'abord il faut détecter la faille :

`<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "https://webhook.site/0bf66e36-79fa-4672-a625-a6cfe4a8bfd2"> ]>`

Cette attaque force le serveur backend à faire une requête à une URL, par exemple sur un de nos listenners.

Exploitation Juice Shop:


Ressource :
https://portswigger.net/web-security/xxe

Remédiation :


Une cheat sheet sur la remédiation des failles XXE est disponibles ici : https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html

La manière la plus courte et safe de se prémunir des XXE est de désactiver les DTDs entièrement.