¿Cuáles son algunas ideas para extraer vulnerabilidades de carga de archivos?

Las vulnerabilidades de carga de archivos son la forma más rápida de obtener acceso a un servidor. Aunque hay mucha información relevante, muchas personas todavía están confundidas acerca de los métodos de verificación de carga, cómo evitar la detección y qué escenarios de análisis de carga causarán daño. Este artículo ofrece algunas explicaciones y luego agrega algunos gestos de minería no convencionales además de cargar webshell, incluidos XSS, redirección, Dos, CSRF, etc.

1. Conocimientos básicos:

Para comprender en profundidad la carga de archivos, debemos comprender las propiedades de carga, la estructura de los archivos comunes, las funciones de procesamiento de gráficos, etc.

1) Características del mensaje:

Observe las características del mensaje de carga del archivo:

El tipo de contenido en el encabezado tiene dos características:

1.multipart/form-data (atributo enctype del formulario, especificado como datos binarios)

2 Cadena límite (utilizada como separador para distinguir los datos POST)

Publicar. contenido Hay cinco características:

1. Contenido-Disposición: Formulario-Datos

2. Nombre: Introduzca el nombre del formulario

3. nombre

4.Content-Type: define el tipo de archivo y la codificación de la página web, y determina la forma y codificación en la que el navegador lee el archivo;

5. Límite: antes del valor del tipo de contenido Hay dos:

2) Reglas de inspección comunes

Las reglas de verificación de carga comúnmente utilizadas existentes no son más que las siguientes categorías:

1. Verificación de JavaScript del cliente (sufijo)

2. Verificación del campo del tipo de contenido del encabezado del archivo (imagen/gif): con parámetros.

4. Verificar sufijo: lista negra/blanca de extensiones

5. Verificación del encabezado del contenido del archivo: GIF89a

6. renderizado

7. Verificación de especificaciones personalizadas

3) Aclaración

La carga de archivos y el análisis de archivos son dos procesos. Incluso si subimos un archivo php, se analizó como una imagen. "No se puede mostrar la imagen" se mostrará al acceder al archivo php. O cargamos un archivo jpg, pero hay un script de shell mezclado en él, que se ejecutará si se analiza en un archivo php o la ubicación de carga no puede evitar la detección y solo puede cargar archivos jpg, pero otras funciones como archivos; La inclusión aún está disponible y se ejecutó exitosamente.

Volvamos a la esencia de la seguridad. La carga es la "entrada" y el análisis de archivos es la "salida". Cualquier minería de vulnerabilidad requiere una combinación de insumos y resultados.

2. Técnicas de derivación:

Las siguientes son algunas técnicas de derivación comúnmente utilizadas en el combate real:

1) Lista negra de sufijos

La Los siguientes sufijos de reemplazo también se pueden analizar como shell:

php:. phtml,. phpt, .php3, .php3p

asp:. aspx, asmx, ashx, web.config

perl:. pl. p.m,. cgi. Movimiento de Liberación

jsp:. jspx,. jsw,. jsv,. jspf

Coldfusion:. cfm. cfml,. CFC. dbm

Además, puede cooperar con las reglas de nomenclatura de archivos del sistema operativo:

. php. ,espacio .php,. php:1.jpg,. php::$DATOS etc.

Los archivos con estos sufijos y símbolos irregulares serán eliminados automáticamente por el sistema Windows, quedando únicamente. php.

2) Lista blanca de sufijos

Además de combinar varias funciones de análisis del servidor, a menudo se utiliza la inyección de bytes nulos. El motivo para insertar valores de bytes nulos es que algunos lenguajes de programación de servidores de aplicaciones utilizan bibliotecas C/C++ para comprobar los nombres y contenidos de los archivos. En C/C++, una línea que termina en /00 se llama NullByte. Entonces, cada vez que el intérprete ve un byte nulo al final de la cadena, deja de leer y cree que ha llegado al final de la cadena.

Por ejemplo, cambiaremos el nombre de Happy.jpg a Happy.phpA.jpg, luego cargaremos el archivo, capturaremos la solicitud en hipo y cambiaremos a la vista hexadecimal. Busque el nombre del archivo en la vista de cadenas. Mire la tabla hexadecimal correspondiente y reemplace 41 ('A ') con 00 (byte nulo). La cadena resultante se convierte en Happy.php (vacía). jpeg. Debido a que el intérprete PHP usa la biblioteca de lenguaje C internamente, dejará de leer el nombre del archivo después de Happy.php y el archivo se guardará como Happy.php.

Otra forma de eludir la lista blanca es utilizar el sufijo doble: shell.php.jpg.

aidiom.com">Red idiomática china All rights reserved