Exploiting blind XXE to exfiltrate data using a malicious external DTD – PortSwigger Write Up

En este post vamos a estar resolviendo el laboratorio de PortSwigger: “Exploiting blind XXE to exfiltrate data using a malicious external DTD.”

Pasos

Este laboratorio tiene una función “Check Stock” que analiza la entrada XML pero no muestra el resultado.

Para resolver el laboratorio, active un mensaje de error que contenga el contenido del archivo /etc/passwd.

Deberá hacer referencia a un archivo DTD existente en el servidor y redefinir una entidad a partir de él.


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 ahora lo que haremos será inciar el Burp collaborator y copiar del clipboard.



Elaboramos el payload con la dirección del burp collaborator, enviamos la petición y con el % ejecutamos dentro de la identidad el ejecutable sin necesidad de llamarla fuera dentro de una variable


Ahora le damos a poll now y vemos que se ha ejecutado correctamente. Apagamos el proxy del burpsuite y nos vamos al servidor del exploit.


Copiamos al URL que nos da el servidor del exploit para lanzar el ejecutable que tengamos desde ese servidor


Cambiando la URL que nos da el servidor en el payload le damos a send para ver que tiene conexión el servidor del exploit.


Como vemos si nos vamos a access log podemos ver que se ha ejecutado correctamente


Ahora vamos a volver al burp collaborator, vamos a copiar el clipboard y los vamos a pegar en el servidor del exploit para ejecutar el payload.


Guardamos el exploit.


También podemos visualizar el exploit para ver de qué manera se vería y se enviará a la petición.


Si realiamos un poll now nos llega la petición correctamente del servidor y tenemos la respuesta que nos pedían que era el hostname


Finalmente copìamos el hostname y lo enviamos y ya estaría resuelto el laboratorio.



¡Un saludo y espero que os sirva de apoyo!