FFUFとは
Fuzz Faster U Fool(FFUF)は、オープンソースのファジングツールです。
Kali LinuxやParrot OSなどではデフォルトでインストールされています。
使い方
基礎構文
-w
でワードファイル、-u
でターゲットのURLを指定します。
ffuf -w <wordlist path> -u <target url>
オプション
使用頻度の高いオプションをいくつか紹介します。
HTTP系
-
-H
- HTTPリクエストヘッダーを指定します
- 例)
-H "Host: FUZZ.example.com"
- 複数指定する場合は都度オプションを足す
- 例)
-H "User-Agent: Mozilla/5.0" -H "Host: FUZZ.example.com"
-
-X
- HTTPリクエストメソッドを指定します
- 例)
-X POST
-
-d
- POSTリクエストのbodyデータを指定します
- 例)
-X POST -d "username=admin&password=passwd"
-
-recursion
- 再帰的スキャンを実行します
- デフォルトではオフになっています
-
-recursion-depth
- 再帰的にスキャンする際の階層の深さを指定します
- デフォルトでは
0
になっています
-
-request
- リクエストファイルを読み込みます
- 例)
-request request.txt
フィルタリング系
フィルタリングオプションでは一致したものを非表示にするf~
と一致したもののみを表示するm~
に分かれます。
後に続く文字は両方で共通しています。
-
c
- HTTPレスポンスのステータスコードで判別します
- 例)
-fc 301
or-mc 301
-
l
- レスポンスの行数で判別します
- 例)
-fl 20
or-ml 20
-
r
- 正規表現で判別します
-
s
- レスポンスのサイズで判別します
- 例)
-fs 1000
or-ms 1000
-
w
- レスポンスのワード数で判別します
- 例)
-fw 20
or-mw 20
- 範囲指定や複数指定ができます
- 例)
-fw 20-50
or-fw 10,20
その他
-
-ic
- ワードリストファイルに含まれるコメントを無視します
- デフォルトでは無効化されています
-
-o
- 出力を保存するファイルを指定します
-
-of
- 出力ファイル形式を指定します
-
json
,ejson
,html
,md
,csv
,ecsv
またはall
で指定できます - デフォルトでは
json
形式です
個人的テンプレート
- ディレクトリ列挙
ディレクトリを再帰的に列挙し、カラーで出力、結果をファイルにjsonで保存します。
ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -u http://example.com/FUZZ -recursion -recursion-depth 1 -ic -c -o ffuf_result.json
- サブドメイン列挙
ffuf -c -w /usr/share/wordlists/secLists/Discovery/DNS/subdomains-top1million-5000.txt -H "Host: FUZZ.example.com" -u http://example.com -fs <size>
- リクエストファイルでファジング
リクエストファイルの内容は適宜FUZZ
で置き換える
$ ffuf -c -w port.txt -request request.txt -u http://<target> -fl <content length> -fs <response size>
おすすめ教材
TryHackMeに無料ルームでFFUFのルームがあるので学習にお勧めです。