Archivo de resumen de análisis de vulnerabilidades (IIS, Apache, Nginx)

(Este artículo desde el cuerpo principal https://blog.csdn.net/qq_36119192/article/details/82834063 )

Archivo de la vulnerabilidad de análisis

Archivo de la vulnerabilidad de análisis debido principalmente a un funcionamiento inadecuado o propias vulnerabilidades del servidor Web de webmaster, causando algunos archivos especiales son IIS, Apache, Nginx u otro servidor Web interpreta el archivo de secuencia de comandos para ejecutar en algunos casos.

 

Por ejemplo, los administradores del sitio para configurar adecuadamente, lo que resulta en el PSP2, phtml, ascx, etc. Estos archivos también se realizan como un archivo de script. E incluso en algunos casos el administrador de error debido a la configuración del servidor .html, .xml y otra sufijo archivo de página estática también ser tratado como un archivo de comandos de ejecución.

 

Sin embargo, la mayor parte de la vulnerabilidad de análisis de vulnerabilidades o porque el servidor web en sí, conducen a un archivo especial como un archivo de secuencia de comandos para ser ejecutados.

 

 

La vulnerabilidad de análisis de IIS

la vulnerabilidad de análisis de directorios (/test.asp/1.jpg)

En IIS5.x / 6.0, establecer el nombre de la carpeta en el sitio * .asp, *. Asa, *. Cer, *. Cdx carpetas, entonces cualquier extensión en sus archivos de catálogo son como IIS asp archivos de interpretar y ejecutar. Por ejemplo, crear un test.asp directorio, entonces /test.asp/1.jpg será tratado como archivo ASP para ejecutar. Suponemos que los hackers pueden controlar la ruta de carpeta de carga, se puede cargar sus imágenes sin tener en cuenta el cambio no puede ser renombrado a tomar la cáscara

 

Nombre del archivo vulnerabilidad de análisis (test.asp; .jpg)

En IIS5.x / 6.0, el punto y coma no se resuelve, que xie.asp; .jpg será visto como el servidor es xie.asp. Hay archivo ejecutable IIS6.0 predeterminado también contiene, además de estos dos asp .asa .cer. Y algunos sitios para verificar los usuarios subir archivos, simplemente marque su extensión. Así que sólo carga * .asp; .jpg, * ASA ;. .jpg, * cer ;. extensión de archivo .jpg, se puede comprobar a través del servidor, y el servidor se ejecutará como un archivo ASP.

 

la vulnerabilidad de análisis de formato incorrecto (test.jpg / *. php)

Microsoft ha publicado un parche para solucionar la vulnerabilidad IIS6.0 IIS7.0 y IIS7.0 explosión no esperar más severa deformidad de la vulnerabilidad de análisis, por lo que Microsoft dio a conocer un apresuradamente IIS7.5

En IIS7.0, el valor predeterminado Fast-CGI posición abierta, escribimos el siguiente código en la parte interior de imagen

 

Guarde el archivo en formato test.jpg y cargado en el servidor, en el supuesto de que el camino a la carga / carga, carga se ha realizado con éxito /upload/test.jpg/x.php acceso directo, esta vez la magia entra en juego la deformidad resolver el asunto. test.jpg será tratado como se ejecuta un archivo php del servidor, por lo que se ejecutará la imagen dentro del código. Vamos a descubrir la palabra mágica troyano crea un shell.php archivo en el directorio / carga.

 

Solución temporal: Conjunto cgi.fix_pathinfo a 0

 

La vulnerabilidad de análisis y la siguiente Nginx hablar de la vulnerabilidad de análisis es el mismo.

 

Otra vulnerabilidad de análisis

En el entorno de ventanas, xx.jpg [ espacio]   o  xx.jpg.   Estos dos tipos de archivos no se permite la existencia, de ser así llamado, Windows por defecto para eliminar un espacio o un hacker puede capturar, más el nombre del archivo un espacio o punto a la lista negra bypass. Si se elimina automáticamente subida exitosa, espacios y ventanas punto.

 

 

La vulnerabilidad de análisis Ngnix

la vulnerabilidad de análisis de formato incorrecto (test.jpg / *. php)

razones de vulnerabilidad:

 

cgi.fix_pathinfo archivo archivo de configuración php.ini PHP abierto

/etc/php5/fpm/pool.d/www.conf security.limit_extensions configuración incorrectos, lo que resulta en permitir que otros análisis del archivo de formato como la ejecución de PHP

En nginx <0.8.03 medio ambiente, crear un nuevo archivo, que dice: <? Php phpinfo ()>, su nombre cambió a: ?? Test.jpg

 

Acceso http://192.168.10.139/test.jpg imágenes para mostrar errores de análisis en el navegador. Acceso http://192.168.10.139/test.jpg/test.php en la pantalla del navegador: Acceso denegado .. Esto es extraño, test.jpg archivo no es un directorio, es prueba.php archivo inexistente, sin /test.jpg/test.php acceso reportó 404, sino que muestra Acceso denegado ..

 

 

 

La razón es que, Nginx obtener la ruta del archivo (más profesional que decir que URI) después /test.jpg/test.php, una mirada en el sufijo es .php, entonces el archivo se considera archivo php, luego fue trasladado a php que tratar. php /test.jpg/test.php un aspecto que no existe, a continuación, eliminar el último /test.php, y vea existen /test.jpg, dieron /test.jpg como un archivo para ser ejecutado, y porque el sufijo. jpg, php que esto no es un archivo php, a continuación, volver a la Acceso denegado ..

 

Que implica Opciones PHP: cgi.fix_pathinfo, el valor por defecto es 1, lo que indica abierta. Esta opción está abierta qué sirve? En el nombre es la ruta del archivo para su procesamiento. Por ejemplo, cuando un archivo se encuentra camino php /aaa.xxx/bbb.yyy/ccc.zzz, /aaa.xxx/bbb.yyy/ccc.zzz si no está presente, se eliminará el último /ccc.zzz, /aaa.xxx/bbb.yyy luego determinar si existe, si existe es decir, poner /aaa.xxx/bbb.yyy como /aaa.xxx/bbb.yyy/ccc.zzz archivo, si /aaa.xxx/bbb.yyy todavía no existe, y luego continuar para eliminar /bbb.yyy, y así sucesivamente.

 

Las opciones en el archivo de configuración php.ini. Si esta opción está desactivada, el acceso http://127.0.0.1/test.jpg/test.php sólo devuelve archivo no encontrado. Sin embargo, desactivar la opción probablemente conducirá a algún otro error, por lo general, está activado por defecto.

 

Pero ahora no hemos sido capaces de ejecutar con éxito el código, test.jpg no como se ejecuta un archivo PHP, pero volvió Acceso denegado, debido a que la nueva versión de security.limit_extensions introducidas php, lo que limita la extensión del archivo ejecutable, por defecto sólo se permite para ejecutar php archivo.

 

Esta vulnerabilidad se debe a la configuración incorrecta de Nginx en php causado nada que ver con la versión Nginx, pero en la versión de alta php, debido a las security.limit_extensions introducción, por lo que es difícil de ser explotado con éxito la vulnerabilidad.

 

¿Por qué es Nginx en php se tiene este problema? Sólo una mirada Nginx porque los extremos URL de nombre de ruta con .php, a continuación, independientemente de si existe el archivo, directamente al procesamiento de php. Y como Apache, etc., se analizará si el archivo existe, si existe y luego decidir qué hacer. cgi.fix_pathinfo es PHP tener, si antes del php determinar correctamente si el archivo ya existe, cgi.fix_pathinfo ha enviado ningún uso, este problema no existe en la naturaleza. (IIS y Nginx en este punto es el mismo, hay el mismo problema)

 

00% de la vulnerabilidad de análisis de código byte nulo

Principio: Ngnix 00% en la cara de null bytes y back-end proceso FastCGI debido a código PHP incompatible puede ser embebido en la imagen y luego ejecuta el código mediante el acceso a xxx.jpg% 00.php

 

En las siguientes versiones de nginx, integramos código PHP en la imagen y luego ejecuta el código accediendo xxx.jpg% 00.php

 

 Nginx 0.5. *

 Nginx 0.6. *

 Nginx 0,7 <= 0.7.65

 Nginx 0,8 <= 0.8.37

 

CVE-2013-4547 (% 20% 00)

La versión de nginx impacto: nginx 0.8.41 1.5.6 ~

 

El principio de esta vulnerabilidad es espacios ilegales y acabado de barra de caracteres (00%) conducirán a una máquina de estado finito cuando Nginx URI análisis confusión y poner en peligro permiten a un atacante eludir el espacio a través de un límite de no codificación de extensión. ¿Qué significa? Por ejemplo, supongamos que hay un archivo en el servidor: "archivo.jpg", anote el nombre de archivo del último carácter es un espacio. Se puede visitar:

 

http://127.0.0.1/file.jpg \ 0.php 

Deje que Nginx creo el archivo sufijo "archivo.jpg" ".php".

 

En virtud de las pruebas, las pruebas se realizaron en Nginx / 1.0.15 en. En primer lugar preparar un cuadro llamado "test.html", nota que el nombre de archivo contiene espacios. A continuación, acceder al archivo en un navegador, obtendrá un 404, ya que el navegador se codificará automáticamente como 20% espacios, el archivo "test.html% 20" no existe en el servidor.

 

Prueba objetivo es hacer Nginx creo que el archivo es un archivo de imagen y correcta aparece en el navegador. Lo que queremos es espacios no codificados y el carácter de corte (\ 0), cómo hacerlo? Eructo suite usando un paquete de solicitud enviado por el navegador obtener, queremos modificar la forma, la dirección URL original es: http: //192.168.56.101/test.htmlAAAjpg, la primera "A" a "20" ( código ASCII espacios símbolo), la segunda "a" a "00" (barra), el tercero "a" a "2E" ( "" código ASCII), como se muestra

 

 

 

Después de la modificación reenviar la solicitud en un navegador para ver:

 

 

 

Hemos utilizado con éxito una laguna! Pero ¿para qué sirve? Queremos que el código que se ejecuta.

 

Continuar con las pruebas, preparación de documentos "test.jpg", anote el nombre de archivo del último carácter es un espacio, cargado en el servidor. Contenido del archivo:

 

 

 

Burp Suite con la captura de paquetes y modificar la URL original es: http: //192.168.56.101/test.jpg...php, el jpg cambiado después del primer 20, segundo 00 lugar "" "". , como se muestra a continuación:

 

 

 

Después de la modificación forword la solicitud, se ve en el navegador: Acceso denegado, está bien, es esto.

 

Este Nginx muestra después de recibir esta solicitud, el archivo es de hecho "test.jpg" como un archivo PHP para PHP para llevar a cabo, sólo para ver la extensión del archivo php es ".jpg" y rechazado. De esta manera, Nginx verificará la existencia de la vulnerabilidad. Sin embargo, debido a la presencia de security.limit_extensions, lo que lleva no podemos explotar esta vulnerabilidad

 

La vulnerabilidad de análisis de Apache

Nombre del archivo de análisis de la vulnerabilidad

Apache determinación de comenzar se resuelve de derecha a izquierda, si no se reconoce el análisis, y luego a la izquierda de la determinación. Por ejemplo xie.php.owf.rar .owf y el sufijo .rar dos Apache análisis sintáctico irreconocible, Apache será analizada en el xie.php xie.php.owf.rar. Cómo determinar si era sufijo legal es la principal ventaja de esta prueba la vulnerabilidad puede tratar de subir una xie.php.rara.jpg.png .. (ya se sabe, son anotadas sufijos) para comprobar si es legítimo sufijo. No reconoce cualquier sufijo, la identificación progresivamente hacia arriba.

 

sufijo rara

Computer World desde la creación del mundo, liberará colorido. Recuerde archivo mime.types? Buscar en el "php" archivo de tres letras, los resultados son los siguientes:

  1.   Werner @ Yasser: ~ $ /etc/mime.types gato | php grep
  2.   # Application / x-httpd-php php phtml pht
  3.   # phps application / x-httpd-php-fuente
  4.   # Application / x-httpd-php3 php3
  5.   # Application / x-httpd-php3 preprocesado php3p
  6.   # Application / x-httpd-php4 php4
  7.   # Application / x-httpd-php5 php5

Recuerde que la expresión regular "+ \ pH (p [345] |? T | TML) .. $" Es la coincidencia de expresión regular no sólo tiene PHP, hay php3, PHP4, PHP5, PHT y phtml.

Bueno, no sólo los php original, incluso PHTML, PHT, php3, PHP4 y PHP5 php sufijos de archivo son Apache y PHP programa aprobado. Yo sólo era consciente de ".php", es realmente una revelación. Es como, no sólo es el sufijo py archivos de programa Python, también hay PYC y pyo. Subir los programadores escriben reglas de filtrado si bien, saber que el conocimiento de la misma? Creo que, probablemente, no lo sé. Con estos extensión "raro", es posible que los controles de seguridad de derivación, hacer algunas "cosas malas".

Estoy en Ubuntu14.04 + en la prueba Apache2.4.7, preparan documentos text.php, su contenido es el clásico Hola mundo:

  <? Php echo 'Hola mundo'; ?>

A continuación, abrirlo en un navegador, el programa de éxito "Hello World". Y luego modificar el sufijo de archivo para una variedad de sufijos, para la prueba. Los resultados de los exámenes a php, phtml, PHT, php3, php4 y php5 sufijo, pueden ver con éxito "Hello World"; a phps sufijo, se informará errores 403, prohibido; sufijo a php3p haría en un navegador ver el código fuente.

 

 

 

archivo .htaccess

archivo .htaccess de Apache es un servidor de archivos de configuración, que es responsable de la página de configuración en el directorio correspondiente. A través archivo .htaccess, puede: página 301 redirecciones, página 404 personalizada de error, cambiar la extensión del archivo para permitir / bloquear el acceso a usuarios específicos o directorio está prohibido el listado de directorios, configurar el documento predeterminado cuenta como no existe plataforma IIS archivo, que está activado por defecto, habilitar y deshabilitar la configuración en el archivo httpd.conf.

 

 archivo .htaccess es un requisito previo para la entrada en vigor:

módulo mod_rewrite para abrir

AllowOverride All

 

# 1: .htaccess Esto significa que todos los archivos que contienen el nombre de la secuencia de comandos shell para ejecutar como php

<FilesMatch "cáscara"> 

aplicación SetHandler / x-httpd-php 

</ FilesMatchc>

 

# 2: Este es el significado del código permite que el formato de archivo de nombre de archivo .jpg extensión de análisis con formato php

AddType application / x-httpd-php .jpg

Supongo que te gusta

Origin www.cnblogs.com/vege/p/12444476.html
Recomendado
Clasificación