Rust製の高速なディレクトリ探索ツール
- feroxbuster -
Webアプリケーション診断において、ディレクトリやファイルの列挙は欠かせない工程です。その中核を担うツールの一つが〝feroxbuster〟です。
本記事では、feroxbusterの使用方法を基礎から実践レベルまで体系的に解説!Kali Linuxへのインストール手順から、基本コマンド、オプション適用の優先順位、実行結果の見方まで網羅しています。
さらに具体的なコマンド例と実演ベースの解説を通じて、今すぐ使えるスキルが身につきます。
feroxbusterとは
feroxbusterは、Webアプリケーションに対するディレクトリおよびファイル列挙(コンテンツディスカバリー)を目的としたオープンソースツールです。Rustプログラミング言語で実装されており、高い並列処理性能とメモリ安全性を両立しています。
脆弱性診断やペネトレーションテストにおいて、誤って公開されている管理画面、バックアップファイル、APIエンドポイントなどの洗い出しは重要な工程です。
feroxbusterは、ワードリストを用いたブルートフォース型列挙に加え、再帰探索・レスポンス分析・高度なフィルタリング機能を備えており、実務レベルの診断業務にも適用できる性能を有しています。
主な特徴
- ワードリストによるディレクトリ探索
- Rust言語で実装(高い並列処理性能とメモリ安全性)
- 再帰探索
- HTMLレスポンス内のリンクを抽出し、スキャン対象を追加できる
- リダイレクトの追跡
- ターゲットサーバーの負荷を考慮し、リクエスト速度を自動調整できる
- OWASP ZAPやBurp Suiteなどのプロキシ経由のスキャンが可能
- HTTPステータスコード、行数、単語数、サイズなどで検出結果をフィルタリング
- 設定ファイル(ferox-config.toml)によるデフォルト値のカスタマイズ
注意事項
【重要】許可のない環境では絶対に使用しないでください。
たとえ善意による脆弱性診断であっても、事前に許可を得ていなければ、サイバー攻撃とみなされる可能性があります。学習目的で試す場合は、意図的に脆弱性が組み込まれたやられアプリなどのトレーニング環境を使用してください。
feroxbusterは大量のHTTPリクエストを送信します。
feroxbusterの利用にあたっては、実施条件を事前に協議し、承認を得ることが必要です。対象ドメインおよびIPアドレス、作業時間帯、許容レート(例:1秒あたりのリクエスト数)、再帰探索の可否などについて、関係者間で合意のうえ実施してください。
ワードリストの選定は、診断結果に大きく影響します。
汎用的なワードリストでは検出率に限界があるため、対象システムの技術スタックや命名規則に基づいたカスタムリストの作成が望まれます。
Kali Linuxにferoxbusterをインストール
feroxbusterの公式サイトによると、Kali LinuxへのインストールはAPTリポジトリを利用したインストールが推奨されています。
If you're using kali, this is the preferred install method. Installing from the repos adds a ferox-config.toml in /etc/feroxbuster/, adds command completion for bash, fish, and zsh, includes a man page entry, and installs feroxbuster itself.
出典:feroxbuster公式GitHub(https://github.com/epi052/feroxbuster)
Kali Linuxを使用している場合、APTリポジトリを利用したインストールが推奨されています。リポジトリからインストールすると、/etc/feroxbuster/ferox-config.tomlの追加、bash/fish/zshでのコマンド補完の有効化、マニュアルページ(man page)の追加、そしてferoxbuster本体のインストールがすべて行われます。
そのため、本記事ではAPT経由でferoxbusterパッケージをインストールします。
パッケージリストの更新
$ sudo apt update/etc/apt/sources.listおよび/etc/apt/sources.list.d/に定義されたリポジトリから最新のパッケージ情報を取得します。
パッケージ情報の確認
$ apt show feroxbuster
Package: feroxbuster
Version: 2.13.1-0kali1
Priority: optional
Section: misc
Maintainer: Kali Developers <devel@kali.org>
Installed-Size: 12.9 MB
Depends: fonts-noto-color-emoji, seclists, libc6 (>= 2.39), libgcc-s1 (>= 4.2)
Homepage: https://github.com/epi052/feroxbuster
Download-Size: 3,743 kB
APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages
Description: fast, simple, recursive content discovery tool written in Rust
feroxbuster is a tool designed to perform Forced Browsing.
Forced browsing is an attack where the aim is to enumerate and
access resources that are not referenced by the web application,
but are still accessible by an attacker.
feroxbuster uses brute force combined with a wordlist to search
for unlinked content in target directories. These resources may
store sensitive information about web applications and operational
systems, such as source code, credentials, internal network
addressing, etc...
This attack is also known as Predictable Resource Location, File
Enumeration, Directory Enumeration, and Resource Enumeration.feroxbusterパッケージの詳細情報を確認します。主にバージョン(Version)、依存パッケージ(Depends)、概要(Description)を確認します。
インストール状況の確認
$ apt list --installed | grep feroxbusterまだインストールされていないことを確認します。
feroxbusterのインストール
$ sudo apt install feroxbuster依存パッケージも同時にインストールされます。
実行ファイルの配置場所
$ which feroxbuster
/usr/bin/feroxbusterインストール後、実行ファイルのパスを確認します。
Kali Linuxのアプリケーションメニューの01-Reconnaissance>Web Scanningにも配置されます。

バージョン確認
$ feroxbuster -V
feroxbuster 2.13.1インストールされたバージョンを確認します。
ヘルプ表示
$ feroxbuster -h利用可能なオプション一覧が表示されることを確認します。
feroxbusterの使用方法
feroxbusterはCLIベースのツールであるため、ターミナル上でコマンドを実行して操作します。
最もシンプルなコマンド
最小構成の実行コマンド
$ feroxbuster -u http://example.com/-u:スキャン対象のURLを指定
上記コマンドを実行すると、指定したURLに対してHTTPリクエストを送信し、レスポンスを解析して存在するリソースを列挙します。
オプション適用の優先順位
feroxbusterのオプション指定には優先順位があり、以下の順序で上書きされます。
- バイナリに定義されているデフォルト値
- 設定ファイル
ferox-config.tomlの設定値 - コマンドライン引数
例えば、スレッド数-tを例に挙げると、処理は以下のように動きます。
- 「デフォルトのスレッド数は50」と内部で決まっています。
- 設定ファイルに
threads = 100と書いてあれば、値は100に更新されます。 - コマンド実行時に
-t 200と入力すれば、最終的に200で実行されます。
オプションのデフォルト値
feroxbusterでは、多数のデフォルト値があらかじめ定義されており、これらはバイナリに組み込まれています。そのため、明示的に変更しない限り、常に同一の設定で動作します。
| 項目 | デフォルト値 |
|---|---|
| スレッド数 | 50 |
| ワードリスト | /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt |
| 出力対象 | すべてのHTTPステータスコード |
| タイムアウト | 7秒 |
| ユーザーエージェント | feroxbuster/<version> |
| 設定ファイル | /etc/feroxbuster/ferox-config.toml |
| レスポンスからリンク抽出 | 有効 |
| HTTPメソッド | GET |
| 再帰探索 | 有効(深さ:4) |
設定ファイル(ferox-config.toml)
デフォルト値を変更する場合は、設定ファイルferox-config.tomlに定義します。
- グローバル設定(/etc/feroxbuster/ferox-config.toml)
- 各ユーザーの設定ディレクトリ(/home/kali/.config/feroxbuster/ferox-config.toml)
- 実行ファイルと同じディレクトリ(/usr/bin/ferox-config.toml)
- 実行中のカレントディレクトリ
ferox-config.tomlは、TOML形式で記述します。設定ファイルferox-config.tomlが複数存在する場合、後に読み込まれた設定ファイルの内容が優先され、既存の設定値は上書きされます。
コマンドライン引数
実行ごとにオプションを変更する場合は、コマンドライン引数で指定します。各オプションの指定方法は、ヘルプコマンドferoxbuster -hで確認できます。
1つのオプションに対して複数の値を設定する場合、以下の3方法があります。
- オプション繰り返し
- カンマ区切り
- スペース区切り
例)-xオプションの場合
$ feroxbuster -u http://example.com/ -x php -x html,js -x ini env実行結果の見方
検出したパスは、以下の形式で1行ずつ表示されます。
実行結果の例
200 GET 83l 282w 4145c http://example.com/phpMyAdmin/export各フィールドの意味は、以下のとおりです。
200:HTTPステータスコードGET:使用したHTTPメソッド83l:レスポンスの行数(lines)282w:単語数(words)4145c:バイト数(characters)- URL:検出されたリソース
具体的なコマンド例
- ターゲット(対象サイト)の指定
- 単一URLの指定(
-u,--url) - 標準入力からURLを読み取る(
--stdin)
- 単一URLの指定(
- プロキシ設定
- HTTPプロキシ経由(
-p,--proxy) - 検出されたURLのみHTTPプロキシ経由(
-P,--replay-proxy)
- HTTPプロキシ経由(
- リクエスト設定
- 任意のユーザーエージェント(
-a,--user-agent) - ランダムなユーザーエージェント(
-A,--random-agent) - 探索する拡張子(
-x,--extensions) - HTTPリクエストメソッド(
-m,--methods) - スラッシュを追加(
-f,--add-slash)
- 任意のユーザーエージェント(
- リクエストフィルタ
- 再帰探索しない(
--dont-scan)
- 再帰探索しない(
- レスポンスフィルタ
- 除外フィルタ:サイズ(
-S,--filter-size) - 除外フィルタ:文字列(
-X,--filter-regex) - 除外フィルタ:単語数(
-W,--filter-words) - 除外フィルタ:行数(
-N,--filter-lines) - 除外フィルタ:HTTPステータスコード(
-C,--filter-status) - 許可フィルタ:HTTPステータスコード(
-s,--status-codes)
- 除外フィルタ:サイズ(
- クライアント設定
- タイムアウトするまでの秒数(
-T,--timeout) - リダイレクトに従う(
-r,--redirects)
- タイムアウトするまでの秒数(
- スキャン設定
- スレッド数(
-t,--threads) - 再帰探索しない(
-n,--no-recursion) - 再帰探索の深さ(
-d,--depth) - レスポンスからリンクを抽出しない(
--dont-extract-links) - 同時接続数の上限(
-L,--scan-limit) - 並列実行(
--parallel) - 1秒あたりのリクエスト数の上限(
--rate-limit) - スキャン実行時間の上限(
--time-limit) - ワードリスト(
-w,--wordlist) - スキャン速度を自動調整(
--auto-tune) - スキャンを自動停止(
--auto-bail)
- スレッド数(
- 出力設定
- 実行ログを出力する(
-v,--verbosity) - 検出したURLのみ出力(
--silent) - 進捗バーやバナーを表示しない(
-q,--quiet) - 実行結果をファイル出力する(
-o,--output)
- 実行ログを出力する(
ターゲット(対象サイト)の指定
単一URLの指定(-u, --url)
$ feroxbuster -u http://example.com/
$ feroxbuster -u http://192.168.1.1/最も基本的な指定方法は、-uオプション(または--url)で単一のURLを指定する方法です。指定したURLを起点として、ワードリストに基づくディレクトリおよびファイルの探索を実行します。
標準入力からURLを読み取る(--stdin)
$ cat targets.txt | feroxbuster --stdin複数のターゲットを一括で処理する場合、--stdinオプションを使用します。この方法は、複数ホストに対する横断的な診断やCI/CDパイプラインとの連携に有効です。
targets.txtの例
$ cat targets.txt
http://example.com/
http://192.168.1.100/
https://test.local/プロキシ設定
HTTPプロキシ経由(-p, --proxy)
$ feroxbuster -u http://example.com/ -p http://127.0.0.1:8080-pオプション(または--proxy)を指定すると、HTTPプロキシ経由でリクエストを送信します。上記コマンドでは、すべてのHTTPリクエストが127.0.0.1:8080経由で送信されます。
- OWASP ZAPやBurp Suiteを経由したトラフィック確認
- リクエスト/レスポンスの詳細分析
スレッド数(-t)を低めに設定しないとプロキシ側で処理遅延が発生する場合があります。
検出されたURLのみHTTPプロキシ経由(-P, --replay-proxy)
$ feroxbuster -u http://example.com/ -P http://127.0.0.1:8080-Pオプション(または--replay-proxy)は、HTTPプロキシを指定します。-pとの違いは、すべてのリクエストではなく、検出されたURLのみプロキシ経由で送信します。
-p:すべてのリクエストが対象-P:検出されたURLのみが対象
リクエスト設定
任意のユーザーエージェント(-a, --user-agent)
$ feroxbuster -u http://example.com/ -a "SampleBrowser/1.0"-aオプション(または--user-agent)は、User-Agentを明示的に指定するオプションです。(デフォルト:feroxbuster/<version>)
ランダムなユーザーエージェント(-A, --random-agent)
$ feroxbuster -u http://example.com/ -A-Aオプション(または--random-agent)は、リクエストごとにランダムなUser-Agentを自動設定します。
探索する拡張子(-x, --extensions)
$ feroxbuster -u http://example.com/ -x php,js-xオプション(または--extensions)は、拡張子を指定して探索範囲を拡張します。上記コマンドの場合、ワードリストadminに対して、以下のようなリクエストが追加生成されます。
/admin/admin.php※追加/admin.js※追加
対象システムの技術スタック(CMSやフレームワーク)の特性に応じて拡張子を調整すると、検出精度が向上します。
オプション値が@で始まる場合、ファイルから値(改行区切り)を読み取ります。
$ feroxbuster -u http://example.com/ -x @ext.txtHTTPリクエストメソッド(-m, --methods)
$ feroxbuster -u http://example.com/ -m POST-mオプション(または--methods)は、HTTPリクエストメソッドを変更するオプションです。(デフォルト:GET)
スラッシュを追加(-f, --add-slash)
$ feroxbuster -u http://example.com/ -f-fオプション(または--add-slash)を指定すると、すべてのリクエストの末尾にスラッシュ/を追加します。
リクエストフィルタ
再帰探索しない(--dont-scan)
$ feroxbuster -u http://example.com/ --dont-scan images,css--dont-scanオプションは、特定のディレクトリに対して再帰探索を実施しないよう制御するためのオプションです。上記のコマンド例では、images、cssディレクトリ配下について、再帰探索を行いません。
レスポンスフィルタ
近年のWebアプリケーションでは、存在しないURLに対してもHTTPステータスコード200を返却する、いわゆる「ソフト404」の実装が一定数確認されています。
本来、存在しないリソースに対しては404 Not Foundを返却すべきですが、200 OKを返却すると、HTTPステータスコードのみでは有効リソースの判別が困難になります。
feroxbusterには、この問題を軽減するため、レスポンスのサイズ・文字列・単語数・行数などを基準に不要な結果を除外できるフィルタ機能が備わっています。
除外フィルタ:サイズ(-S, --filter-size)
$ feroxbuster -u http://example.com/ -S 240,251-Sオプション(または--filter-size)は、レスポンスボディのサイズ(バイト単位)を基準に除外します。上記の例では、240バイトおよび251バイトのレスポンスを結果から除外します。
除外フィルタ:文字列(-X, --filter-regex)
$ feroxbuster -u http://example.com/ -X "Not Found"-Xオプション(または--filter-regex)は、レスポンスボディに含まれる特定の文字列(正規表現)を基準に除外します。上記例は、レスポンス内に「Not Found」を含む結果を除外します。
除外フィルタ:単語数(-W, --filter-words)
$ feroxbuster -u http://example.com/ -W 20,177-Wオプション(または--filter-words)は、レスポンス内の単語数を基準に除外します。上記例では、単語数が20語および177語のレスポンスを除外します。
除外フィルタ:行数(-N, --filter-lines)
$ feroxbuster -u http://example.com/ -N 7,94-Nオプション(または--filter-lines)は、レスポンスの行数を基準に出力結果を除外するフィルタです。上記例では、行数が7行または94行のレスポンスを結果から除外します。
除外フィルタ:HTTPステータスコード(-C, --filter-status)
$ feroxbuster -u http://example.com/ -C 404,500-Cオプション(または--filter-status)は、特定のHTTPステータスコードを除外するためのフィルタです。上記例では、404 Not Foundおよび500 Internal Server Errorを除外します。
許可フィルタ:HTTPステータスコード(-s, --status-codes)
$ feroxbuster -u http://example.com/ -s 200,301,403-sオプション(または--status-codes)は、指定したHTTPステータスコードのみを表示します。(デフォルト:すべてのステータスコード)
上記例では、200 OKおよび301 Moved Permanentlyのみ出力されます。
| オプション | 動作 | フィルタ方式 |
|---|---|---|
-C,--filter-status | 指定コードを除外 | ブラックリスト |
-s,--status-codes | 指定コードのみ表示 | ホワイトリスト |
クライアント設定
タイムアウトするまでの秒数(-T, --timeout)
$ feroxbuster -u http://example.com/ -T 10-Tオプション(または--timeout)は、HTTPリクエストのタイムアウト時間(秒)を指定します。(デフォルト:7秒)
上記の例では、10秒間レスポンスが返らない場合にタイムアウトと判定します。
リダイレクトに従う(-r, --redirects)
$ feroxbuster -u http://example.com/ -r-rオプション(または--redirects)を指定すると、HTTP 3xx ステータスコードのリダイレクト先へ自動的に追従します。
スキャン設定
スレッド数(-t, --threads)
$ feroxbuster -u http://example.com/ -t 20-tオプション(または--threads)は、同時実行するスレッド数を指定します。(デフォルト:50)
上記の例では、20スレッドで並列リクエストを実行します。
再帰探索しない(-n, --no-recursion)
$ feroxbuster -u http://example.com/ -nferoxbusterは検出したディレクトリに対して自動的に再帰探索を行いますが、-nオプション(または--no-recursion)を指定すると、再帰探索を無効化します。
再帰探索の深さ(-d, --depth)
$ feroxbuster -u http://example.com/ -d 2-dオプション(または--depth)は、再帰探索の深さを指定できます。(デフォルト:4)
レスポンスからリンクを抽出しない(--dont-extract-links)
$ feroxbuster -u http://example.com/ --dont-extract-linksferoxbusterはワードリストによるディレクトリ探索に加え、取得したレスポンスからリンクを抽出し、追加の探索対象として自動登録する機能を備えています。この自動抽出機能により、アプリケーション内部で参照されているエンドポイントも横断的に列挙できます。
この自動抽出は発見率向上に寄与する一方、意図しない再帰探索を招く可能性があります。
その制御に用いるのが、--dont-extract-linksオプションです。このオプションを指定すると、自動抽出機能を無効化し、ワードリストに基づく探索のみが実施されます。
同時接続数の上限(-L, --scan-limit)
$ feroxbuster -u http://example.com/ --scan-limit 2-Lオプション(または--scan-limit)は、各スレッドが確立できる同時アクティブ接続数の上限を制御します。(デフォルト:制限なし)
Threads: The -t option specifies the maximum amount of active threads per-directory during a scan
出典:https://epi052.github.io/feroxbuster-docs/configuration/threads-and-limits/
Connection Limits: The -L option specifies the maximum amount of active connections per thread
- スレッド:-t オプションは、ディレクトリごとに同時実行できるアクティブスレッドの最大数を指定します。
- 接続制限:-L オプションは、スレッドごとにアクティブにできる接続の最大数を指定します。
並列実行(--parallel)
$ cat targets.txt | feroxbuster --stdin --parallel 5--parallelオプションを指定すると、標準入力--stdinから渡されたURLごとに、個別の子プロセスを起動します。上記のコマンドの場合、最大5つのプロセスが並列で実行されます。
1秒あたりのリクエスト数の上限(--rate-limit)
$ feroxbuster -u http://example.com/ --rate-limit 10--rate-limitオプションは、1ディレクトリあたりの1秒間の最大リクエスト数を制御します。(デフォルト:制限なし)
上記のコマンドでは、1ディレクトリにつき最大10リクエスト/秒に制限されます。
スキャン実行時間の上限(--time-limit)
$ feroxbuster -u http://example.com/ --time-limit 10m--time-limitオプションは、スキャン全体の最大実行時間を定義します。上記の例では、10分でスキャンを自動終了します。
- s:秒
- m:分
- h:時間
ワードリスト(-w, --wordlist)
$ feroxbuster -u http://example.com/ -w ~/my_words.txt-wオプション(または--wordlist)で、任意のワードリストを指定できます。
ワードリストは、探索精度を左右する極めて重要な要素です。単に単語数を増やすのではなく、アプリケーションの特性に即した内容であることが重要です。
スキャン速度を自動調整(--auto-tune)
$ feroxbuster -u http://example.com/ --auto-tuneエラー率が増加すると、スキャン速度を自動調整します。
スキャンを自動停止(--auto-bail)
$ feroxbuster -u http://example.com/ --auto-bail過剰なエラーが発生した場合、スキャンを自動停止します。
出力設定
実行ログを出力する(-v, --verbosity)
$ feroxbuster -u http://example.com/ -vvv-vオプション(または--verbosity)は、ログの詳細度を制御します。-vvvのように複数回指定することで、より詳細なログが出力されます。
-v:Warningレベル-vv:Infoレベル-vvv:Debugレベル
検出したURLのみ出力(--silent)
$ feroxbuster -u http://example.com/ --silent--silentオプションを指定すると、検出したURLのみが表示されます。このオプションは、他ツールへパイプ連携する用途に適しています。
JSON形式で出力する場合、--jsonオプションも併用します。
$ feroxbuster -u http://example.com/ --silent --json進捗バーやバナーを表示しない(-q, --quiet)
$ feroxbuster -u http://example.com/ -q-qオプション(または--quiet)は、進捗バーやバナー表示を抑制します。
通常、「起動時のバナー」「進捗バー」「スキャン統計」を表示しますが、-qを指定すると、これらの表示が省略され、検出結果のみが出力されます。
--silentとの違い
| オプション | 検出結果 | バナー・進捗 | 用途 |
|---|---|---|---|
-q,--quiet | すべて表示する(*) | 表示しない | ログ整形向け |
--silent | URLのみ | 表示しない | 自動連携向け |
(*)HTTPステータスコード、HTTPメソッド、レスポンスの行数、単語数、バイト数、URL
実行結果をファイル出力する(-o, --output)
$ feroxbuster -u http://example.com/ -o results.txtスキャン結果をファイルに保存するには -oオプション(または--output)を使用します。
スキャン結果をJSON形式で出力する場合、--jsonも併用します。
$ feroxbuster -u http://example.com/ --json -o results.txt実演解説
ローカルマシン上に構築した仮想環境を使用して、feroxbusterの実演を行います。
- feroxbuster実行マシン
- Kali Linux 2025.4
- feroxbuster 2.13.1
- ターゲットマシン
- WordPressサイト(OWASP BWAに含まれるトレーニング環境)
- http://192.168.10.105/wordpress/
ターゲットマシンではWordPressが稼働しているため、WordPress向けに最適化されたワードリストを使用します。
使用するワードリスト
# ワードリストの件数
$ wc -l /usr/share/seclists/Discovery/Web-Content/CMS/trickest-cms-wordlist/wordpress.txt
3217 /usr/share/seclists/Discovery/Web-Content/CMS/trickest-cms-wordlist/wordpress.txt
# ワードリストの先頭10件
$ head -10 /usr/share/seclists/Discovery/Web-Content/CMS/trickest-cms-wordlist/wordpress.txt
wp-activate.php
wp-includes/admin-bar.php
wp-includes/revision.php
wp-includes/template.php
wp-includes/ms-functions.php
wp-includes/class-wp-network-query.php
wp-includes/class-feed.php
wp-includes/class-wp-duotone.php
wp-includes/widgets/class-wp-widget-links.php
wp-includes/widgets/class-wp-widget-text.phpWordPress 固有のパスが多数含まれています。
一般的な使用例
実行コマンド
$ feroxbuster -u http://192.168.10.105/wordpress/ \
-w /usr/share/seclists/Discovery/Web-Content/CMS/trickest-cms-wordlist/wordpress.txt \
-n \
-s 200,301,302-u:ターゲットURL-w:ワードリスト-n:再帰探索しない-s:検出するHTTPステータスコード
実行結果

WordPress向けに最適化されたワードリストを活用することで、ファイル列挙を効率的に行っています。
プロキシ経由の使用例
実行コマンド
$ feroxbuster -u http://192.168.10.105/wordpress/ \
-w /usr/share/seclists/Discovery/Web-Content/CMS/trickest-cms-wordlist/wordpress.txt \
-p http://127.0.0.1:8080-u:ターゲットURL-w:ワードリスト-p:プロキシ経由でリクエスト送信
実演解説2では、OWASP ZAP経由でリクエストを送信します。OWASP ZAPを通過した通信内容(リクエストおよびレスポンス)は、同ツール上で確認することができます。
OWASP ZAPを通過した通信内容

