
Javaデシリアライゼーションの脆弱性の検出と悪用を行う、Burp Suite向けオールインワンプラグイン。
Java Deserialization Scanner は、Java デシリアライゼーションの脆弱性を検出・悪用するための Burp Suite プラグインです。HN Security のプリンシパルセキュリティアナリストである Federico Dotta によって作成されました。
このプラグインは、以下の3つの異なるコンポーネントで構成されています:
プラグインの各種コンポーネントの使用方法に関する簡単なミニチュートリアルを含む短い記事は、次の URL にあります: https://web.archive.org/web/20201130104913/https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/
Java Deserialization Scanner は、frohoff と gebl によって作成されたツール「ysoserial」の改良版で生成されたカスタムペイロードを使用して、Java デシリアライゼーションの脆弱性を検出します。元のツール (https://github.com/frohoff/ysoserial) は、Runtime.exec 関数を使用してシステム上でコマンドを実行するためのペイロードを生成します。しかし、通常はコマンドの出力を確認できないため、この種の関数に基づくスキャナを作成するのは簡単ではありません。このため、悪用ではなく問題の検出に役立つさまざまなタイプのペイロードを生成するために、改良版の ysoserial が使用されています:
現在、Java Deserialization Scanner のパッシブチェックは HTTP リクエスト内のシリアライズされた Java オブジェクトの存在を報告し、アクティブチェックは、以下の脆弱なライブラリの存在と組み合わせて、脆弱なデシリアライゼーション関数の有無を積極的にスキャンします:
さらに、脆弱なライブラリを一切使用せずに Java デシリアライゼーションを積極的に検出するための URLSNDS ペイロードが導入されました。プラグインが URLDNS の問題のみを検出した場合(脆弱なライブラリがない場合)、攻撃者はおそらく DoS 攻撃を実行できますが、リモートコード実行を達成するにはさらなる労力が必要です。詳細については、このリンク を参照してください。
プラグインのすべてのコンポーネントは、以下のエンコーディングをサポートしています:
test フォルダには、プラグインをテストするために使用できる簡単な Java サーバーアプリケーションがいくつかあります。各アプリケーションは、異なる脆弱な Java ライブラリを使用しています。
このプラグインは、カスタム挿入ポイントで sleep および DNS ペイロードを使用した検出を起動する専用タブを提供します。これにより、特殊なエントリポイントが原因でスキャナによる検出が不可能な特定の状況でも、Java デシリアライゼーションの脆弱性をチェックできます。マニュアルテスターの結果は、Burp Suite スキャナーの結果に挿入できます。
マニュアルテスターは、追加の検出方法として CPU 検出を提供します。CPU 検出方法は、Wouter Coekaerts の SerialDOS の研究 (https://gist.github.com/coekie/a27cc406fc9f3dc7a70d) に基づいており、デシリアライゼーションタスクに多くの CPU サイクルを消費するオブジェクトを使用して応答時間を確認することで、脆弱なライブラリが存在しない場合でもデシリアライゼーションの問題を検出できます。CPU 検出方法は、デフォルトではアクティブスキャンチェックに含まれていません。注意して使用する必要があるためです。大量の「軽量な」SerialDOS ペイロードを送信すると、古いシステムや高負荷のシステムに問題を引き起こす可能性があります。
Java デシリアライゼーションの脆弱性が発見された後、「Exploiting」専用タブを使用して、その問題を積極的に悪用することができます。「Exploiting」タブは、デシリアライゼーションの脆弱性を悪用するための快適なインターフェースを提供します。このタブは、ysoserial ツールを使用して悪用ベクターを生成し、生成されたペイロードを HTTP リクエストに含めます。ysoserial は、引数として脆弱なライブラリとコマンドを受け取り、シリアライズされたオブジェクトをバイナリ形式で生成します。これを脆弱なアプリケーションに送信して、ターゲットシステム上でコマンドを実行できます(明らかに、ターゲットアプリケーションが脆弱である場合)。Exploiting タブは、プラグインの検出セクションと同じエンコーディング形式をサポートしています。

この拡張機能を改善するために、プラグインで見つけた問題を報告してください。さらに、この弱点の悪用に役立つ公開済みの Java ライブラリを報告していただければ、時間があればプラグインにアクティブチェックを追加します。
このソフトウェアは、学術研究と効果的な防御技術の開発のみを目的として作成されており、明示的に許可された場合を除き、システムへの攻撃に使用することを意図したものではありません。プロジェクトのメンテナーは、ソフトウェアの誤用について責任を負いません。責任を持って使用してください。
Copyright (c) 2020 Java Deserialization Scanner
以下に定める条件に従い、本ソフトウェアおよび関連文書ファイル(以下「本ソフトウェア」)の複製を取得するすべての人に対し、本ソフトウェアを無制限に扱うことを無償で許可します。これには、本ソフトウェアの複製、変更、統合、公開、配布、サブライセンス、および/または販売の権利、および本ソフトウェアを提供された者にこれらの行為を許可する権利が、以下の条件に従うことを条件として含まれます。
上記の著作権表示およびこの許可表示は、本ソフトウェアのすべての複製または重要な部分に含めるものとします。
本ソフトウェアは「現状のまま」で提供され、明示的か黙示的かを問わず、商品適格性、特定目的への適合性、および非侵害についての保証を含む、いかなる保証もありません。いかなる場合も、著作者または著作権所有者は、本ソフトウェアに関連して発生した請求、損害、その他の責任について、契約、不法行為、その他の行為の如何を問わず、一切の責任を負いません。