Estoy probando un cuadro de vulnerabilidad en particular desde ayer y tuve un problema bastante extraño que no esperaba. Digamos que una aplicación web vulnerable ofrece carga de archivos de imagen.
La imagen en realidad no tiene que ser imagen, el back-end acepta cualquier extensión de archivo. El problema es que el mismo back-end siempre devuelve *.jpg
, por lo que en lugar del script evil.php
cargado, aparece random_number.jpg
.
Por supuesto, lo primero que he intentado es obtener la respuesta servida, que en este caso son datos de imagen codificados en base64.
Mirando más lejos, he encontrado que la aplicación devuelve binary/octet-stream
como un encabezado de respuesta Tipo de contenido , lo que significa que cuando intento acceder a la URL http://localhost/vulnbox/uploaded/random_num.jpg
, el navegador abre el mensaje de descarga de archivos. . El archivo real se devuelve como binario, listo para ser descargado, pero al mirar el archivo, veo que el código permanece.
¿Hay alguna manera de forzar la respuesta de Content-type a cualquier otra y hacer que se ejecute el script malvado real?