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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/mbechler/marshalsec
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト論文と研究学習と教育レッドチーミングペイロード開発
GitHubmbechler/marshalsec

marshalsec

リポジトリを見る
3.7k6781年前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 - ガジェット固有の引数

以下のマーシャラー向けのペイロードジェネレータが含まれています:

引数と追加の前提条件

システムコマンドの実行

  • 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をインストールした状態で実行されます。 これが機能するには、使用中のロード済みクラスが何らかのセキュリティマネージャチェックをトリガーする必要があります。

ツールをダウンロード
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