file-xmlXML External Entities (XXE)

Consignes

Le flag se trouve à la racine !

Réalisation

Une fois la connexion au challenge de fait, on observe que l'on peut injecter du code XML sur le site. Le but va donc être d'essayer d'extraire des informations qui proviennent de la machine.

circle-info

XXE est une vulnérabilité qui survient lorsqu’un parseur XML traite des entités externes non sécurisées. Cela permet à un attaquant de :

  • Lire des fichiers locaux (ex: /etc/passwd, /flag.txt)

  • Scanner le réseau interne

  • Exfiltrer des données

  • Parfois même exécuter du code selon le langage et la configuration du parseur

🔗 Ressource utile : PortSwigger - XML External Entity (XXE)arrow-up-right

À l'aide du lien fourni ci-dessus, on réalise un premier test afin de vérifier l'accès aux fichiers présents sur la machine à l'aide du code suivant :

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

Une fois le code soumis au serveur, il nous retourne bien le contenu du fichier /etc/passwd.

On modifie alors le code afin d'afficher le contenu de flag.txt présent à la racine de la machine comme nous l'indique l'énoncé :

Suite à l'envoi de ce code XML au serveur, ce dernier nous retourne ceci :

On obtient donc le FLAG :

Last updated