XXE - Techniques - Pentesting Web

Voici la structure d'une pétition traité avec Burpsuite dans le site XML vulnérable :

XML External Entity Injection :

Dans le cas où le serveur web ne valide pas correctement les données XML qu'il reçoit, les attaquants peuvent exploiter XXE en injectant une entité XML malveillante contenant des références à des fichiers système auxquels le serveur a accès. Cela peut permettre à l'attaquant d'obtenir des informations sensibles du système, telles que des mots de passe, des noms d'utilisateur, des clés d'API, et d'autres données confidentielles.

Pour accéder aux fichiers système, nous devrions créer une nouvelle entité, par exemple, "myFile", de la manière suivante : <!DOCTYPE foo [<!ENTITY myFile SYSTEM "file:///etc/passwd">]>

Ensuite, dans une variable, nous devrions poster le résultat avec "&myFile" comme ceci :

Parfois, le résultat ne s'affiche pas correctement. Dans ce cas, nous pourrions utiliser la déclaration suivante : <!DOCTYPE foo [<!ENTITY myFile SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd">]> Ensuite, nous traduirions le contenu résultant de base64 à sa forme normale. Cela redirigerait un fichier système, tel que "/etc/passwd", et en l'imprimant avec "&myFile;", nous pourrions visualiser le contenu du fichier sans problème.

XXE with out-of-band Interaction:

Parfois, les attaques d'injection d'entité externe XML (XXE) ne conduisent pas toujours à l'exposition directe d'informations sensibles dans la réponse du serveur. Dans certains cas, l'attaquant doit "aller à l'aveugle" pour obtenir des informations confidentielles via des techniques supplémentaires.

Une manière courante d'"aller à l'aveugle" lors d'une attaque XXE consiste à envoyer des requêtes spécialement conçues depuis le serveur pour se connecter à une Définition de Type de Document (DTD) définie externe. Le DTD est utilisé pour valider la structure d'un fichier XML et peut contenir des références à des ressources externes, comme des fichiers dans le système du serveur.

Créez un fichier malicious.dtd avec le contenu suivant :

Créez une entité avec le contenu suivant :

Mettez en écoute sur le port 80 :

Obtenez le contenu en base64 :

Convertissez-le de base64 à un contenu visible et le résultat est le suivant :

Le script de Bash suivant automatise tout cela :

Mis à jour

Ce contenu vous a-t-il été utile ?