ffuf-fuzz について
Webファジングにおける ffuf の使い方をまとめたセキュリティ向けリファレンスです。パス探索、パラメーターや仮想ホストの列挙、複数位置への入力、レスポンスの絞り込みを扱います。
主な機能
- 01ディレクトリーとファイルの探索
- 02パラメーターのファジング
- 03仮想ホストの列挙
- 04複数位置へのファジング
- 05レスポンスの照合と絞り込み
活用シーン
- 01Webパスやバックアップファイルの発見
- 02隠れたパラメーターのテスト
- 03仮想ホストの列挙
- 04スキャン結果のノイズ除去
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wgpsec/ aboutsecurity --skill ffuf-fuzzインストール後、Claude Code で/ffuf-fuzzを入力して読み込まれたか確認します。
詳細
ffuf ファジングツール完全リファレンス
ffuf(Fuzz Faster U Fool)は、最も柔軟な Web ファジングツールです。基本概念:FUZZ キーワードで置換する位置を示します。
フェーズ 1:ディレクトリ/ファイルの発見(最もよく使われます)
# 基础目录扫描
ffuf -u http://target/FUZZ -w /usr/share/seclists/Discovery/Web-Content/common.txt
# 指定扩展名
ffuf -u http://target/FUZZ -w /usr/share/seclists/Discovery/Web-Content/common.txt \
-e .php,.html,.txt,.bak,.zip
# 递归扫描(发现目录后继续深入)
ffuf -u http://target/FUZZ -w wordlist.txt -recursion -recursion-depth 2
# 大字典深度扫描
ffuf -u http://target/FUZZ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \
-e .php,.asp,.jsp -t 50
ワードリストの選択
| シナリオ | 推奨ワードリスト |
|---|---|
| 高速スキャン | Discovery/Web-Content/common.txt (4660) |
| 中程度のスキャン | Discovery/Web-Content/directory-list-2.3-small.txt (87k) |
| 詳細スキャン | Discovery/Web-Content/directory-list-2.3-medium.txt (220k) |
| バックアップファイル | Discovery/Web-Content/common-and-backup.txt |
| API パス | Discovery/Web-Content/api/api-endpoints.txt |
| CTF でよく使われるもの | /pentest/AboutSecurity/Dic/web/ctf/ |
フェーズ 2:パラメータのファジング(隠しパラメータの発見)
# GET 参数发现
ffuf -u 'http://target/page.php?FUZZ=test' \
-w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt \
-fs 4242 # 过滤默认响应大小
# GET 参数值 Fuzz
ffuf -u 'http://target/page.php?id=FUZZ' \
-w /usr/share/seclists/Fuzzing/integers-1-1000.txt
# POST 参数发现
ffuf -u 'http://target/api' -X POST \
-d 'FUZZ=test' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt \
-fs 4242
# JSON 参数 Fuzz
ffuf -u 'http://target/api' -X POST \
-d '{"FUZZ":"test"}' \
-H 'Content-Type: application/json' \
-w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt \
-fs 4242
CTF 専用パラメータワードリスト:/pentest/AboutSecurity/Dic/web/ctf/param.txt
フェーズ 3:仮想ホスト/サブドメインの列挙
# 虚拟主机枚举(通过 Host 头)
ffuf -u http://target/ -H 'Host: FUZZ.target.com' \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
-fs 4242 # 过滤默认页面大小
フェーズ 4:複数位置のファジング
ffuf は複数の FUZZ キーワードをサポートしています(異なる名前で区別します)。
# 用户名+密码爆破
ffuf -u http://target/login -X POST \
-d 'username=HFUZZ&password=WFUZZ' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-w users.txt:HFUZZ -w passwords.txt:WFUZZ \
-fc 401 # 过滤 401 响应
# 目录+扩展名组合
ffuf -u http://target/W1FUZZ.W2FUZZ \
-w dirs.txt:W1FUZZ -w extensions.txt:W2FUZZ \
-mode clusterbomb # 所有组合(笛卡尔积)
ファジングモード
| モード | 説明 | シナリオ |
|---|---|---|
clusterbomb | すべての組み合わせ(デフォルト) | ユーザー名×パスワード |
pitchfork | 1 対 1 で対応 | 対応関係が分かっている認証情報 |
sniper | 1 つのワードリストを位置ごとに適用 | 1 つのパラメータの複数位置 |
フェーズ 5:フィルターとマッチ(重要!)
ffuf はデフォルトですべてのレスポンスを表示するため、ノイズをフィルターする必要があります。
フィルター(不要なものを除外)
| パラメータ | 役割 | 例 |
|---|---|---|
-fc | ステータスコードをフィルター | -fc 404,403,500 |
-fs | レスポンスサイズをフィルター | -fs 4242 |
-fw | レスポンス内の単語数をフィルター | -fw 12 |
-fl | レスポンスの行数をフィルター | -fl 5 |
-fr | 正規表現に一致するものをフィルター | -fr 'not found' |
-ft | レスポンス時間をフィルター | -ft '>3000'(>3秒) |
マッチ(必要なものだけを表示)
| パラメータ | 役割 | 例 |
|---|---|---|
-mc | ステータスコードにマッチ | -mc 200,301,302 |
-ms | レスポンスサイズにマッチ | -ms 1234 |
-mw | レスポンス内の単語数にマッチ | -mw 100-500 |
-mr | 正規表現にマッチ | -mr 'flag\{.*\}' |
ヒント:まずフィルターを付けずに一度実行し、デフォルトのレスポンスサイズを確認してから、-fs で除外します。
フェーズ 6:よく使うオプション
# 线程数(默认 40,可调高)
-t 100
# 延迟(避免被封,单位秒;0.1 = 100ms)
-p 0.1
# 请求速率限制(每秒请求数)
-rate 50
# 自定义 Cookie
-b 'session=abc123; token=xyz'
# 自定义 Header
-H 'Authorization: Bearer TOKEN'
-H 'X-Forwarded-For: 127.0.0.1'
# 代理
-x http://127.0.0.1:8080
-x socks5://127.0.0.1:1080
# 输出到文件
-o results.json -of json
-o results.csv -of csv
-o results.html -of html
# 自动校准(自动检测过滤基线)
-ac
# 跟随重定向
-r
# 超时(秒)
-timeout 10
# 静默模式(只输出结果)
-s
実践シナリオ早見表
| シナリオ | コマンド |
|---|---|
| 高速なディレクトリスキャン | ffuf -u URL/FUZZ -w common.txt -mc 200,301,302 |
| PHP ファイルのスキャン | ffuf -u URL/FUZZ -w common.txt -e .php -mc 200 |
| 隠しパラメータの検索 | ffuf -u 'URL?FUZZ=1' -w burp-parameter-names.txt -fs SIZE |
| LFI パラメータのファジング | ffuf -u 'URL?FUZZ=../../../etc/passwd' -w param.txt -mr 'root:' |
| サブドメインの列挙 | ffuf -u URL -H 'Host: FUZZ.target' -w subdomains.txt -fs SIZE |
| ログインへのブルートフォース | ffuf -u URL -X POST -d 'user=admin&pass=FUZZ' -w passwords.txt -fc 401 |
| API エンドポイントの発見 | ffuf -u URL/api/FUZZ -w api-endpoints.txt -mc 200,401,403 |
| バックアップファイルの検索 | ffuf -u URL/FUZZ -w common.txt -e .bak,.zip,.tar.gz,.sql -mc 200 |
注意事項
-acによる自動キャリブレーションは非常に便利です。デフォルトのレスポンスを自動検出してフィルターするため、-fsを手動で設定する手間を減らせます- ffuf のデフォルトは 40 スレッドです。脆弱なターゲットでは速すぎて 429 や IP ブロックが発生する可能性があるため、
-t 10 -p 0.1に減らしてください - ワードリストのパス:SecLists は通常
/usr/share/seclists/に、AboutSecurity のワードリストは/pentest/AboutSecurity/Dic/にあります - POST のファジングでは Content-Type ヘッダーを必ず指定してください。指定しないと、サーバーが解析しない場合があります
- 複数位置のファジングはデフォルトで clusterbomb(直積)です。大きなワードリストでは組み合わせ数が爆発するため、ワードリストのサイズに注意してください
コメント
Markdown 対応