Pikachu-inseguro Fileuplode (carga de archivos inseguros)

En primer lugar, una visión general de la vulnerabilidad de carga de archivos inseguros:
la 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:
1, la validación de tipo de archivo, extensión, tamaño;
2, validación carga de archivos;
3, el archivo de cambio de nombre de cierto complejo;
4, no exponga la ruta del archivo de carga;

Dos, cheque inseguro FileUpload-cliente (carga de archivos inseguros - autenticación de cliente)

Ver la interfaz, vemos un mensaje que indica: Sólo se pueden subir fotos.

Esta vez se molestó en mirar en el fondo de la fuente, una comprensión más profunda:

Vemos que al transferir archivos, llamará a la función siguiente updown

 

Por otra parte, existen restricciones sobre los tipos de archivos subidos: jpg png gif

 

 

 Entonces, ¿cómo hacer na? Esta es nuestra troyanos carga ciertamente no dejarla pasar, pero si hacemos cambios al código fuente de la página, la destrucción de su proceso de pruebas, no se puede escribir fácilmente troyanos, luego de que helicópteros chinos tienen acceso a una consola, perfecto!

Experimento vulnerabilidad:

Siga las instrucciones para encontrar la función de la imagen, y los cambios de make:

 

 

 Vemos la carga se ha realizado con éxito, el siguiente cuchillo de cocina china o cuchillo de cocina!

senda de subida de archivos también dio hacia fuera! Helicópteros construidos ruta: http: //192.168.24.140/pikachu-master/vul/unsafeupload/uploads/pin.php/ HY = ipconfig?

 

 

 

 

Tres, tipo MIME (validación del lado del servidor)

Antes de esto, para desarrollar un punto de conocimiento:
MIME (Multipurpose Internet Mail Extensions) de tipo multipropósito de correo Internet extensiones de
tipo MIME es de alguna manera para establecer la extensión de archivo con una aplicación para abrir, y cuando la extensión del archivo es cuando se accede, el navegador utilizará automáticamente la aplicación especificada para abrir. Algunos se utilizan para los clientes para especificar nombres de archivos personalizados, así como algunos archivos multimedia abierto.
Cada tipo MIME consta de dos partes, la parte delantera de una gran clase de datos, tales como audio de sonido, imagen y otra imagen, definir tipos específicos más adelante. tipos MIME comunes, tales como:
HTML: html, html text.html
archivo ordinario: texto .txt / Llanura
archivo RTF: .rtf la aplicación / RTF
GIF gráficos: image / gif gif
gráficos JPEG: .jpeg, imagen .jpg / jpeg

Ver el título, creo que los socios pequeños deben ser sospechoso, el servidor se puede configurar para verificar! Así que tenemos que engañar al lado del servicio, será modificada nombre de archivo de captura hasta la mitad

 

 

fuente:

 

 

 etérea:

 

 

 Se puede ver el archivo cargado correctamente! NOTA: No cargue el troyano es un módulo del mismo nombre, no hay cobertura, pero no carga conducido!

 Cuatro, getmagesize (detección de carga basado en el contenido del archivo)

 

getimagesize (string filename) la función es
una función de la medición de cualquier GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, CPM, XBM o el tamaño del archivo de imagen WBMP y devuelve el tamaño de una imagen y un archivo el tipo y la altura de la imagen y anchura. 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.

Este tipo medio camino modificamos subido no será, y esto detectará directamente el contenido del archivo subido.

Método uno: Añadir una cabeza formato de imagen jpg en el guión

pinbo.jpg contenido:

  GIF89
<php?   
    Phpinfo ();
?>

aspecto etéreo:

Subir el éxito:

 

 

 Segundo método: Trojan crear una imagen con una combinación de: jpg + php

Utilice el comando cmd combinado:

 

 

 

 

 

Subir fotos para ver el éxito!

 

Dirección: uploads / 04.06.2020 / 4881335e8a078d8c713504141791.png

 

 

Pero visitamos esta imagen, no se ejecutará el código malicioso. Podemos combinar la vulnerabilidad de inclusión de archivo local en uso Otros, combinación , subir fotos de adivinar la ubicación de:

http://192.168.24.140/pikachu-master/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2020/04/06/4881335e8a078d8c713504141791.png&submit= Enviar Consulta

Para que pueda obtener la información interna sensible!

Método tres: caballo de Troya Subir palabra para obtener acceso a una consola

Quinto, carga de archivos precauciones de vulnerabilidad

1. Estrategia de no subir implementado en js front-end.

2. limitar los archivos de carga a través del lado del servicio:

A) una combinación de múltiples condiciones de examen: como el tamaño de archivo, ruta, extensión, tipo de archivo, la integridad del archivo.

    B) para cargar los archivos almacenados en el servidor de cambio de nombre (para desarrollar una reglas de comando razonables).

     C) para cargar una carpeta de archivos en el control de acceso realiza servidor (como sólo lectura), para limitar el daño permisos de ejecución.

 

Supongo que te gusta

Origin www.cnblogs.com/li2019/p/12640218.html
Recomendado
Clasificación