ffufは高速に動作するHTTPファジングツールです。
Burp Suite Community EditionはIntruderに制限があって非常に動作が遅く使い物になりませんが、ffufがあればそれをカバーできるでしょう。
本記事ではffufのインストール方法から使い方まで詳しく解説していきます。また、似たようなツールであるdirsearchとの使い分けについても解説します。
ffufとは?
ffufはGo 言語で書かれた軽量かつ高速な HTTP ファジングツールです。
特定のパラメータやパスをワードリストで置換して多数のリクエストを送信し、応答のステータスコード・サイズ・行数・ワード数などをもとに有用な候補を抽出します。
Burp Suite の Intruder と比較すると、特に高速性と柔軟な指定に優れています。
ffufのインストール方法
代表的な方法を挙げます。環境に合わせて選択してください。
Kali / apt(簡易)
Kali Linuxであればsudo apt -y install ffufコマンドでインストールできます。
sudo apt -y install ffuf
GitHub からバイナリ・ソース入手
あるいはGitHubから入手することもできます。
公式リポジトリhttps://github.com/ffuf/ffuf
ソースからビルド(Golang が必要)
git clone https://github.com/ffuf/ffuf.git
cd ffuf
go build
ビルドが不要であれば、公式リリースのバイナリをダウンロードして配置する方が簡単です。
ffufの基本的な使い方
ffuf は FUZZ と書いた箇所をワードリストの語で置換してリクエストを送信します。ワードリストは -w、ターゲットURLは -u を指定します。
GET パラメータをファジングする
ffuf -u 'http://example.com?login_username=admin&login_password=FUZZ' -w /path/to/wordlist
POST データをファジングする
POSTメソッドを使う場合は-dオプションでデータ部分を指定します。
ffuf -u http://example.com -d "login_username=admin&login_password=FUZZ" -w /path/to/wordlist
リクエストファイルを使用する(Burp 連携)
複雑なリクエストやクッキー付きのセッションを再現したい場合は、Burp などで保存したリクエストファイルを -request で読み込めます。
ffuf -request /path/to/file -w /path/to/wordlist
リクエストファイルは次のようにして保存します。

