Exploiting XXE using external entities to retrieve files – PortSwigger Write Up
En este post vamos a estar resolviendo el laboratorio de PortSwigger: “Exploiting XXE using external entities to retrieve files.”
Pasos
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.
Este laboratorio tiene una función “Check stock” que analiza la entrada XML y devuelve cualquier valor inesperado en la respuesta. Para resolver el laboratorio según nos indica la descripción hay que inyectar una entidad externa XML para recuperar el contenido etc/passwd
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 debemos generar un payload para el ataque, el cual será el siguiente basandonos en la estructura del XML del paquete:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<stockCheck>
<productId>
&xxe;
</productId>
<storeId>
1
</storeId>
</stockCheck>
Y Lo probamos en el paquete para verificar si existe una respuesta válida.
Ahora, vamos al home
para verificar que completamos el laboratorio.
Finalmente completamos el laboratorio.
¡Un saludo y espero que os sirva de apoyo!