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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
jdam — 構造認識型JSONファザー | Kitploit
ツール/GitLabGitLab/michenriksen/jdam
脆弱性分析ウェブアプリケーション悪用ファジングペネトレーションテスト
GitLabmichenriksen/jdam

jdam

構造認識型JSONファザー

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

人気

すべて見る →

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

すべてのツールを探索

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

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

jdam - 構造認識型JSONファジング

jdam

jdamは、Radamsaに触発されたツールで、任意のJSONオブジェクトを構造を考慮した方法でファジングし、ファジング結果が常に有効なJSONであることを保証します。

既存の多くのファジングツールは入力を盲目的に変更し、結果が無効なJSONになることがよくあります。これにより、ファズテストはターゲットアプリケーションのJSONパーサーのみを実行し、リクエストが無効であるため、ファズテストが基盤となるアプリケーションコードに到達することはありません。Jdamはこの問題を解決する試みです。

jdamには、ファジングデータを処理するシステムの潜在的な問題や脆弱性を発見することを目的とした、いくつかの突然変異モジュールが付属しています。一部のモジュールは、ランダムバイトの削除、置換、交換、繰り返し、ブール値の反転、数値の否定など、ランダムな変更を実行します。一方、他のモジュールは、以下のような特定の脆弱性タイプをトリガーしようとするペイロードに値を置き換えます。

  • [SQLインジェクション]
  • [コマンドインジェクション]
  • [LDAPインジェクション]
  • [NoSQLインジェクション]
  • [フォーマット文字列インジェクション]
  • [ローカルファイルインクルージョン]
  • [整数オーバーフロー]
  • その他

利用可能なミューテーターの完全なリストを表示するには、jdam -list を使用します。

注意

jdamはまだかなり粗削りであり、エラーが発生することが予想されます。しかし、冒険心のあるユーザー向けにリリースできる程度には安定していますが、今のところはアルファ版ソフトウェアとして扱ってください!

インストール

プリビルドの[リリース]をオペレーティングシステム用にダウンロードするか、リポジトリをクローンして go build -o jdam cmd/jdam/* でコンパイルしてください。

使用法

root@kitploit:~
Usage of jdam:
  -count int
    	Number of fuzzed objects to generate (default 1)
  -ignore string
    	Comma-separated list of fields to exclude from fuzzing
  -list
    	List available mutators
  -max-depth int
    	Maximum object depth to fuzz (default 100)
  -mutators string
    	Comma-separated list of mutator IDs to use (default: all)
  -nil-chance float
    	Probability of value being set to nil (between 0 (no nils) and 1 (all nils)) (default 0.75)
  -output string
    	Output file pattern to use for results (e.g. /tmp/jdam-%d.json)
  -rounds int
    	Number of times to fuzz object (default 1)
  -seed int
    	Seed to use for pseudo-random number generator (default: current UNIX timestamp)
  -verbose
    	Print activity information
  -version
    	Print current jdam version

jdamは、有効なJSONオブジェクト({...})をパイプで渡すことで動作します。デフォルトでは、jdamはランダムなフィールドに対して1つのランダムな置換を実行し、結果のJSONオブジェクトを出力します。

root@kitploit:~
$ echo '{"hello":"world"}' | jdam
{"hello":{"id":1}}

対象のJSONは、-rounds フラグを使用して複数回変異させることができます。ただし、以前のファジングペイロードも変異される可能性があることに注意してください。

root@kitploit:~
$ echo '{"hello":"world"}' | jdam -rounds 10
{"hello":{"_constructor":"${42*444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444442}"}}

複数のファジングオブジェクトは、-count フラグを使用して生成できます。

root@kitploit:~
$ echo '{"hello":"world"}' | jdam -count 10
{"hello":"sorld"}
{"hello":"../../../../../../../../../../../../../../../../../../../../etc/passwd"}
{"hello":"{{42*42}}"}
{"hello":null}
{"hello":"' \u0026\u0026 this.password.match(/.*/)//+\u0000"}
{"hello":{"$where":"1"}}
{"hello":"null"}
{"hello":"\";touch /tmp/jdam.70797.fail'"}
{"hello":null}
{"hello":"|| 1==1"}

結果をファイルに書き込む

jdamは、コマンドのSTDOUTを使用する代わりにテストファイルを準備したい場合、ファジング結果を個別のファイルに書き込むことができます。

root@kitploit:~
$ echo '{"hello":"world"}' | jdam -count 10 -output "/tmp/jdam-%d.json"

上記のコマンドは、/tmp に jdam-1.json から jdam-10.json までの10個のファイルを生成します。特別な %d 動詞は自動的に連番に置き換えられ、結果を個別のファイルに書き込むことができます。

フィールドを無視する

jdamが対象のJSONオブジェクト内の特定のフィールドを決して変異させないようにしたい場合は、-ignore フラグを使用して無視するように指示できます。