HTTPヘッダーを指定する
-Hオプションを使うとHTTPヘッダーを指定・追加できます。-Hオプションは複数回指定できるので、2つ以上HTTPヘッダーを追加したい場合は-Hオプションを複数指定します。
ffuf -H "User-Agent: FUZZ" -H "X-Forwarded-For: 127.0.0.1" -u http://example.com
出力のフィルタ(不要なノイズを除外)
ffuf の結果は大量になるため、フィルタを使って不要な結果を除外します。初期設定で 404 はフィルタされています。
一度ffufを実行してみて、あまりに多くの表示がある場合はフィルター条件を指定して出力を抑えたり、マッチ条件を指定して特定の条件に一致した場合のみ表示するようにします。
まずはffufで出力される結果を見ます。各リクエストごとに次のように表示されるはずです。
[Status: 200, Size: 13844, Words: 600, Lines: 273, Duration: 414ms]
上記の結果から次のことが分かります。
- 応答コードは
200 - 応答サイズは
13844 - 応答文字数は
600 - 応答行数は
273 - 応答時間は
414ms
これらの値を見ながらフィルター条件やマッチ条件を決めていきます。
特定の条件を指定して表示させないようにフィルターするには次のオプションを使います。
-fc応答コードでフィルターする(複数指定可)-fl応答行数でフィルターする(複数指定可)-frフィルター条件を正規表現で指定する-fs応答サイズでフィルターする(複数指定可)-ft応答時間でフィルターする(応答時間が100msを超える場合をフィルタするなら-ft '>100')-fw応答文字数でフィルターする(複数指定可)
例:応答コード404と403を除外する
ffuf -fc 404,403 -u http://example.com/FUZZ -w /path/to/wordlist
マッチ条件(必要なものだけ表示)
特定の条件を指定して、条件にマッチしたものだけ表示させるには次のオプションを使います。
-mc応答コードでマッチします(複数指定可)※-mc allですべての応答コードにマッチさせる-ml応答行数でマッチします(複数指定可)-mrマッチ条件を正規表現で指定する-ms応答サイズでマッチする(複数指定可)-mt応答時間でマッチする(応答時間が100msを超える場合にマッチさせるなら-mt '>100')-mw応答文字数でマッチする(複数指定可)
例:応答コード200と302のみ表示する
ffuf -mc 200,302 -u http://example.com/FUZZ -w /path/to/wordlist
例:応答内容が正規表現にマッチするものを表示する
-mrはパストラバーサルを検出したい場合などに便利です。次の例はパストラバーサルで/etc/passwdが表示されるとマッチします。
ffuf -mr "root:" -u 'http://example.com/index.php?file=FUZZ' -w /path/to/wordlist
再帰的にファジングする(ディレクトリ構造の深掘り)
ディレクトリが複数階層にわたる場合、発見したディレクトリ配下を自動で継続探索するには-recursionオプションを使います。
以下のようにするとディレクトリを発見した際、自動的に発見したディレクトリ配下をファジングします。
ffuf -u http://example.com/FUZZ -w /path/to/wordlist -recursion
複数の場所を同時にファジングする(例:DIRとFILE)
ffufはワードリストにキーワードを追加することによって複数の場所をファジングできます。指定方法は/path/to/wordlist:KEYWORDです。
ffuf -u http://example.com/DIR/FILE -w /path/to/wordlist/dir.txt:DIR,/path/to/wordlist/file.txt:FILE
この例ではDIRの箇所をdir.txtでファジングし、FILEの箇所をfile.txtでファジングします。キーワードのDIRやFILEは任意なので好きな文字列に変更できます(FOOなど)。
なお、ファジングする場所は2つ以上指定できます。
デフォルト動作(clusterbomb)では最初に指定したワードリスト全体を反復処理してから2番目、3番目…と移動します。場所を増やしすぎると膨大な数のリクエストを送信することになるので注意してください。
拡張子を付与する
ワードリストから読み込んだ単語を送信後、単語に拡張子を付与した単語も送信します。拡張子はカンマ「,」で区切って複数指定できます。
ffuf -e .php,.zip,.bak -u http://example.com/FUZZ -w /path/to/wordlist
ワードリストのコメントを無視する
ffufはワードリストから読み込んだ単語をそのまま送信します。「#」などでコメントアウトした内容も例外ではないため、コメント行を含むワードリストを使う場合は-icオプションを使います。
ffuf -ic -u http://example.com/FUZZ -w /path/to/wordlist
リクエスト送信数を抑える(レート制御)
実運用環境やバグバウンティで短時間に大量リクエストを送ると WAF/IDS に引っかかったり、IP がブラックリスト化される可能性があります。レート制御や分散実行を駆使して安全に実施してください。
AkamaiのようなCDNでもレートリミット設定されている場合に通信が遮断される可能性があります。
秒間リクエスト数の指定(-rate)
-rateオプションで秒間リクエスト数を指定できるので、毎秒10リクエストに抑えたい場合は次のようにします。
ffuf -rate 10 -u http://example.com/FUZZ -w /path/to/wordlist
ffufとdirsearchの使い分け
ffufとdirsearchはアプローチ方法がまったく異なります。わたしの経験では、最初のアプローチはdirsearchの方が優れています。
あるサブドメインを見つけて、そこに隠されたディレクトリやファイルを探し出したい場合はdirsearchが効果的です。わたしはサブドメインを見つけたらdirsearchを実行する、という作業を自動化しています。
ffufは非常に柔軟性が高いため、ターゲットを絞って細かく調査したい場合に効果的です。隠されたエンドポイントなどを徹底的に探すにはffufが優れているでしょう。
| 比較観点 | ffuf | dirsearch |
|---|---|---|
| 主用途 | 柔軟なパラメータ/エンドポイントの精密探索 | サブドメイン配下やディレクトリ/ファイル列挙に特化 |
| 設定の柔軟性 | 非常に高い(FUZZ の位置・ヘッダー・リクエスト細工) | 基本的にはディレクトリ探索に特化したオプション群 |
| 再帰探索 | あり(-recursion) | あり |
| 扱いやすさ | やや細かい設定が必要(慣れで克服) | 簡単に広く探せる(最初のスキャンに向く) |
| 推奨ワークフロー | ターゲットを絞って深掘りする段階で使用 | 最初の幅広い探索に使用 |
- ターゲットを絞って詳細に調べたいときは ffuf
- 広く探索したいときは dirsearch
まずは dirsearchで幅広くディレクトリを発見し、その後で見つかった候補に対してffufを使って深掘り、というワークフローが効果的です。
よくある質問
参考資料・リンク
まとめ
ffuf は高速で柔軟な HTTP ファジングツールです。実務ではdirsearchと組み合わせることで、探索の幅と深さの両方を効率的に確保できます。
ただし、常に許可された環境で実施し、レートやスレッドなどの設定で対象に過度な負荷をかけないように注意してください。

コメント