jpskill.com
🛠️ 開発・MCP コミュニティ 🔴 エンジニア向け 👤 エンジニア・AI開発者

🛠️ Ffuf Web Fuzzing

ffuf-web-fuzzing

Webサイトの脆弱性を探す侵入テスト(

⏱ ボイラープレート実装 半日 → 30分

📺 まず動画で見る(YouTube)

▶ 【衝撃】最強のAIエージェント「Claude Code」の最新機能・使い方・プログラミングをAIで効率化する超実践術を解説! ↗

※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。

📜 元の英語説明(参考)

Expert guidance for ffuf web fuzzing during penetration testing, including authenticated fuzzing with raw requests, auto-calibration, and result analysis

🇯🇵 日本人クリエイター向け解説

一言でいうと

Webサイトの脆弱性を探す侵入テスト(

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o ffuf-web-fuzzing.zip https://jpskill.com/download/2849.zip && unzip -o ffuf-web-fuzzing.zip && rm ffuf-web-fuzzing.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/2849.zip -OutFile "$d\ffuf-web-fuzzing.zip"; Expand-Archive "$d\ffuf-web-fuzzing.zip" -DestinationPath $d -Force; ri "$d\ffuf-web-fuzzing.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して ffuf-web-fuzzing.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → ffuf-web-fuzzing フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-17
同梱ファイル
1

💬 こう話しかけるだけ — サンプルプロンプト

  • Ffuf Web Fuzzing を使って、最小構成のサンプルコードを示して
  • Ffuf Web Fuzzing の主な使い方と注意点を教えて
  • Ffuf Web Fuzzing を既存プロジェクトに組み込む方法を教えて

これをClaude Code に貼るだけで、このSkillが自動発動します。

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[スキル名] ffuf-web-fuzzing

FFUF (Fuzz Faster U Fool) スキル

使用場面

  • 許可されたセキュリティテストまたはペネトレーションテスト中に、ffuf を使用してウェブターゲットをファジングしている場合。
  • コンテンツディスカバリ、サブドメイン列挙、パラメータファジング、または認証済みリクエストファジングを含むタスクの場合。
  • ワードリスト、フィルタリング、キャリブレーション、および ffuf の結果を効率的に解釈するためのガイダンスが必要な場合。

概要

FFUF は Go で書かれた高速なウェブファザーで、隠されたコンテンツ、ディレクトリ、ファイル、サブドメインを発見し、ペネトレーションテスト中に脆弱性をテストするために設計されています。dirb や dirbuster のような従来のツールよりも大幅に高速です。

インストール

# Go を使用
go install github.com/ffuf/ffuf/v2@latest

# Homebrew (macOS) を使用
brew install ffuf

# バイナリダウンロード
# ダウンロード元: https://github.com/ffuf/ffuf/releases/latest

コアコンセプト

FUZZ キーワード

FUZZ キーワードは、ワードリストのエントリに置き換えられるプレースホルダーとして使用されます。どこにでも配置できます。

  • URL: https://target.com/FUZZ
  • ヘッダー: -H "Host: FUZZ"
  • POST データ: -d "username=admin&password=FUZZ"
  • カスタムキーワードを使用した複数の場所: -w wordlist.txt:CUSTOM の後、FUZZ の代わりに CUSTOM を使用します。

マルチワードリストモード

  • clusterbomb: すべての組み合わせをテストします (デフォルト) - 直積
  • pitchfork: ワードリストを並行して反復処理します (1対1のマッチング)
  • sniper: 一度に1つの位置をテストします (複数の FUZZ 位置の場合)

一般的な使用例

1. ディレクトリとファイルの発見

# 基本的なディレクトリファジング
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ

# ファイル拡張子付き
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -e .php,.html,.txt,.pdf

# 色付きで詳細な出力
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -c -v

# 再帰的 (ネストされたディレクトリを検索)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -recursion -recursion-depth 2

2. サブドメイン列挙

# 仮想ホストの発見
ffuf -w /path/to/subdomains.txt -u https://target.com -H "Host: FUZZ.target.com" -fs 4242

# 注: -fs 4242 はサイズ 4242 の応答を除外します (デフォルトの応答サイズに基づいて調整してください)

3. パラメータファジング

# GET パラメータ名
ffuf -w /path/to/params.txt -u https://target.com/script.php?FUZZ=test_value -fs 4242

# GET パラメータ値
ffuf -w /path/to/values.txt -u https://target.com/script.php?id=FUZZ -fc 401

# 複数のパラメータ
ffuf -w params.txt:PARAM -w values.txt:VAL -u https://target.com/?PARAM=VAL -mode clusterbomb

4. POST データファジング

# 基本的な POST ファジング
ffuf -w /path/to/passwords.txt -X POST -d "username=admin&password=FUZZ" -u https://target.com/login.php -fc 401

# JSON POST データ
ffuf -w entries.txt -u https://target.com/api -X POST -H "Content-Type: application/json" -d '{"name": "FUZZ", "key": "value"}' -fr "error"

# 複数の POST フィールドのファジング
ffuf -w users.txt:USER -w passes.txt:PASS -X POST -d "username=USER&password=PASS" -u https://target.com/login -mode pitchfork

5. ヘッダーファジング

# カスタムヘッダー
ffuf -w /path/to/wordlist.txt -u https://target.com -H "X-Custom-Header: FUZZ"

# 複数のヘッダー
ffuf -w /path/to/wordlist.txt -u https://target.com -H "User-Agent: FUZZ" -H "X-Forwarded-For: 127.0.0.1"

フィルタリングとマッチング

マッチャー (結果を含める)

  • -mc: ステータスコードをマッチング (デフォルト: 200-299,301,302,307,401,403,405,500)
  • -ml: 行数をマッチング
  • -mr: 正規表現をマッチング
  • -ms: 応答サイズをマッチング
  • -mt: 応答時間をマッチング (例: >100 または <100 ミリ秒)
  • -mw: 単語数をマッチング

フィルター (結果を除外する)

  • -fc: ステータスコードをフィルター (例: -fc 404,403,401)
  • -fl: 行数をフィルター
  • -fr: 正規表現をフィルター (例: -fr "error")
  • -fs: 応答サイズをフィルター (例: -fs 42,4242)
  • -ft: 応答時間をフィルター
  • -fw: 単語数をフィルター

自動キャリブレーション (デフォルトで使用してください!)

重要: 特定の理由がない限り、常に -ac を使用してください。これは、Claude が結果を分析する際に特に重要であり、ノイズと誤検知を劇的に減らします。

# 自動キャリブレーション - 常にこれを使用してください
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -ac

# ホストごとの自動キャリブレーション (複数のホストに便利)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -ach

# カスタム自動キャリブレーション文字列 (特定のパターン用)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -acc "404NotFound"

なぜ -ac が不可欠なのか:

  • 繰り返される誤検知応答を自動的に検出し、フィルターします。
  • ランダムなコンテンツを持つ動的なウェブサイトからのノイズを除去します。
  • 人間と Claude の両方にとって結果分析をはるかに容易にします。
  • 何千もの同一の 404/403 応答が出力を乱雑にするのを防ぎます。
  • ターゲットの特定の動作に適応します。

Claude が ffuf の結果を分析する場合、-ac は必須です - これがないと、Claude は興味深い異常を見つける代わりに、何千もの誤検知をふるいにかけるのに時間を浪費してしまいます。

レート制限とタイミング

レート制御

# 1秒あたり2リクエストに制限 (ステルスモード)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -rate 2

# リクエスト間に遅延を追加 (0.1秒から2秒のランダム)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -p 0.1-2.0

# 同時スレッド数を設定 (デフォルト: 40)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -t 10

時間制限

# 最大合計実行時間 (60秒)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -maxtime 60

# ジョブごとの最大時間 (再帰と併用すると便利)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -maxtime-job 60 -recursion

出力オプション

出力形式

# JSON 出力
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -o results.json

# HTML 出力
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -of html -o results.html

# CSV 出力
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -of csv -o resul
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

FFUF (Fuzz Faster U Fool) Skill

When to Use

  • You are fuzzing web targets with ffuf during authorized security testing or penetration testing.
  • The task involves content discovery, subdomain enumeration, parameter fuzzing, or authenticated request fuzzing.
  • You need guidance on wordlists, filtering, calibration, and interpreting ffuf results efficiently.

Overview

FFUF is a fast web fuzzer written in Go, designed for discovering hidden content, directories, files, subdomains, and testing for vulnerabilities during penetration testing. It's significantly faster than traditional tools like dirb or dirbuster.

Installation

# Using Go
go install github.com/ffuf/ffuf/v2@latest

# Using Homebrew (macOS)
brew install ffuf

# Binary download
# Download from: https://github.com/ffuf/ffuf/releases/latest

Core Concepts

The FUZZ Keyword

The FUZZ keyword is used as a placeholder that gets replaced with entries from your wordlist. You can place it anywhere:

  • URLs: https://target.com/FUZZ
  • Headers: -H "Host: FUZZ"
  • POST data: -d "username=admin&password=FUZZ"
  • Multiple locations with custom keywords: -w wordlist.txt:CUSTOM then use CUSTOM instead of FUZZ

Multi-wordlist Modes

  • clusterbomb: Tests all combinations (default) - cartesian product
  • pitchfork: Iterates through wordlists in parallel (1-to-1 matching)
  • sniper: Tests one position at a time (for multiple FUZZ positions)

Common Use Cases

1. Directory and File Discovery

# Basic directory fuzzing
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ

# With file extensions
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -e .php,.html,.txt,.pdf

# Colored and verbose output
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -c -v

# With recursion (finds nested directories)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -recursion -recursion-depth 2

2. Subdomain Enumeration

# Virtual host discovery
ffuf -w /path/to/subdomains.txt -u https://target.com -H "Host: FUZZ.target.com" -fs 4242

# Note: -fs 4242 filters out responses of size 4242 (adjust based on default response size)

3. Parameter Fuzzing

# GET parameter names
ffuf -w /path/to/params.txt -u https://target.com/script.php?FUZZ=test_value -fs 4242

# GET parameter values
ffuf -w /path/to/values.txt -u https://target.com/script.php?id=FUZZ -fc 401

# Multiple parameters
ffuf -w params.txt:PARAM -w values.txt:VAL -u https://target.com/?PARAM=VAL -mode clusterbomb

4. POST Data Fuzzing

# Basic POST fuzzing
ffuf -w /path/to/passwords.txt -X POST -d "username=admin&password=FUZZ" -u https://target.com/login.php -fc 401

# JSON POST data
ffuf -w entries.txt -u https://target.com/api -X POST -H "Content-Type: application/json" -d '{"name": "FUZZ", "key": "value"}' -fr "error"

# Fuzzing multiple POST fields
ffuf -w users.txt:USER -w passes.txt:PASS -X POST -d "username=USER&password=PASS" -u https://target.com/login -mode pitchfork

5. Header Fuzzing

# Custom headers
ffuf -w /path/to/wordlist.txt -u https://target.com -H "X-Custom-Header: FUZZ"

# Multiple headers
ffuf -w /path/to/wordlist.txt -u https://target.com -H "User-Agent: FUZZ" -H "X-Forwarded-For: 127.0.0.1"

Filtering and Matching

Matchers (Include Results)

  • -mc: Match status codes (default: 200-299,301,302,307,401,403,405,500)
  • -ml: Match line count
  • -mr: Match regex
  • -ms: Match response size
  • -mt: Match response time (e.g., >100 or <100 milliseconds)
  • -mw: Match word count

Filters (Exclude Results)

  • -fc: Filter status codes (e.g., -fc 404,403,401)
  • -fl: Filter line count
  • -fr: Filter regex (e.g., -fr "error")
  • -fs: Filter response size (e.g., -fs 42,4242)
  • -ft: Filter response time
  • -fw: Filter word count

Auto-Calibration (USE BY DEFAULT!)

CRITICAL: Always use -ac unless you have a specific reason not to. This is especially important when having Claude analyze results, as it dramatically reduces noise and false positives.

# Auto-calibration - ALWAYS USE THIS
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -ac

# Per-host auto-calibration (useful for multiple hosts)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -ach

# Custom auto-calibration string (for specific patterns)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -acc "404NotFound"

Why -ac is essential:

  • Automatically detects and filters repetitive false positive responses
  • Removes noise from dynamic websites with random content
  • Makes results analysis much easier for both humans and Claude
  • Prevents thousands of identical 404/403 responses from cluttering output
  • Adapts to the target's specific behavior

When Claude analyzes your ffuf results, -ac is MANDATORY - without it, Claude will waste time sifting through thousands of false positives instead of finding the interesting anomalies.

Rate Limiting and Timing

Rate Control

# Limit to 2 requests per second (stealth mode)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -rate 2

# Add delay between requests (0.1 to 2 seconds random)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -p 0.1-2.0

# Set number of concurrent threads (default: 40)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -t 10

Time Limits

# Maximum total execution time (60 seconds)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -maxtime 60

# Maximum time per job (useful with recursion)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -maxtime-job 60 -recursion

Output Options

Output Formats

# JSON output
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -o results.json

# HTML output
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -of html -o results.html

# CSV output
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -of csv -o results.csv

# All formats
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -of all -o results

# Silent mode (no progress, only results)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -s

# Pipe to file with tee
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -s | tee results.txt

Advanced Techniques

Using Raw HTTP Requests (Critical for Authenticated Fuzzing)

This is one of the most powerful features of ffuf, especially for authenticated requests with complex headers, cookies, or tokens.

Workflow:

  1. Capture a full authenticated request (from Burp Suite, browser DevTools, etc.)
  2. Save it to a file (e.g., req.txt)
  3. Replace the value you want to fuzz with the FUZZ keyword
  4. Use the --request flag
# From a file containing raw HTTP request
ffuf --request req.txt -w /path/to/wordlist.txt -ac

Example req.txt file:

POST /api/v1/users/FUZZ HTTP/1.1
Host: target.com
User-Agent: Mozilla/5.0
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Cookie: session=abc123xyz; csrftoken=def456
Content-Type: application/json
Content-Length: 27

{"action":"view","id":"1"}

Use Cases:

  • Fuzzing authenticated endpoints with complex auth headers
  • Testing API endpoints with JWT tokens
  • Fuzzing with CSRF tokens, session cookies, and custom headers
  • Testing endpoints that require specific User-Agents or Accept headers
  • POST/PUT/DELETE requests with authentication

Pro Tips:

  • You can place FUZZ in multiple locations: URL path, headers, body
  • Use -request-proto https if needed (default is https)
  • Always use -ac to filter out authenticated "not found" or error responses
  • Great for IDOR testing: fuzz user IDs, document IDs, etc. in authenticated contexts
# Common authenticated fuzzing patterns
ffuf --request req.txt -w user_ids.txt -ac -mc 200 -o results.json

# With multiple FUZZ positions using custom keywords
ffuf --request req.txt -w endpoints.txt:ENDPOINT -w ids.txt:ID -mode pitchfork -ac

Proxy Usage

# HTTP proxy (useful for Burp Suite)
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -x http://127.0.0.1:8080

# SOCKS5 proxy
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -x socks5://127.0.0.1:1080

# Replay matched requests through proxy
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -replay-proxy http://127.0.0.1:8080

Cookie and Authentication

# Using cookies
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -b "sessionid=abc123; token=xyz789"

# Client certificate authentication
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -cc client.crt -ck client.key

Encoding

# URL encoding
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -enc 'FUZZ:urlencode'

# Multiple encodings
ffuf -w /path/to/wordlist.txt -u https://target.com/FUZZ -enc 'FUZZ:urlencode b64encode'

Testing for Vulnerabilities

# SQL injection testing
ffuf -w sqli_payloads.txt -u https://target.com/page.php?id=FUZZ -fs 1234

# XSS testing
ffuf -w xss_payloads.txt -u https://target.com/search?q=FUZZ -mr "<script>"

# Command injection
ffuf -w cmdi_payloads.txt -u https://target.com/execute?cmd=FUZZ -fr "error"

Batch Processing Multiple Targets

# Process multiple URLs
cat targets.txt | xargs -I@ sh -c 'ffuf -w wordlist.txt -u @/FUZZ -ac'

# Loop through multiple targets with results
for url in $(cat targets.txt); do 
    ffuf -w wordlist.txt -u $url/FUZZ -ac -o "results_$(echo $url | md5sum | cut -d' ' -f1).json"
done

Best Practices

1. ALWAYS Use Auto-Calibration

Use -ac by default for every scan. This is non-negotiable for productive pentesting:

ffuf -w wordlist.txt -u https://target.com/FUZZ -ac

2. Use Raw Requests for Authentication

Don't struggle with command-line flags for complex auth. Capture the full request and use --request:

# 1. Capture authenticated request from Burp/DevTools
# 2. Save to req.txt with FUZZ keyword in place
# 3. Run with -ac
ffuf --request req.txt -w wordlist.txt -ac -o results.json

3. Use Appropriate Wordlists

  • Directory discovery: SecLists Discovery/Web-Content (raft-large-directories.txt, directory-list-2.3-medium.txt)
  • Subdomains: SecLists Discovery/DNS (subdomains-top1million-5000.txt)
  • Parameters: SecLists Discovery/Web-Content (burp-parameter-names.txt)
  • Usernames: SecLists Usernames
  • Passwords: SecLists Passwords
  • Source: https://github.com/danielmiessler/SecLists

3. Rate Limiting for Stealth

Use -rate to avoid triggering WAF/IDS or overwhelming the server:

ffuf -w wordlist.txt -u https://target.com/FUZZ -rate 2 -t 10

4. Filter Strategically

  • Check the default response first to identify common response sizes, status codes, or patterns
  • Use -fs to filter by size or -fc to filter by status code
  • Combine filters: -fc 403,404 -fs 1234

5. Save Results Appropriately

Always save results to a file for later analysis:

ffuf -w wordlist.txt -u https://target.com/FUZZ -o results.json -of json

6. Use Interactive Mode

Press ENTER during execution to drop into interactive mode where you can:

  • Adjust filters on the fly
  • Save current results
  • Restart the scan
  • Manage the queue

7. Recursion Depth

Be careful with recursion depth to avoid getting stuck in infinite loops or overwhelming the server:

ffuf -w wordlist.txt -u https://target.com/FUZZ -recursion -recursion-depth 2 -maxtime-job 120

Common Patterns and One-Liners

Quick Directory Scan

ffuf -w ~/wordlists/common.txt -u https://target.com/FUZZ -mc 200,301,302,403 -ac -c -v

Comprehensive Scan with Extensions

ffuf -w ~/wordlists/raft-large-directories.txt -u https://target.com/FUZZ -e .php,.html,.txt,.bak,.old -ac -c -v -o results.json

Authenticated Fuzzing (Raw Request)

# 1. Save your authenticated request to req.txt with FUZZ keyword
# 2. Run:
ffuf --request req.txt -w ~/wordlists/api-endpoints.txt -ac -o results.json -of json

API Endpoint Discovery

ffuf -w ~/wordlists/api-endpoints.txt -u https://api.target.com/v1/FUZZ -H "Authorization: Bearer TOKEN" -mc 200,201 -ac -c

Subdomain Discovery with Auto-Calibration

ffuf -w ~/wordlists/subdomains-top5000.txt -u https://FUZZ.target.com -ac -c -v

POST Login Brute Force

ffuf -w ~/wordlists/passwords.txt -X POST -d "username=admin&password=FUZZ" -u https://target.com/login -fc 401 -rate 5 -ac

IDOR Testing with Auth

# Use req.txt with authenticated headers and FUZZ in the ID parameter
ffuf --request req.txt -w numbers.txt -ac -mc 200 -fw 100-200

Configuration File

Create ~/.config/ffuf/ffufrc for default settings:

[http]
headers = ["User-Agent: Mozilla/5.0"]
timeout = 10

[general]
colors = true
threads = 40

[matcher]
status = "200-299,301,302,307,401,403,405,500"

Troubleshooting

Too Many False Positives

  • Use -ac for auto-calibration
  • Check default response and filter by size with -fs
  • Use regex filtering with -fr

Too Slow

  • Increase threads: -t 100
  • Reduce wordlist size
  • Use -ignore-body if you don't need response content

Getting Blocked

  • Reduce rate: -rate 2
  • Add delays: -p 0.5-1.5
  • Reduce threads: -t 10
  • Randomize User-Agent
  • Use proxy rotation

Missing Results

  • Check if you're filtering too aggressively
  • Use -mc all to see all responses
  • Disable auto-calibration temporarily
  • Use verbose mode -v to see what's happening

Resources

Quick Reference Card

Task Command Template
Directory Discovery ffuf -w wordlist.txt -u https://target.com/FUZZ -ac
Subdomain Discovery ffuf -w subdomains.txt -u https://FUZZ.target.com -ac
Parameter Fuzzing ffuf -w params.txt -u https://target.com/page?FUZZ=value -ac
POST Data Fuzzing ffuf -w wordlist.txt -X POST -d "param=FUZZ" -u https://target.com/endpoint
With Extensions Add -e .php,.html,.txt
Filter Status Add -fc 404,403
Filter Size Add -fs 1234
Rate Limit Add -rate 2
Save Output Add -o results.json
Verbose Add -c -v
Recursion Add -recursion -recursion-depth 2
Through Proxy Add -x http://127.0.0.1:8080

Additional Resources

This skill includes supplementary materials in the resources/ directory:

Resource Files

  • WORDLISTS.md: Comprehensive guide to SecLists wordlists, recommended lists for different scenarios, file extensions, and quick reference patterns
  • REQUEST_TEMPLATES.md: Pre-built req.txt templates for common authentication scenarios (JWT, OAuth, session cookies, API keys, etc.) with usage examples

Helper Script

  • ffuf_helper.py: Python script to assist with:
    • Analyzing ffuf JSON results for anomalies and interesting findings
    • Creating req.txt template files from command-line arguments
    • Generating number-based wordlists for IDOR testing

Helper Script Usage:

# Analyze results to find interesting anomalies
python3 ffuf_helper.py analyze results.json

# Create authenticated request template
python3 ffuf_helper.py create-req -o req.txt -m POST -u "https://api.target.com/users" \
    -H "Authorization: Bearer TOKEN" -d '{"action":"FUZZ"}'

# Generate IDOR testing wordlist
python3 ffuf_helper.py wordlist -o ids.txt -t numbers -s 1 -e 10000

When to use resources:

  • Users need wordlist recommendations → Reference WORDLISTS.md
  • Users need help with authenticated requests → Reference REQUEST_TEMPLATES.md
  • Users want to analyze results → Use ffuf_helper.py analyze
  • Users need to generate req.txt → Use ffuf_helper.py create-req
  • Users need number ranges for IDOR → Use ffuf_helper.py wordlist

Notes for Claude

When helping users with ffuf:

  1. ALWAYS include -ac in every command - This is mandatory for productive pentesting and result analysis
  2. When users mention authenticated fuzzing or provide auth tokens/cookies:
    • Suggest creating a req.txt file with the full HTTP request
    • Show them how to insert FUZZ where they want to fuzz
    • Use ffuf --request req.txt -w wordlist.txt -ac
  3. Always recommend starting with -ac for auto-calibration
  4. Suggest appropriate wordlists from SecLists based on the task
  5. Remind users to use rate limiting (-rate) for production targets
  6. Encourage saving output to files for documentation: -o results.json
  7. Suggest filtering strategies based on initial reconnaissance
  8. Always use the FUZZ keyword (case-sensitive)
  9. Consider stealth: lower threads, rate limiting, and delays for sensitive targets
  10. For pentesting reports, use -of html or -of csv for client-friendly formats
  11. When analyzing ffuf results for users:
    • Assume they used -ac (if not, results will be too noisy)
    • Focus on anomalies: different status codes, response sizes, timing
    • Look for interesting endpoints: admin, api, backup, config, .git, etc.
    • Flag potential vulnerabilities: error messages, stack traces, version info
    • Suggest follow-up fuzzing on interesting findings

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.