Exploiting XInclude to retrieve files – PortSwigger Write Up

En este post vamos a estar resolviendo el laboratorio de PortSwigger: “Exploiting XInclude to retrieve files.”

Pasos

Este laboratorio tiene una función “Check stock” que incorpora la entrada del usuario dentro de un documento XML del lado del servidor que luego se analiza.

Como no controla todo el documento XML, no puede definir una DTD para lanzar un ataque XXE clásico .

Para resolver el laboratorio, inyecte una XIncludedeclaración para recuperar el contenido del archivo /etc/passwd.


Vemos que en esta situación es una tienda donde podemos ver los detalles de los productos y si nos fijamos podemos ver el stock de cada uno de los productos.



Entonces, vamos al laboratorio e interceptamos en segundo plano todos los paquetes en el burpsuite, entonces vamos a un producto y hacemos clic en Check stock y buscamos el paquete en el Http history y lo enviamos al Repeater.


Entonces ahora lo que haremos será inciar el Burp collaborator y copiar del clipboard.

En la siguiente imagen vamos a ir a Internet a buscar en Github un respositorio donde adjunto en el siguiente enlace payloads all the things.

  • https://github.com/swisskyrepo/PayloadsAllTheThings


Vamos a copiar el payload el cual será el siguiente y que colocaremos en el parámetro productID.

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


Con el payload ya colocado en el productID ejecutamos la petición dándole a send y como vemos se ha ejecutado perfectamente y nos muestra el contenido /etc/passwd.


Ahora, vamos al home para verificar que completamos el laboratorio.


¡Un saludo y espero que os sirva de apoyo!