Shikata Ga Nai

Private? There is no such things.

第12回 ファジング入門:自動で脆弱性を探すとは?

Hello there, ('ω')ノ

ファジングとは?

正式には「Fuzz Testing(ファズテスト)」と言います。

✅ やること:

  • 本来は想定していない変な値
  • ものすごく長い文字列や記号
  • 空欄や特殊な組み合わせ

これらを大量にシステムに送って、エラーが返ってくるか、挙動がおかしくならないかをチェックします。


具体例:こんな感じで使います

① 社内フォームの「氏名」入力欄 → 普通は「田中 太郎」

② そこに:

  • 10000文字の「ああああ……」
  • <script>alert(1)</script>
  • %00%01%02 といった制御文字

これらを自動で入れてみるのがファジングです。


なぜファジングが必要か?

人間の手作業だけでは、試すパターンがどうしても限られてしまいます。

特に:

  • 入力フォーム
  • URLパラメーター
  • APIリクエストボディ

これらは無数の組み合わせがあるため、自動化がとても有効です。


実務で使える無料ツール例

✅ OWASP ZAP(ザップ)

  • GUI付きで初心者でも使いやすい
  • 自動ファジング機能あり

✅ ffuf(エフファフ)

  • コマンドラインツール
  • ディレクトリやパラメーター探索に強い

✅ Burp Suite(バープ)

  • 有料版だとファジング機能が充実
  • 無料版でも一部利用可能

基本的な使い方ステップ(OWASP ZAPの場合)

① スキャン対象URLを登録 ② 「Fuzzer」機能を選択 ③ テストしたいパラメーターや入力欄を指定 ④ プリセットのテストパターンを選ぶ(SQLインジェクション用、XSS用など) ⑤ 実行 → 結果を確認


ファジング結果の見方ポイント

  • HTTP 500エラー → サーバー側処理落ち
  • レスポンス本文に「unexpected」「error」などの文字が含まれる
  • レスポンスタイムが異常に遅くなる

これらはすべて脆弱性につながる可能性があるサインです。


注意点:

  • 本番環境では基本的にやらない(サーバーダウンの危険あり)
  • 社内のテスト環境や許可された範囲内で実施すること
  • 自動で大量リクエストを送るため、ネットワーク負荷にも注意

まとめチェックリスト

  • [ ] ファジング対象URLやパラメーターを明確にしたか?
  • [ ] 無料ツールを使ってテスト範囲を決めたか?
  • [ ] 結果のHTTPステータスやエラー内容を記録したか?
  • [ ] 本番環境ではなくテスト環境で実施しているか?

Best regards, (^^ゞ