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!