Pentesting JDWP - Java Debug Wire Protocol
脆弱性評価とペネトレーションテストのための即時利用可能なセットアップ。20以上のツールと機能を使用して、どこからでも完全なペンテストを実行できます。私たちはペンテスターを置き換えるのではなく、彼らがより深く掘り下げ、シェルをポップし、楽しむための時間を取り戻すために、カスタムツール、検出および悪用モジュールを開発しています。
Exploiting
JDWPの悪用は、プロトコルの認証と暗号化の欠如に依存しています。一般的にはポート8000で見られますが、他のポートも可能です。最初の接続は、ターゲットポートに「JDWP-Handshake」を送信することで行われます。JDWPサービスがアクティブであれば、同じ文字列で応答し、その存在を確認します。このハンドシェイクは、ネットワーク上のJDWPサービスを特定するためのフィンガープリンティング手法として機能します。
プロセス識別に関しては、Javaプロセス内で「jdwk」という文字列を検索することで、アクティブなJDWPセッションを示すことができます。
使用するツールはjdwp-shellifierです。さまざまなパラメータで使用できます:
--break-on 'java.lang.String.indexOf'
を使用すると、エクスプロイトがより安定します。また、ホストにバックドアをアップロードしてコマンドを実行する代わりにそれを実行する機会があれば、エクスプロイトはさらに安定します。
詳細
これはhttps://ioactive.com/hacking-java-debug-wire-protocol-or-how/の要約です。詳細については、こちらを確認してください。
JDWPの概要:
パケットベースのネットワークバイナリプロトコルで、主に同期的です。
認証と暗号化が欠如しており、敵対的なネットワークにさらされると脆弱です。
JDWPハンドシェイク:
通信を開始するためにシンプルなハンドシェイクプロセスが使用されます。デバッガ(クライアント)とデバッグ対象(サーバー)間で14文字のASCII文字列「JDWP-Handshake」が交換されます。
JDWP通信:
メッセージは長さ、ID、フラグ、コマンドセットなどのフィールドを持つシンプルな構造です。
コマンドセットの値は0x40から0x80までで、異なるアクションやイベントを表します。
エクスプロイト:
JDWPは任意のクラスとバイトコードをロードして呼び出すことを許可し、セキュリティリスクを引き起こします。
記事では、Javaランタイムの参照を取得し、ブレークポイントを設定し、メソッドを呼び出すという5つのステップからなるエクスプロイトプロセスが詳述されています。
実際のエクスプロイト:
ファイアウォール保護の可能性にもかかわらず、JDWPサービスは発見可能で、ShodanHQやGitHubなどのプラットフォームでの検索によって実際のシナリオでエクスプロイト可能です。
エクスプロイトスクリプトはさまざまなJDKバージョンに対してテストされており、プラットフォームに依存せず、信頼性のあるリモートコード実行(RCE)を提供します。
セキュリティの影響:
インターネット上にオープンなJDWPサービスが存在することは、定期的なセキュリティレビュー、プロダクション環境でのデバッグ機能の無効化、適切なファイアウォール設定の必要性を強調しています。
参考文献:
http://www.secdev.org/projects/scapy(no longer active)
http://www.hsc-news.com/archives/2013/000109.html (no longer active)
https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
脆弱性評価とペネトレーションテストのための即時利用可能なセットアップ。20以上のツールと機能を使用して、どこからでも完全なペンテストを実行できます。私たちはペンテスターを置き換えるのではなく、彼らがより深く掘り下げ、シェルをポップし、楽しむための時間を取り戻すためにカスタムツール、検出およびエクスプロイトモジュールを開発します。
Last updated