root@kitploit:~
$ echo '{"id":13,"articleId":37,"comment":"Hello"}' | ./jdam -count 10 -ignore id,articleId
{"id":13,"articleId":37,"comment":"%x%x%x%x"}
{"id":13,"articleId":37,"comment":"search=')] | //user/*[contains(*,'"}
{"id":13,"articleId":37,"comment":"' and count(/comment())=1 and '1'='1"}
{"id":13,"articleId":37,"comment":"\u0016ello"}
{"id":13,"articleId":37,"comment":"/"}
{"id":13,"articleId":37,"comment":null}
{"id":13,"articleId":37,"comment":"{{{42*42}}}"}
{"id":13,"articleId":37,"comment":"@*"}
{"id":13,"articleId":37,"comment":"Helloooooooooooooooo"}
{"id":13,"articleId":37,"comment":"//*"}

jdamをFfufと一緒に使う

ffufは素晴らしいWebファザーであり、jdamはファジングの入力として簡単に使用できます。

root@kitploit:~
ffuf -input-cmd 'cat subject.json | jdam -rounds 3' -d FUZZ -u http://localhost/api/todos/1 -X PUT -v -mc 500 -mr 'error|failed|failure|fault|abort|root:|1764|0x|\d{20}' -od /tmp/ffuf_test

上記のコマンドは、ffufにjdamからファジング入力を取得させ、それをリクエストボディとして PUT /api/todos/1 に送信するように指示します。レスポンスが 500 Internal Server Error であるか、レスポンスボディに特定の興味深い文字列が含まれている場合、リクエストとレスポンスの詳細が tmp/ffuf_test/ に書き込まれます。

jdamをパッケージとして使う

Goを知っていて、非常に特殊なファジングが必要な場合は、独自のGoコード内でjdamを使用できます。使用例については examples/ フォルダを参照してください。

注目すべき点

ファジングは、特定の変異が問題を引き起こしたか、脆弱性をトリガーしたかを検出できなければ役に立ちません。これらの兆候はターゲットシステムや環境によって異なりますが、以下にいくつかの良い一般的な注意点を示します。

  1. クラッシュ: ターゲットシステムが接続を受け付けなくなった場合、メモリ破壊バグによってクラッシュした可能性が高いです。最後のリクエストを再実行し、クラッシュが再現できるか確認してください。
  2. 異常に遅いレスポンス: リクエストによりサーバーの応答が異常に遅くなる場合、ペイロードが基盤システムに問題を引き起こしたか、データベースに sleep を指示した可能性が高いです。
  3. 異常に大きなレスポンス: レスポンスが平均と比較して異常に大きい場合、返されることを意図していなかった興味深いデータが含まれている可能性があります。
  4. 500 Internal Server Error およびその他のエラーレスポンス: これらは通常、ペイロードがアプリケーションで予期しない、または未処理のエラーをトリガーした場合に発生します。
  5. エラーおよび失敗のキーワード: error、failure、failed などのエラー関連キーワードを含むレスポンス。
  6. /etc/passwd ファイルの内容: すべてのローカルファイルインクルージョンペイロードは、予測可能なコンテンツを得るために /etc/passwd ファイルを含めようとします。そのため、root: を含むレスポンスは非常に興味深いです!
  7. マジックナンバー1764: すべてのテンプレートインジェクションペイロードは、脆弱なテンプレートエンジンに 42*42 を評価させようとします。これは 1,764 になります。この数値がレスポンスに現れた場合、システムがテンプレートインジェクションに対して脆弱である可能性が高いです。
  8. 0x と長い数値: レスポンスに 0x に続く長い16進数文字列または長い数値文字列が含まれている場合、ペイロードがフォーマット文字列の脆弱性をトリガーしたことを示している可能性があります。
  9. /tmp/jdam.*.fail の存在: すべてのコマンドインジェクションペイロードは、システムの /tmp フォルダに jdam.<number>.fail という名前のファイルを作成しようとします。番号はランダムな5桁の数字で、責任のあるペイロードを特定しやすくなります。

トロフィールーム

jdamはまだ非常に新しいツールであり、まだ良いバグは発見されていません。jdamがCVEの獲得や素晴らしいバグ報奨金獲得に役立った場合は、ぜひお知らせください。喜んでここにあなたのレポートや記事へのリンクを掲載します。:)

謝辞

以下のプロジェクトに感謝の意を表します。

  • インスピレーションの元であるRadamsa
  • jdamのコーディング方法のアイデアを与えてくれたgofuzz
  • ファジングペイロードの提供元であるSecListsとPayloadsAllTheThings
  • Webアプリケーションに対してjdamを非常に簡単に使用できるようにしてくれたffuf

Happy Fuzzing!

ツールをダウンロード