
Javaシリアライズオブジェクトを消費するエンドポイントをプローブし、リモートJavaクラスパス上のクラス、ライブラリ、ライブラリバージョンを特定します。
あなたはちょうどJavaデシリアライゼーションのバグを発見し、ysoserialペイロードをすべて実行したのに、何も得られなかったとします。さて、どうしますか?完全に手掛かりがない状態で、ガジェットチェーンをデバッグしたり構築したりするにはどうすればよいでしょうか?
GadgetProbeの登場です。リモートクラスパスに光を当て、すべての人のバグの重大度を引き上げるツールです。
GadgetProbeはJavaクラスのワードリストを受け取り、シリアライズされたDNSコールバックオブジェクトを出力し、リモートクラスパスに潜んでいるものを報告します。
Burp拡張機能はBurp Collaboratorと自動的に統合し、DNSコールバックを処理します。また、この拡張機能には、ガジェットの一般的なソースとなるライブラリのバージョンを特定するためのシグネチャとアナライザも含まれています。
リリースをダウンロードするか、以下のビルド手順に従ってください。
Burp拡張機能をロードした後:

2. Javaクラスのリストを追加します(同梱のワードリストを参照)

3. GadgetProbeペイロードプロセッサと、チェーン内の他の必要なプロセッサ(例:Base64エンコード)を追加します。

4. Intruder攻撃を実行し、GadgetProbeのBurpタブに結果が返ってくるのを確認します。

GadgetProbeは、特殊な攻撃用のJavaライブラリまたはCLIとしても使用できます。
import com.bishopfox.gadgetprobe.GadgetProbe
...
// Call the GadgetProbe constructor with your authoritative nameserver (or use Burp collaborator).
GadgetProbe gp = new GadgetProbe("dnscallback.burpcollaborator.net");
// The crafted object "obj" is now ready to be sent using any custom implementation :)
Object obj = gp.getObject("org.apache.commons.collections.functors.invokertransformer");
# Build JAR (run first)
./gradlew shadowJar
# Build wordlists
./generate_wordlists.sh
Bishop Foxブログの私の解説記事をご覧ください。
Twitter: @theBumbleSec
GitHub: the-bumble