En primer lugar, descargar archivos no seguros
1. Concepto
Visión general de descarga de archivos inseguros
función de descarga de archivos aparecerá en muchos sistemas web, generalmente cuando se hace clic en el enlace de descarga, se enviará una solicitud de descarga a un segundo plano, esta solicitud contendrá normalmente el nombre de un archivo para ser descargado, entre bastidores después de recibir la solicitud después de la reunión comenzó el código de descarga, el nombre de archivo del archivo correspondiente a la respuesta del navegador para completar la descarga. Si el nombre de archivo entre bastidores después de recibir la solicitud, se descargará el archivo directamente en la lucha en el camino de su seguridad sin juicio, entonces podría conducir a la vulnerabilidad insegura descarga de archivos.
En este momento, si no se espera que un programa para presentar la atacante nombre del archivo, sino un camino cuidadosamente construida (como ../../../etc/passwd), lo más probable es que el archivo especificado directamente descarga. Lo que resulta en una información de fondo sensibles (archivos de contraseña, código fuente, etc.) se descarga.
Por lo tanto, en la función de descarga de archivos de diseño, si el archivo descargado se pasa por el gol llegó en la parte delantera, a continuación, el archivo debe ser aprobada en las consideraciones de seguridad. Recuerde: Toda la interacción de datos y front-end no es seguro y no puede tomarse a la ligera!
Puede "archivos no seguros de descarga" sección de prueba correspondiente, a una mejor comprensión de la vulnerabilidad.
2.Unsafe FileDownload
Seleccionamos el derecho abierto en una nueva pestaña en el nombre del hipervínculo
fuente de observación encontró sin ninguna seguridad, directamente para obtener la descarga de concatenación de cadenas
Construimos una URL para descargar el archivo
../../../password.txt
De hecho, se trata de un documento que he creado, y con el fin de facilitar la presentación para optar por descargarlo.
En segundo lugar, la carga de archivos inseguros
1. Concepto
Descripción general de la vulnerabilidad de carga de archivos inseguros
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 ...
2. El cliente no pasa por el cheque del cliente
<Script> función checkFileExt (filename) { var = En la bandera en false; // estado var ARR = [ "JPG", "PNG", "GIF"]; // eliminar extensión de carga de índice var = filename.lastIndexOf ( " . "); EXT var = filename.substr (+ índice 1);. // comparación for (var i = 0; I <arr.Length; i ++) { IF (EXT == ARR [I]) { En Flag = true; // Una vez que la encontró adecuada, salga inmediatamente del bucle PAUSA; } } // condicional IF (bandera!) { alert ( "carga de archivos no cumple con los requisitos, por favor, vuelva a seleccionar!"); location.reload (true); } } </ Script>
Ya sea checkFileExt aquí () es para determinar el archivo subido es un formato de imagen, si no el cuadro de diálogo emergente.
Utilizamos Inspeccionar elemento se eliminará a cabo
A continuación, cargar nuestro fichero de Troya palabra
A continuación, podemos utilizar un cuchillo de cocina o una estructura conectada a url
Ejemplo de URL:
http://127.0.0.1/pikachu-master/vul/unsafeupload/uploads/yijuhua.php/?czs=ipconfig
3. El tipo MIME del servidor
If (isset ($ _ POST [ 'Enviar'])) { // var_dump ($ _ los archivos); $ MIME = array ( 'Imagen / JPG', 'image / jpeg', 'image / png'); // especificada MIME escribir, tipo MIME aquí sólo para hacer juicio. $ Save_path = 'subidos'; // crear un directorio especificado en el directorio actual $ carga = upload_sick ( 'uploadfile' , $ mimo, $ save_path); // llamar a la función IF ($ Subir [ 'retorno']) { $ HTML. = "<p class = 'aviso '> archivo subido correctamente </ p> <p class = 'aviso'> ruta del archivo guardado: {$ Subir [ 'new_path']} </ P>"; } else {el $ . HTML = "<P class = Aviso> {$ Subir [ 'error']} </ P>"; } }
Sube el formato de archivo correcto, usar paquetes de captura burpsuite
Sube una palabra de Troya
Leemos los periódicos y encontramos una palabra troyano ha subido un éxito
A continuación, podemos utilizar un cuchillo de cocina o URL para conectarse.
http://192.168.233.138/pikachu-master/vul/unsafeupload/uploads/1.php/?czs=ipconfig
4.getimagesize
Getimagesize () devuelve el resultado tiene el tamaño de archivo y tipo de archivo, si el uso de esta función para obtener el tipo de juzgar si la imagen, no habrá problemas.
El fondo será comparada según varios ex formato hexadecimal a subir fotos, el primer pocos se fijan en línea con la imagen es realmente, png: 8950 4e47
Preparamos una imagen normal y un archivo php que contiene código malicioso
Introduzca un comando cmd
copia / b 1.png + 1.php yi.png
Después de una buena producción puede subir una vía de retorno con éxito
http: //localhost/pikachu-master/vul/fileinclude/fi_local.php archivo = .. / .. / unsafeupload / uploads / 2020/03/31 / 5349015e830f4b00004846209034.png y publica =% E6% 8F% 90% E4% de BA % A4% E6% 9F% A5% E8% AF% A2