Colección de scripts en Bash, Python y NSE (Nmap) para detectar y verificar vulnerabilidades de Path Traversal / Directory Traversal en servidores web, incluyendo pruebas específicas para varios CVE conocidos.
- ¿Qué es Path Traversal?
- ¿Qué incluye este repositorio?
- Requisitos
- Instalación
- Uso rápido
- Scripts de explotación por CVE
- Herramientas generales
- Diccionario de payloads
- Ejemplo de ejecución
- Códigos de respuesta HTTP relevantes
- Aviso legal / Uso responsable
- Licencia
- Contribuciones
Path Traversal (también llamado Directory Traversal) es una vulnerabilidad web que permite a un atacante salir del directorio raíz de una aplicación y acceder a archivos y carpetas del sistema que no deberían ser accesibles públicamente.
Se explota manipulando parámetros de la URL o entradas de usuario que contienen rutas de archivo, insertando secuencias como ../ (o sus variantes codificadas: %2e%2e%2f, ..%c0%af, etc.) para navegar por el sistema de ficheros del servidor.
Cuando la validación de entradas es insuficiente, un atacante puede llegar a leer archivos sensibles como:
| Sistema | Archivo objetivo típico | Información expuesta |
|---|---|---|
| Linux/Unix | /etc/passwd |
Listado de usuarios del sistema |
| Linux/Unix | /etc/shadow |
Hashes de contraseñas (requiere privilegios) |
| Windows | windows/system32/cmd.exe o win.ini |
Ejecución/config. del sistema |
| Aplicaciones web | web.config, .env, config.php |
Credenciales, claves de API |
| Servidores | Logs, certificados, código fuente | Información interna del backend |
Ejemplo básico de payload:
curl --path-as-is -k -v http://<ip>:80/../../../../../etc/passwdEjemplo en Windows:
curl --path-as-is -k -v http://<ip>:80/../../../../../../windows/system32/cmd.exeEl flag
--path-as-isevita quecurlnormalice la ruta (eliminando los../) antes de enviarla al servidor.
| Categoría | Cantidad | Descripción |
|---|---|---|
| Exploits por CVE | 7 scripts .sh |
PoC dirigidas a vulnerabilidades específicas y conocidas |
| Herramientas de escaneo genérico | 6 scripts | Fuzzing y prueba masiva de payloads de traversal |
| Script Python | 1 (dir.py) |
Automatización de pruebas en Python |
| Script Nmap (NSE) | 1 (traversal.nse) |
Detección de traversal vía Nmap Scripting Engine |
| Script PHP | 1 (traversal.php) |
PoC / utilidad en PHP |
| Utilidades auxiliares | 3 scripts | Generación de certificados, gestión de URLs/SSL, actualización del diccionario |
| Diccionario de payloads | 1 (pathtraversal.txt, externo) |
Wordlist de rutas y payloads de traversal |
- Sistema Linux/Unix (probado en distribuciones tipo Debian/Ubuntu, Kali)
bashcurlpython3(paradir.py)nmap(paratraversal.nse)git(para clonar el repositorio y el diccionario asociado)- Permisos y autorización explícita para probar el objetivo (ver aviso legal)
git clone https://github.com/hackingyseguridad/directoriotraversal.git
cd directoriotraversal
chmod +x *.shPara obtener/actualizar el diccionario de payloads:
./actualizar.sh# Prueba genérica de Directory Traversal contra un objetivo
./directoriotraversal.sh <ip_o_dominio>
# Variante alternativa del escáner
./directoriotraversal2.sh <ip_o_dominio>
# Prueba específica sobre servidores Apache
./apache_path_traversal.sh <ip_o_dominio>
# Prueba de una CVE puntual (ejemplo: Apache Path Traversal 2021)
./CVE-2021-41773.sh <ip_o_dominio>Sustituye
<ip_o_dominio>por el host objetivo que tengas autorizado para auditar.
| Script | CVE | Producto / Componente afectado | Descripción breve |
|---|---|---|---|
CVE-2001-0333.sh |
CVE-2001-0333 | IIS / servidores web antiguos | Traversal clásico mediante codificación de caracteres en la URL |
CVE-2009-1535.sh |
CVE-2009-1535 | Servidor FTP / Web | Acceso a archivos fuera del directorio raíz |
CVE-2018-0296.sh |
CVE-2018-0296 | Cisco ASA / FTD (WebVPN) | Traversal que permite denegación de servicio y divulgación de información |
CVE-2018-13379.sh |
CVE-2018-13379 | Fortinet FortiOS SSL VPN | Lectura de archivos de sesión (credenciales VPN en texto claro) |
CVE-2019-11510.sh |
CVE-2019-11510 | Pulse Secure VPN | Lectura arbitraria de archivos sin autenticación |
CVE-2021-41773.sh |
CVE-2021-41773 | Apache HTTP Server 2.4.49 | Traversal por normalización de rutas, puede derivar en RCE si mod_cgi está activo |
CVE-2021-42013.sh |
CVE-2021-42013 | Apache HTTP Server 2.4.50 | Bypass del parche de CVE-2021-41773 |
| Script | Lenguaje | Función |
|---|---|---|
directoriotraversal.sh |
Bash | Escáner genérico de Path Traversal contra un objetivo |
directoriotraversal2.sh |
Bash | Versión alternativa/mejorada del escáner genérico |
dirhttp.sh |
Bash | Pruebas de traversal específicas sobre HTTP |
apache_path_traversal.sh |
Bash | Pruebas orientadas a servidores Apache |
dir.py |
Python | Automatización de pruebas de traversal en Python |
traversal.nse |
Lua (NSE) | Script para Nmap Scripting Engine, detección durante el escaneo de puertos |
traversal.php |
PHP | PoC / utilidad para pruebas desde entorno PHP |
probar.sh |
Bash | Lanzamiento de pruebas puntuales |
probarauto.sh |
Bash | Automatización de pruebas contra un objetivo |
probarauto2.sh |
Bash | Variante de la automatización anterior |
urlssl.sh |
Bash | Gestión/verificación de URLs sobre SSL |
generacert.sh |
Bash | Generación de certificados para pruebas sobre HTTPS |
actualizar.sh |
Bash | Descarga/actualiza el diccionario de payloads |
El repositorio utiliza un diccionario externo de rutas y payloads de traversal, mantenido en:
🔗 diccionarios/pathtraversal.txt
Se descarga/actualiza automáticamente con:
./actualizar.sh$ ./directoriotraversal.sh example.com
[+] Probando payloads de Directory Traversal contra example.com ...
[+] Cargando diccionario: pathtraversal.txt
[+] Payload: ../../../../etc/passwd -> 403 Forbidden
[+] Payload: ..%2f..%2f..%2fetc%2fpasswd -> 200 OK [POSIBLE VULNERABLE]
[+] Reporte guardado en resultados.txtEl resultado y formato exacto pueden variar según el script utilizado; revisa la salida de
-ho--helpde cada script si está disponible.
| Código | Significado | Relevancia en Path Traversal |
|---|---|---|
200 OK |
Solicitud exitosa | El payload pudo haber tenido éxito; revisar el contenido devuelto |
301 / 302 |
Redirección | El servidor puede estar normalizando la ruta antes de procesarla |
400 Bad Request |
Petición inválida | El servidor rechazó el formato de la ruta |
403 Forbidden |
Acceso denegado | Filtro o WAF bloqueando el intento |
404 Not Found |
Recurso no encontrado | La ruta no existe o el traversal no llegó al recurso esperado |
500 Internal Server Error |
Error del servidor | Puede indicar un comportamiento inesperado explotable |
Referencia completa: RFC 2616 - Códigos de estado HTTP
