¿Es posible explotar una carga de archivos con la lista blanca y el hash de nombre de archivo?

2

Tengo una pequeña aplicación web. Debido a que es necesario cargar algunos archivos, reviso las extensiones de archivo con una lista blanca (tgz, jpg, png, pdf, zip, rar, txt, gif, py, c, rb). Además de eso, tengo el hash de los nombres de archivo con md5, por ejemplo, cuando el usuario carga el archivo "exploit.php.jpg", se le cambia el nombre a "526a8f9f3497b5a69bc4523ba0c6aacd.jpg".

No hay una verificación de tipo MIME ni una función "getimagesize ()" o de cambio de tamaño, si se trata de una imagen. Debido a eso, es posible cargar un archivo php cuyo nombre acaba de cambiarse a exploit.jpg

Aunque esto parece ser muy arriesgado y el usuario también sabe, donde existe este archivo en mi servidor ( /images/526a8f9f3497b5a69bc4523ba0c6aacd.jpg ), no puedo ejecutar este archivo como .php.

Cuando intento abrir /images/526a8f9f3497b5a69bc4523ba0c6aacd.jpg%00 o /images/526a8f9f3497b5a69bc4523ba0c6aacd.php , etc., solo obtengo "archivo no encontrado" (.php) o "imagen no se puede mostrar" (jpg, gif).

¿Alguien sabe si y cómo es posible explotar ese archivo?

    

pregunta zarathustra 18.11.2014 - 18:05
fuente

2 respuestas

2

No confíe en una lista blanca, se puede omitir:

Content-type: image/jpeg; filename=exploit.php

El hash de los archivos no lo protege si el atacante puede acceder al archivo directamente:

<img src='http://yoursite.net/images/526a8f9f3497b5a69bc4523ba0c6aacd.jpg>

Puede crear un script PHP para leer el archivo y enviar el contenido al usuario, sin cambios. De esta manera, el atacante nunca hará referencia al archivo en su servidor, y cualquier vulnerabilidad del servidor que pudiera cargar no se activaría:

<?php

$filename = getFilenameFromDatabase();
// e.g: $DOCROOT/images/exploit.rb.exe.py.bat.scr.php.jpg
header("Content-type: image/jpeg");
readfile("$filename");
?>

Solo asegúrate de filtrar la ruta a los archivos, de lo contrario, el atacante puede obtener acceso de lectura a tus archivos.

    
respondido por el ThoriumBR 18.11.2014 - 20:12
fuente
0

La vulnerabilidad de carga de archivos podría explotarse en combinación con un error de inclusión de archivos local para atacar el lado del servidor. O un archivo malicioso (es decir, pdf) podría cargarse para atacar a un usuario final con privilegios administrativos, por ejemplo.

Su enfoque parece bastante razonable, sin embargo, el diablo siempre está en los detalles y usted necesitaría a alguien con conocimientos de seguridad para ver su código fuente o la aplicación en ejecución para una evaluación más sólida.

    
respondido por el wireghoul 28.01.2015 - 06:02
fuente

Lea otras preguntas en las etiquetas