Explotación de un servidor PHP con una carga de archivo .jpg

12

Me gustaría hacer una pregunta sobre el clásico de carga de una imagen y la ejecución de código PHP en un sitio web.

Así que he estado probando este exploit en un sitio web que debo hackear (está configurado para que lo intentemos y lo hagamos)

La página web nos permite cargar una imagen, y mientras se cambia el tipo mime utilizando TamperData, la página web aparentemente comprueba si los últimos caracteres del archivo son '.jpg' o '.jpeg' antes de permitir el paso de la imagen.

Independientemente de la ubicación del código PHP (he probado solo el código php, el código php pegado al final del archivo de imagen, el código php en encabezados EXIF, etc.), el sitio web solo muestra el archivo de imagen cuando lo abro después de cargar (o un error en el caso de código PHP simple guardado como .jpg), ya que la extensión siempre es jpg.

Entonces, en ese caso, ¿qué se debe hacer para ejecutar el archivo como .php? (el envenenamiento por mordedura nula no funciona, ni tampoco cargar el código como vuln.php.jpg o vuln.php; .jpg. Ambos simplemente muestran la imagen)

    
pregunta bruce kent 27.01.2016 - 19:50
fuente

3 respuestas

11
  

Independientemente de la ubicación del código PHP [...], el sitio web solo muestra el archivo de imagen cuando lo abro después de subir

Sí, así es como debería ser. El servidor sería muy vulnerable si interpretara los archivos .jpg como archivos .php dependiendo del contenido en lugar de la extensión.

  

En este caso, ¿qué se debe hacer para ejecutar el archivo como .php?

Sin algún tipo de vulnerabilidad en el código, no puedes ejecutar archivos de imagen como archivos PHP, ya que cualquier servidor decente no lo permitiría.

Sin saber más sobre el código, no podemos hacer más que adivinar. Si se supone que es vulnerable a propósito, supongo que la verificación de la extensión probablemente se haya roto.

Puedes intentarlo:

  • .htaccess : la verificación de extensión puede interpretar esto como sin extensión, y puede estar bien con eso. Si el servidor analiza el archivo .htaccess, puede obtener ejecución de código con archivos de imagen a través de AddType application/x-httpd-php .jpg .
  • vuln.jpg.php : la verificación puede verificar la primera, no la última extensión.
  • vuln.php5 , vuln.php4 , vuln.phtml , etc: el cheque puede ser un cheque de lista negra, no un cheque de lista blanca, que puede perder algunas extensiones que el servidor puede interpretar como archivos PHP. Puede probar esto fácilmente con una extensión inventada como foobar , si pasa, es un filtro de lista negra.
  • LFI: Es posible que tenga un directorio como misc con los subdirectorios uploads y configs , donde las configuraciones contienen archivos PHP y las subidas contienen las cargas de la imagen. Entonces puedes tener un código como include "misc/" . $filename . Digamos que hay un chequeo para el recorrido del directorio, por lo que este debería ser un código incorrecto, pero en general todavía es algo seguro, ¿no? Bueno, los archivos .jpg incluidos se analizan y ejecutan como cualquier otro archivo, y así se ejecutará el código PHP que contiene. Este ejemplo es un poco exagerado, pero no es del todo inconcebible que pueda existir algo como esto.

tl; dr : puede ejecutar archivos jpg como archivos PHP a través de .htaccess o a través de include . Además, puede omitir la comprobación de la extensión del archivo si no es segura.

    
respondido por el tim 27.01.2016 - 20:13
fuente
0

Solo un pensamiento: aunque no sea realmente piratear el servidor, ser capaz de cargar un archivo jpg con js autoejecutables incrustados desde el exif, que puede causar un caos en la máquina cliente, sin duda sería un problema de seguridad desde la perspectiva del usuario. . consulte: enlace

    
respondido por el Jenn 03.02.2016 - 07:20
fuente
0

Al utilizar TamperData, algunos servidores no funcionarán. Pero usar el editor exif funcionará bien.

.jpg será reemplazado por .php en los encabezados http o burp suite

    
respondido por el Trojan Boy 12.11.2017 - 21:37
fuente

Lea otras preguntas en las etiquetas