Laboratorio: Exploiting blind XXE to exfiltrate data using a malicious external DTD
Last updated
Last updated
En este caso nuestro objetivo es el endpoint /etc/hostname porque como se mencionaba antes a veces algunos parsers XML obtienen la URL en la definición de entidad externa usando una API que valida los caracteres que se permiten aparecer dentro de la URL.
Este laboratorio contiene un exploit server para poder llevar a cabo el ataque:
Entonces vamos a probar la funcionalidad de check stock y vemos que sucede exactamente:
Aqui esta es la request POST con el XML, entonces intentaré crear la carga útil en el exploit server y ver que pasa.
El endpoint del exploit server lo dejaré como /test.dtd
Para este ataque en concreto haré uso tanto del exploit server como de mi instancia de burp collaborator, así podremos llevarlo con éxito, pasaré a dejar todas las cargas utiles listas:
Me devolvió un parsing error:
Y es por algo en especifico, mi carga util de la entidad parametro que creé llamada file tenía la ruta hacía passwd, como mencionaba antes los parsers utilizan unas apis externas que se encargan de validar lo que va en la URL para definir que se acepta y que no, en este caso /etc/passwd efectivamente no.
Ahora si, lo lanzamos y nos sigue dando error pero si le doy poll now al burp collaborator me trae el hostname que robe con el archivo %file; que vienen de la IP 34.253.173.2→
El hostname: 9696fcd7a78f
Ese valor es el que enviamos en la opción submit:
Y efectivamente hemos solucionado el laboratorio.
Eso es todo!