Web Security Academy

XML external entity - Lab : Exploiting XInclude to retrieve files

Objectif :

  • Récupérer le contenu du fichier /etc/passwd sur le serveur distant.

Solution :

On lance le lab et on se retrouve sur un site de commerce avec plusieurs articles affichés :

On accède au détail d'un produit et en bas de la page, on peut contrôler la quantité de stock restante dans différentes villes :

On clique sur "Check stock" et on observe la requête envoyée au serveur :

C'est une requête POST avec comme donnée l'identifiant du produit et l'identifiant du magasin lié à la ville.

Il se peut que le serveur intègre ces valeurs dans une donnée au format XML.

On va essayer une attaque de type XXE en utilisant la fonctionnalité XInclude avec le payload suivant :

<foo xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></foo>

On remplace la valeur du premier paramètre POST ( "productId" ) par notre payload encodé en URL :

On redirige la requête vers le serveur et il nous retourne le contenu du fichier demandé :

Le lab est désormais résolu.