Exploiting XXE via image file upload
Laboratorio de Portswigger sobre XXE
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio permite a los usuarios adjuntar avatares a los comentarios y utiliza la biblioteca Apache Batik para procesar los archivos de imagen de los avatares. Para resolver el laboratorio, debemos subir una imagen que muestre el contenido del archivo /etc/hostname después de ser procesada y luego usar el botón Enviar solución para enviar el valor del nombre del host del servidor
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 post veremos una sección de comentarios y de subida de archivos
Creamos un archivo llamado image.svg con este payload en su interior
1
2
3
4
5
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/hostname" > ]>
<svg width="128px" height="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<text font-size="16" x="0" y="16">&xxe;</text>
</svg>
Posteamos un comentario con la imagen svg de perfil, mediante Burpsuite podemos capturar esta petición
Si la petición nos devuelve un 200 OK significa que está todo correcto, si no deberemos probar eliminando espacios del payload que se envía en la imagen. Si todo ha ido bien hacemos click derecho sobre la imagen de nuestro perfil y pulsamos en abrir imagen en nueva pestaña, esto nos llevará a https://0a6d008103cba51480015839008a008c.web-security-academy.net/post/comment/avatars?filename=1.png. Esto es una imagen que muestra el hostname en su interior
Pulsamos en Submit Solution y enviamos la solución





