【実演解説つき】ffufの使い方を徹底解説(Kali Linux、Ubuntu対応)

Webアプリケーションに特化したファジングツール
- ffuf -

Webアプリケーションのセキュリティ診断に欠かせないツールの一つが、ffuf(Fuzz Faster U Fool)です。

本記事では、「ffufとは何か」から「インストール方法」「基本的な使い方」「実際の使用例」まで、画像や具体的なコマンドを交えて分かりやすく解説します。

この記事で紹介する内容は、教育・学習目的のみに限定されます。実際のシステムやネットワークに対して無断で実行することは、たとえ善意の脆弱性診断であっても不正アクセスやサイバー攻撃とみなされ、法律に抵触する可能性があります。

目次

ffufとは

ffuf(Fuzz Faster U Fool)は、WebアプリケーションやWebサーバーに対して効率的にファジングを行うためのオープンソースツールです。

ファジングとは

ファジングとは、特定の入力値やリクエストを自動的かつ大量に送信し、その応答から予期せぬ挙動や隠されたリソースを発見するテスト手法を指します。ffufはファジングを効率的に実現するために設計されており、セキュリティ診断やペネトレーションテストの現場で広く利用されています。

ffufはGo言語で開発されており、高速かつ軽量であることが特徴です。主にディレクトリ探索やパラメータ検証など、Webサーバーに対して効率的にリクエストを送り、潜在的なリソースや脆弱なエンドポイントを発見する目的で利用されます。

主な特徴

脆弱性診断やペネトレーションテストに最適

ffufは、ディレクトリやファイルの隠れリソース探索、パラメータの列挙、さらにはバーチャルホストの検出など、セキュリティ診断の最初に行う情報収集フェーズを高速かつ網羅的に実施できます。

ffufができること
  • ディレクトリブルートフォース
  • ファイル探索
  • 仮想ホスト(vhost)検出
  • HTTPリクエストヘッダーのファジング
  • GET/POSTパラメータのファジング 他

OWASP Top 10でも「A01:2021-アクセス制御の不備」や「A05:2021-セキュリティの設定ミス」は頻出のカテゴリであり、ffufはそれらの脆弱性の早期発見に有用です。

コマンドライン・インタフェース

ffufは、「Dirbuster」や「OWASP ZAP」と異なり、コマンドライン・インタフェース(CLI)のセキュリティ診断ツールです。ターゲットURLやワードリスト、スレッド数、出力形式、フィルタ条件などをすべてコマンド一行で定義でき、シェルスクリプトに保存して再利用すれば再現性の高いテストを継続的に実施できます。

BashやPythonなどのスクリプトに組み込みやすく、セキュリティチェックをCI/CDパイプラインに統合することもできます。

ワードリストの柔軟性

Kali Linuxに標準搭載されているWordListsはもちろん、SecListsをはじめとした既存の辞書ファイルが利用でき、ディレクトリ探索、パラメータ列挙など、対象に応じたワードリストを切り替えることで効率的にセキュリティ診断を進められます。

さらに、独自に作成したカスタムリストを使用することもできます。実際の現場では、対象となるアプリケーションの命名規則や業界固有のキーワードが存在する場合が多く、汎用的なワードリストだけでは検知できないリソースが潜んでいる可能性があります。

例えば、金融業界向けのアプリケーションでは「account」「transaction」といった語が頻出しますが、医療系システムでは「patient」「record」といった異なる傾向が見られます。こうした特性を反映させたカスタムワードリストは、検出精度を飛躍的に高めます。

このように、ffufは標準的なワードリストに留まらず、診断対象に応じて柔軟にワードリストを活用できる点で、セキュリティエンジニアにとって強力な武器となります。

多様なフィルタリング機能

ffufは、単純なHTTPステータスコードの比較に加え、レスポンスのサイズやワード数、行数を基準としたフィルタリング機能も備えています。

例えば、ディレクトリ探索を行う際、何千件もの404 Not Foundが混じる中で、わずか数件の200 OKを探すことになります。その際、-fc 404オプションで404 Not Foundを除外すれば、重要な発見だけを抽出できます。

またWebサーバーによっては、存在しないページにアクセスした際にカスタムエラーページを表示しながらも、HTTPステータスコード200 OKを返す場合があります。このような場合、レスポンスサイズやワード数、文字列で除外することで、不要な結果を一掃できます。

MITライセンス

ffufはMITライセンスの下で提供されているオープンソースソフトウェアです。

MITライセンスはオープンソースライセンスの中でも寛容で、広く利用されているライセンス形態の一つです。

