¿Ejecutar un script php cargado en un servidor vulnerable si sé su ubicación? [cerrado]

1

Necesito probar un sitio web y encontré una carga de archivo vulnerable. Solo se verifica si la extensión del archivo es .jpg, .png o .pdf. Puedo omitir esto cargando un archivo llamado script.php.jpg . Sé que los archivos cargados se almacenan en /uploads .

¿Cómo puedo ejecutar ese script? Al escribir http://example.com/uploads/script.php.jpg en mi navegador, el script no se ejecuta. Sé que el servidor puede ejecutar código php y que el servidor tiene dicha vulnerabilidad de archivo.

    
pregunta manuel-hoelzl 24.06.2018 - 16:43
fuente

2 respuestas

4

A menos que el servidor esté muy mal configurado, nunca ejecutará archivos .jpg como archivos .php. El segmento último después de . es el relevante al determinar las extensiones de archivo, lo que significa que está subiendo archivos que el servidor tratará correctamente como archivos jpg.

Por lo tanto, ser capaz de cargar script.php.jpg por sí mismo no es una vulnerabilidad.

Si, por ejemplo, tuviera una vulnerabilidad de LFI en algún lugar, podría incluir el archivo cargado y luego se ejecutaría (independientemente de la extensión del archivo). O si puede cargar archivos de configuración del servidor (por ejemplo, .htaccess en apache), puede reconfigurar el servidor para ejecutar archivos .jpg como archivos .php.

Pero esas serían las vulnerabilidades, no la capacidad de cargar el archivo .php.jpg. Sería posible verificar el tipo MIME en la carga como defensa en profundidad. Pero eso puede ser omitido , por lo que no consideraría que una verificación de este tipo no sea una vulnerabilidad (aunque se recomienda la verificación) .

    
respondido por el tim 24.06.2018 - 16:53
fuente
0

El servidor está leyendo la extensión jpg , por lo tanto, la envía a su navegador como si fuera una imagen y no la interpreta como un archivo php .

Para usar el archivo cargado, debe aprovechar otra vulnerabilidad como LFI como @tim dijo

Otra cosa que podrías intentar es meterte con los filtros de nombre de archivo para que no se agregue .jpg . Por ejemplo, podría establecer el nombre del archivo en algo así como script.php.jpg.jpg , si el filtro no se implementa correctamente puede leer el script.php al final (interpretándolo como un archivo válido), pero cuando se guarda, puede guardarse como .php porque shebang no es un carácter válido para un nombre de archivo

Además, tenga en cuenta que la comprobación de los tipos de archivo por extensiones es una cuestión de Windows. Los tipos de archivos en sistemas similares a Unix se verifican en números mágicos y scripts ejecutables, como %code% de archivos: puede indicar cómo interpretarse a través de %code% s. Si el sistema subyacente es similar a Unix, puede valer la pena intentar agregar un shebang al script cargado si aún no está allí

    
respondido por el Mr. E 24.06.2018 - 17:37
fuente

Lea otras preguntas en las etiquetas