Pikachu-inseguro FileUpload carga de archivos inseguros

 la vulnerabilidad de subida de archivos no seguros

1. Visión general

  función de carga de archivos son comunes en las aplicaciones web, como muchos sitios registrados cuando la necesidad de la subida de imágenes , archivos adjuntos de carga , y así sucesivamente. Cuando el usuario hace clic en el botón Subir, el fondo va a cargar el archivo para determinar si tal es el tipo especificado, extensión, tamaño, etc., y luego cambiar el nombre del directorio después de almacenamiento de acuerdo con el diseño del formato especificado. Si el fondo de los archivos cargados sin ningún juicio o criterio sobre el estado de seguridad no es lo suficientemente estrictas , un atacante podría cargar un archivo malicioso, como una palabra de Troya, causando servidor back-end es WebShell. 

  Por lo tanto, al diseñar una función de carga de archivos, asegúrese de archivo de seguridad estricta en el pasado. Por ejemplo:
    - Verificar el tipo de archivo, extensión, tamaño;
    - documentos de verificación de carga;
    - el archivo determinado cambio de nombre compleja;
    - No exponga el camino después de la carga de archivos;
    - y así sucesivamente ...
inseguro archivo de catálogo de la vulnerabilidad de carga:

 2. Demostración experimental

(1) el cliente comprueba para verificar el cliente

 

 Sólo se encontró subir fotos, ver el código fuente, la extensión del archivo se lleva a cabo para determinar

 

Ese hecho, podemos cambiar directamente el código de front-end, como juez de extensión de función de borrado

 

 

 A continuación, cargar otros tipos de archivos, cargado encontrado con éxito

 

 Por supuesto, también puede cargar otros archivos ataque de Troya! !

(2) Tipo MIME

  Tipos Multipurpose Internet Mail Extensions (MIME), es una manera de establecer el tipo de extensión de archivo con una aplicación que se abra cuando se accede a la extensión del archivo, el navegador utilizará automáticamente el programa de aplicación especificado es abrir. Algunos se utilizan para los clientes para especificar nombres de archivos personalizados, así como algunos archivos multimedia abierto.

tipos MIME comunes son:

  • HTML texto texto html / html
  • texto texto sin formato .txt / plain
  • RTF .rtf texto image / gif
  • JPEG 图形 .ipeg .jpg image / jpeg
  • GIF gráficos .gif image / gif

He subido una vez fueron permitidos para ser archivo de imagen cargada y no permite subir archivos para comparar el troyano

 

 

 Content-Type no se encuentra a la misma, que podemos cambiar este valor, se puede pasar por alto éxito

 

 

 

 

(3) getimagesize

  getimagesize (string filename) 函数

  Función determinará cualquier GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, archivo de imagen CPM, XBM o el tamaño WBMP y el retorno al tipo y tamaño del archivo y altura de imagen y ancho de la imagen . Esa función mediante la lectura de la cabecera del archivo, devuelve una imagen de la longitud, anchura y otra información, si no hay cabecera de archivo de imagen correspondiente, el error de función.

  Se puede ver, el código de alto nivel para leer el último nombre de archivo. "" String, y que es tomar un sufijo final, se espera que limitar los tipos de archivos por nombre de archivo, por lo que requiere el nombre de archivo de carga en la forma debe ser "* .jpg "" *. jpeg "" *. png "uno. Mientras tanto, la función getimagesize es limitar la cabecera de carga de archivos debe ser el tipo de imagen.

 Tratamos en un método relacionado

 

 El servidor puede determinar directamente el tipo de archivo sufijo, y vamos a seguir para tratar sufijo al jpg:

 

 Incluso si la secuencia de comandos de tipo jpg, pero cuando el contenido del formato de no imagen no se pueden cargar.

Hay dos formas de evitar:

  • formato de imagen jpg añade a la cabeza de la escritura
GIF89

 <? php    

    phpinfo (); 

?>
  • cartera de php + jpg

Utilice el comando:

echo '<?php  phpinfo(); ?>' >> 1g.jpg

La palabra troyano escrito al final de la 1g.jpg foto

Y luego subir a la detección de derivación 

 

 

Pero el servidor se convertirá en un archivo de Troya analizar archivos de imagen, por lo que su solicitud de ejecución para enviar el archivo, el servidor devolverá al archivo "Imagen", y no ejecuta el comando apropiado. Tenemos que utilizar  vulnerabilidades de inclusión de archivos  formatos de archivo de imagen puede ser ejecutado como un archivo PHP para resolver :

HTTP: // 127.0.0.1/pikachu-master/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2020/4/3/4297605e4fd433f3445241700590.jpg&submit=~~MD~~aux~~3rd Enviar Consulta

 

Supongo que te gusta

Origin www.cnblogs.com/amberhome-wei/p/12628295.html
Recomendado
Clasificación