商用利用も制限されていないため、脆弱性診断やペネトレーションテストのツールとして、誰でも無料で利用することができます。

ffufの使い方

インストール・起動方法

Kali Linuxの場合

ffufは、Kali Linuxにプリインストールされているため、アプリケーションメニューから起動することができます。

本記事で使用したKali Linuxのバージョン

$ cat /etc/os-release
PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
VERSION_ID="2025.3"
VERSION="2025.3"
VERSION_CODENAME=kali-rolling
〜 以下、省略 〜

Kali Linuxのアプリケーションメニュー01-Reconnaissance-Web Scanningからffufを選択します。

Kali Linuxのアプリケーションメニュー

すぐにターミナルが起動し、ヘルプ(ffuf -h)の実行結果が表示されます。

ターミナルが起動して、ffuf -hの実行結果を表示

ffufはコマンドライン・インタフェースのため、ターミナルから直接起動することもできます。

$ ffuf -h
Fuzz Faster U Fool - v2.1.0-dev

HTTP OPTIONS:
  -H                  Header `"Name: Value"`, separated by colon. Multiple -H flags are accepted.
  -X                  HTTP method to use
〜 以下、省略 〜

Ubuntuの場合

日本でもデスクトップ環境での利用が多いUbuntuですが、ffufはプリインストールされていません。しかし、公式リポジトリに含まれているため、aptコマンドで簡単にインストールすることができます。

本記事で使用したUbuntuのバージョン

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.3 LTS (Noble Numbat)"
VERSION_CODENAME=noble
〜 以下、省略 〜
STEP
公式リポジトリを確認
$ sudo apt update

$ sudo apt info ffuf
Package: ffuf
Version: 2.1.0-1ubuntu0.24.04.3
Built-Using: golang-1.22 (= 1.22.2-2ubuntu0.4), golang-github-adrg-xdg (= 0.4.0-2), golang-github-andybalholm-brotli (= 1.0.5-1), golang-github-andybalholm-cascadia (= 1.3.2-1), golang-github-ffuf-pencode (= 0.4-1ubuntu0.24.04.3), golang-github-pelletier-go-toml (= 1.9.5-1ubuntu0.24.04.3), golang-github-puerkitobio-goquery (= 1.8.1-2), golang-golang-x-net (= 1:0.21.0+dfsg-1)
Priority: optional
Section: universe/devel
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Thiago Andrade Marques <andrade@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 8,418 kB
Depends: libc6 (>= 2.34)
Homepage: https://github.com/ffuf/ffuf
Download-Size: 2,994 kB
APT-Sources: http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages
Description: Fast web fuzzer written in Go (program)
 ffuf is a fast web fuzzer written in Go that allows typical directory
 discovery, virtual host discovery (without DNS records) and GET and POST
 parameter fuzzing.
 .
 This program is useful for pentesters, ethical hackers and forensics experts.
 It also can be used for security tests.

N: 追加レコードが 1 件あります。表示するには '-a' スイッチを付けてください。
STEP
ffufをインストール
$ sudo apt install ffuf
STEP
インストール後にパスとバージョンを確認
$ which ffuf
/usr/bin/ffuf

$ ffuf -V
ffuf version: 2.1.0-dev
STEP
ffufを起動する
$ ffuf -h
Fuzz Faster U Fool - v2.1.0-dev

HTTP OPTIONS:
  -H                  Header `"Name: Value"`, separated by colon. Multiple -H flags are accepted.
  -X                  HTTP method to use
〜 以下、省略 〜

Ubuntuの場合、アプリケーションアイコンは作成されないので、端末(ターミナル)からコマンド実行します。

基本的な使い方

最も基本的な構文

$ ffuf -w <ワードリスト> -u <ターゲットURL>
  • -w:ワードリストのパス
  • -u:テスト対象のURL

ffufの基本的な使用方法は、診断対象となるURLに対してワードリストを適用し、指定したパラメータ部分を順に置き換えながらリクエストを実行し、その応答結果を解析します。

最も単純なケースでは、ディレクトリやファイルの存在を調査するために使用します。URL中にFUZZというプレースホルダーを記述すると、ワードリストの値に置き換えられ、Webサーバーへ順次リクエストが送信されます。

ディレクトリ探索の実行例

$ ffuf -w wordlist.txt -u http://example.com/FUZZ

例えば、http://example.com/FUZZと指定すると、ワードリストに含まれる文字列ごとにhttp://example.com/adminhttp://example.com/loginなどが自動的にリクエストされます。その結果、HTTPステータスコードやレスポンスサイズなどから、存在するディレクトリやリソースを特定することができます。

