Descripción

This lab has a «Check stock» feature that embeds the user input inside a server-side XML document that is subsequently parsed.

Because you don’t control the entire XML document you can’t define a DTD to launch a classic XXE attack.

To solve the lab, inject an XInclude statement to retrieve the contents of the /etc/passwd file.

Exploiting XInclude to retrieve files writeup

Esta vez, al explorar con el ‘Logger’ la funcionalidad de ‘Check stock’ no aparecerá código XML:

Esto se debe a que el id del producto y de la tienda se introducen directamente en el XML predefinido en el backend. Pero para asegurarnos de que está tratando con XML el backend podemos realizar la siguiente petición:

productId=&entity;

Tendremos que codificar a URL el código , pero al enviarlo nos devuelve el error «Entities are not allowed for security reasons», por lo que podemos confirmar que está tratando con XML. El payload a insertar es el siguiente:

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

Con esto incluimos ‘XInclude’, que permite introducir contenido externo en documentos XML. Al añadirlo a ‘productId’ y codificarlo como URL con Ctrl + U obtendremos el siguiente resultado:

Y completaremos el laboratorio:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *