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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
marshalsec — 複数のマーシャラー(Jackson、XStream、SnakeYAML)用のペイロードジェネレーターと、リモートコード実行のためのJNDI参照間接化を備えたJava逆シリアル化の脆弱性悪用ツール。 | Kitploit
ツール/GitHubGitHub/mbechler/marshalsec
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト論文と研究学習と教育レッドチーミングペイロード開発
GitHubmbechler/marshalsec

marshalsec

複数のマーシャラー(Jackson、XStream、SnakeYAML)用のペイロードジェネレーターと、リモートコード実行のためのJNDI参照間接化を備えたJava逆シリアル化の脆弱性悪用ツール。

リポジトリを見る
3.7k67881年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

Java Unmarshaller Security - データをコード実行に変える

Log4Shell/CVE-2021-44228を探してここに来た場合は、攻撃ベクトルと影響を受けるJavaランタイムバージョンについて読むとよいでしょう: https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/

論文

Chris Frohoff氏とGarbriel Lawrence氏がJavaオブジェクトデシリアライゼーションの脆弱性に関する研究を発表してから2年以上が経過しました。この研究は、最終的にJavaの歴史における最大のリモートコード実行バグの波と評されるものをもたらしました。

この問題に関する調査は、これらの脆弱性がJavaシリアライゼーションやXStreamほど表現力豊かなメカニズムに限ったものではなく、他のメカニズムにも適用できる可能性があることを示しました。

本論文は、攻撃者が提供する任意の型のアンマーシャリングを可能にする(または可能にしていた)さまざまなJavaオープンソースマーシャリングライブラリの分析と、その悪用の詳細を提示し、このプロセスがどのように実行され、どのような暗黙の制約があるかにかかわらず、同様の悪用手法に対して脆弱であることを示します。

完全な論文は marshalsec.pdf にあります。

免責事項

すべての情報とコードは、教育目的および/またはこれらの脆弱性について自身のシステムをテストする目的でのみ提供されています。

使用方法

Java 8が必要です。Mavenを使用してビルドします mvn clean package -DskipTests。次のように実行します。

root@kitploit:~
java -cp target/marshalsec-[VERSION]-SNAPSHOT-all.jar marshalsec.<Marshaller> [-a] [-v] [-t] [<gadget_type> [<arguments...>]]

ここで

  • -a - そのマーシャラー向けのすべてのペイロードを生成/テストします
  • -t - テストモードで実行し、生成後に生成されたペイロードをアンマーシャリングします。
  • -v - 冗長モード。テストモードで生成されたペイロードも表示します。
  • gadget_type - 特定のガジェットの識別子。省略すると、そのマーシャラーで利用可能なものが表示されます。
  • arguments - ガジェット固有の引数
  • 以下のマーシャラー向けのペイロードジェネレータが含まれています:

    MarshallerGadget Impact
    BlazeDSAMF(0|3|X)JDKのみでJavaシリアライゼーションへ昇格
    さまざまなサードパーティライブラリのRCE
    Hessian|BurlapさまざまなサードパーティのRCE
    Castor依存ライブラリのRCE
    JacksonJDKのみでRCEの可能性、さまざまなサードパーティのRCE
    Javaまた別のサードパーティのRCE
    JsonIOJDKのみのRCE
    JYAMLJDKのみのRCE
    KryoサードパーティのRCE
    KryoAltStrategyJDKのみのRCE
    Red5AMF(0|3)JDKのみのRCE
    SnakeYAMLJDKのみのRCE
    XStreamJDKのみのRCE
    YAMLBeansサードパーティのRCE

    引数と追加の前提条件

    システムコマンドの実行

    • cmd - 実行するコマンド
    • args... - 引数として渡される追加パラメータ

    前提条件はありません。

    リモートクラスローディング(プレーン)

    • codebase - リモートコードベースへのURL
    • class - ロードするクラス

    前提条件:

    • Javaクラスパスを何らかのパスでホストするWebサーバーをセットアップします。
    • ロードするコンパイル済みクラスファイルは、Javaクラスパスの規約に従って提供される必要があります。

    リモートクラスローディング(ServiceLoader)

    • service_codebase - リモートコードベースへのURL

    ロードするサービスは、現在 javax.script.ScriptEngineFactory にハードコードされています。

    前提条件:

    • プレーンのリモートクラスローディングと同じです。
    • また、/META-INF/javax.script.ScriptEngineFactory に、対象クラス名をプレーンテキストで含むプロバイダ設定ファイルが必要です。
    • そこで指定されたターゲットクラスは、サービスインターフェース javax.script.ScriptEngineFactory を実装する必要があります。

    JNDIリファレンスの間接参照

    • jndiUrl - ルックアップをトリガーするJNDI URL

    前提条件:

    • リモートクラスローディングと同じように、リモートコードベースをセットアップします。
    • そのコードベースを指すJNDIリファレンスリダイレクタサービスを実行します。marshalsec.jndi.LDAPRefServer と RMIRefServer の2つの実装が含まれています。
      root@kitploit:~
      java -cp target/marshalsec-[VERSION]-SNAPSHOT-all.jar marshalsec.jndi.(LDAP|RMI)RefServer <codebase>#<class> [<port>]
      
    • そのサービスが待ち受けているアドレスを指す (ldap|rmi)://host:port/obj を jndiUrl として使用します。

    テストの実行

    テストを実行する際の引数を制御するシステムプロパティがいくつかあります(maven経由または -a 使用時)。

    • exploit.codebase、デフォルトは http://localhost:8080/
    • exploit.codebaseClass、デフォルトは Exploit
    • exploit.jndiUrl、デフォルトは ldap://localhost:1389/obj
    • exploit.exec、デフォルトは /usr/bin/gedit

    テストは、システムコマンドの実行とリモートコードベースからのコード実行をチェックするSecurityManagerをインストールした状態で実行されます。 これが機能するには、使用中のロード済みクラスが何らかのセキュリティマネージャチェックをトリガーする必要があります。

    ツールをダウンロード