よく使うオプション一覧

  • 基本オプション
    • -u:テスト対象のURLを指定
    • -w:ワードリストを指定
    • -V:バージョン情報を表示
    • -h:ヘルプを表示
  • 出力系
    • -o:出力ファイル名を指定
    • -of:出力フォーマットを指定(json、ejson、html、md、csv、ecsv、all)※デフォルト:json
    • -c:カラーで出力(デフォルト:false)
    • -v:詳細を出力(デフォルト:false)
  • マッチング
    • -mc:HTTPステータスコードで抽出(デフォルト:200,204,301,302,307,401,403)
    • -ms:レスポンスサイズで抽出
    • -mw:ワード数で抽出
  • フィルタリング
    • -fc:特定のHTTPステータスコードを除外
    • -fs:レスポンスサイズで除外
    • -fw:ワード数で除外
  • パフォーマンス
    • -t:同時スレッド数を指定(デフォルト:40スレッド)
    • -rate:1秒あたりのリクエスト数(デフォルト:0)
    • -timeout:リクエストのタイムアウト秒数(デフォルト:10秒)
  • 高度な利用オプション
    • -X:HTTPメソッドを指定(デフォルト:GETメソッド)
    • -H:HTTP ヘッダを指定
    • -d:POSTデータを指定

具体的な使用例

ディレクトリ・ファイル探索

$ ffuf -w wordlist.txt -u http://example.com/FUZZ
  • -w:使用するワードリストのパスを指定
  • -u:テスト対象のURLを指定(FUZZ 部分がワードリストに含まれる文字列に置換されます。)

Webサーバー上に存在する隠れたディレクトリや管理用ファイルを探索する方法です。ffufは、高速かつ柔軟にディレクトリやファイルのブルートフォース探索を行えるため、ペネトレーションテストの初期段階でよく利用されます。

公開されるべきでない管理用ディレクトリや設定ファイルが発見されると、情報漏洩や不正アクセスにつながる可能性があります。

パラメータ探索

$ ffuf -w params.txt -u http://example.com/index.php?FUZZ=test

Webアプリケーションに対する攻撃経路の一つに「隠れたパラメータ」の存在があります。例えば、開発やテスト用に残されたパラメータ、あるいは公開されていない機能を有効化するためのパラメータがその代表例です。

上記コマンドでは、FUZZというプレースホルダーにワードリストの各単語が順に差し込まれ、実在するパラメータ名を探索します。例えば、user=testdebug=test といったリクエストが自動で生成され、レスポンスが比較されます。

複数のキーワードを指定する

$ ffuf -w filenames.txt:FILENAME -w extensions.txt:EXTENSION -u http://example.com/FILENAME.EXTENSION

ffufは、単一のキーワードだけでなく、複数のキーワードを組み合わせた探索にも対応しています。例えば、典型的なシナリオとして「ファイル名」と「拡張子」を別々に総当たりするケースが挙げられます。

上記のコマンドでは、filenames.txtのファイル名候補とextensions.txtの拡張子候補を組み合わせてリクエストを生成し、存在するリソースを探索します。

複数のワードリストを利用すると試行リクエスト数が急増し、診断対象サーバーに大きな負荷を与えます。例えば、ワードリストが100件ずつなら「100 × 100 = 10,000リクエスト」となります。診断計画の段階で対象システムの耐性や許容リクエスト数を確認し、必要に応じて-rateオプションでリクエスト送信速度を制御しましょう。

マッチング

$ ffuf -w wordlist.txt -u http://example.com/FUZZ -mc 200
  • -mc:抽出するHTTPステータスコードを指定

単純にレスポンスを列挙するだけでは、膨大な結果から有用な情報を見つけ出すのは困難です。そのため、HTTPレスポンスの特定条件に基づいて結果を絞り込む機能が欠かせません。

ffufでは-mcオプションを用いることで、HTTPステータスコードを指定して抽出が可能です。

例えば、ディレクトリブルートフォースの際に「200番だけを確認したい」場合、-mc 200を指定すれば、200 OKのみを出力します。また、複数のHTTPステータスコードをカンマ区切りで指定できるため、-mc 200,301,302のように典型的な成功レスポンスを指定することもできます。

さらに、コンテンツのサイズを基準にマッチングする-msや、レスポンス中のワード数に基づく-mwといったオプションも利用でき、目的に応じて柔軟に組み合わせることができます。

