
Laboratorio Docker educativo para Apache HTTP Server 2.4.49 path traversal y RCE (CVE-2021-41773) con investigación de CVE, exploit PoC, evidencia de pruebas y guía de mitigación.
⚠️ SOLO para uso educativo en laboratorios aislados. Este repositorio construye un servidor Apache deliberadamente vulnerable. Nunca lo ejecutes en un host en producción, activo o expuesto a internet.
Proyecto de prácticas de Red Team de Team Alpha (ITSOLERA — Seguridad Ofensiva / Desarrollo de Exploits para un CVE conocido). El trabajo está dividido en seis carpetas de tareas para que cada miembro pueda contribuir mediante su propia pull request.
📄 Informe final: 06-final-report/CVE-2021-41773-Final-Report.pdf
Apache 2.4.49 decodifica un punto codificado como %2e después de su comprobación de normalización de rutas,
por lo que /files/.%2e/.%2e/.%2e/.%2e/etc/passwd escapa del directorio raíz de documentos. Con
mod_cgi habilitado, el mismo truco contra /bin/sh permite la ejecución remota de código.
| Carpeta | Responsable | Entregable | Estado |
|---|---|---|---|
01-cve-research/ | Fatima Bente Mustafa | Resumen del CVE, versiones afectadas, causa raíz, CVSS, referencias | ✅ Hecho |
02-lab-setup/ | Emaar Ejaz | Laboratorio Docker con Apache 2.4.49 vulnerable + SETUP.md | ✅ Hecho |
03-vulnerability-analysis/ | Anum Aamir Sajjad | ANALYSIS.md + evidence-log.txt | ✅ Hecho |
04-exploit-poc/ | Noor Saba Basit | cve-2021-41773.py + exploit.sh + lógica | ✅ Hecho |
05-testing-evidence/ | Sana Tariq | Capturas de pantalla, salida de terminal, registros del servidor | ✅ Hecho |
06-final-report/ | Muhammad Hammad | Informe final compilado (PDF) + mitigación | ✅ Hecho |
El objetivo vulnerable se encuentra en 02-lab-setup/. Desde dentro de esa
carpeta:
docker build -t cve-2021-41773-lab:2.4.49 .
docker run -d --name apache-2449-vuln -p 127.0.0.1:8080:80 cve-2021-41773-lab:2.4.49
Consulta 02-lab-setup/SETUP.md para la guía completa de configuración,
verificación, recopilación de evidencias y resolución de problemas.
Actualiza a Apache HTTP Server 2.4.51 o posterior. Como defensa en profundidad, mantén
<Directory /> en Require all denied por defecto y concede acceso solo donde sea necesario.