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, (^^ゞ