フィルタリング

$ ffuf -w wordlist.txt -u http://example.com/FUZZ -fc 301,302

フィルタリングはマッチングと対を成す機能で、条件に合致するレスポンスを除外するために用います。例えば、-fcオプションでHTTPステータスコードを指定すれば、不要なレスポンスを削除することができます。

実際の診断では、対象のWebサーバーがカスタムエラーページを返す場合など、レスポンスコードだけでは判別がつかないケースもあるため、レスポンスサイズやワード数のフィルタリングを併用すると効率的です。

  • -fc:特定のHTTPステータスコードを除外
  • -fs:レスポンスサイズで除外
  • -fw:レスポンス内のワード数で除外

ファイル出力

$ ffuf -w wordlist.txt -u http://example.com/FUZZ -o result.csv -of csv
  • -o:出力ファイル名
  • -of:出力ファイルのフォーマット形式

出力形式はHTML、CSV、JSONといった複数の形式をサポートしており、用途に応じて選択できます。

【実演】ローカル環境でffufを実行する

実際のシステムに対してセキュリティ診断を行うことは、法律に抵触する可能性があります。そのため、本記事ではやられアプリの一つであるDVWA(Damn Vulnerable Web Application)を用いて、ffufの挙動を確認します。

検証環境のシステム構成

ffuf実行マシン・Kali Linux 2025.3
・192.168.10.11
・ffuf version: 2.1.0-dev
ターゲットマシン・DVWA(Damn Vulnerable Web Application)Version 1.8
・192.168.10.105

Kali Linux、DVWAは、Windows上で仮想マシンとして稼働しています。環境構築は、下記の記事をご覧ください。

ffufを使って、セキュリティ診断を実施

STEP

Kali LinuxのブラウザでDVWAにアクセス

http://192.168.10.105/dvwa/にアクセスするとログイン画面が表示され、認証情報がわからなければ、先に進むことはできません。

DVWAのトップ画面(ログイン画面)
STEP

ffufを実行

Kali LinuxからDVWAに対してffufを実行し、ディレクトリ・ファイル探索を行います。

$ ffuf -w /usr/share/wordlists/dirb/common.txt -u http://192.168.10.105/dvwa/FUZZ -mc 200,301

        /'___\  /'___\           /'___\
       /\ \__/ /\ \__/  __  __  /\ \__/
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
         \ \_\   \ \_\  \ \____/  \ \_\
          \/_/    \/_/   \/___/    \/_/

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://192.168.10.105/dvwa/FUZZ
 :: Wordlist         : FUZZ: /usr/share/wordlists/dirb/common.txt
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200,301
________________________________________________

.git/HEAD               [Status: 200, Size: 23, Words: 2, Lines: 2, Duration: 14ms]
config                  [Status: 301, Size: 242, Words: 14, Lines: 8, Duration: 4ms]
docs                    [Status: 301, Size: 240, Words: 14, Lines: 8, Duration: 6ms]
external                [Status: 301, Size: 244, Words: 14, Lines: 8, Duration: 5ms]
favicon.ico             [Status: 200, Size: 1406, Words: 5, Lines: 2, Duration: 4ms]
login                   [Status: 200, Size: 1224, Words: 76, Lines: 66, Duration: 41ms]
php.ini                 [Status: 200, Size: 148, Words: 17, Lines: 5, Duration: 3ms]
robots                  [Status: 200, Size: 26, Words: 3, Lines: 2, Duration: 5ms]
robots.txt              [Status: 200, Size: 26, Words: 3, Lines: 2, Duration: 6ms]
setup                   [Status: 200, Size: 3672, Words: 186, Lines: 81, Duration: 5ms]
:: Progress: [4614/4614] :: Job [1/1] :: 85 req/sec :: Duration: [0:00:04] :: Errors: 0 ::
STEP

発見したディレクトリやファイルを確認する

ffufを使って、ディレクトリ・ファイル探索を行うと、想定していないディレクトリやファイルが見つかることがあります。

http://192.168.10.105/dvwa/config

発見したディレクトリ(http://192.168.10.105/dvwa/config)をブラウザで開く

http://192.168.10.105/dvwa/php.ini

発見したファイル(http://192.168.10.105/dvwa/php.ini)をブラウザで開く
STEP

意図しないディレクトリやファイルが見つかった場合

誤って外部公開しているディレクトリやファイルは、サイバー攻撃の侵入経路となる恐れがあるため、直ちに公開範囲を再点検し、アクセス制御を強化して下さい。

デフォラボ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次