mcpField
F
ffuf-web-fuzzing

ffuf-web-fuzzing

github.com/trailofbits安全523100 次安装15 周前更新
代码仓库

关于 ffuf-web-fuzzing

ffuf-web-fuzzing 为获授权的渗透测试人员提供 ffuf 使用指导,用于发现网页路径、子域名、API 端点及参数行为。内容涵盖认证请求、扫描控制和 JSON 结果分析,并强调授权确认与生产环境限速。

主要功能

  1. 01指导目录和文件发现
  2. 02子域名与 API 端点模糊测试
  3. 03使用原始请求进行认证测试
  4. 04字典、过滤与限速建议
  5. 05分析 JSON 结果及异常
  6. 06扫描前确认授权

适用场景

  1. 01发现授权目标上的网页路径
  2. 02使用 Bearer token 测试 API 端点
  3. 03通过捕获的会话测试认证请求
  4. 04检查保存结果中的异常响应

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/trailofbits/skills-curated --skill ffuf-web-fuzzing

安装后在 Claude Code 中输入/ffuf-web-fuzzing确认已加载。

附带文件references/request-templates.mdreferences/wordlists.md

详细介绍

FFUF Web 模糊测试

在获得授权的渗透测试中有效使用 ffuf(Fuzz Faster U Fool)的指南。

前提条件

必须安装 ffuf:brew install ffuf(macOS)或 go install github.com/ffuf/ffuf/v2@latest

适用场景

  • 对 Web 目标进行目录、文件或子域名发现
  • 对 API 端点、参数或 POST 数据进行模糊测试
  • 使用原始 HTTP 请求进行经过身份验证的模糊测试
  • 分析 ffuf JSON 输出,查找异常和有趣的发现
  • 制定模糊测试策略(词表选择、过滤、速率限制)
  • 使用经过身份验证的会话进行 IDOR 测试

不适用场景

  • 目标系统不在授权范围内,或授权情况不明确
  • 被动侦察更合适(请改用 OSINT 工具)
  • 目标是生产系统,且尚未配置速率限制
  • 需要完整的漏洞扫描器(请使用 Burp Suite、Nuclei 等)
  • 测试需要多步交互的逻辑缺陷

应当拒绝的理由

  • “自动校准是可选的”——-ac 是必需的。没有它,结果会被误报淹没,分析工作也会白费。
  • “线程越多,结果越快”——使用 -t 200 猛烈攻击目标会触发 WAF、导致你被封锁,还可能使预发布环境崩溃。针对生产目标,请从 -t 10 -rate 2 开始。
  • “我之后再过滤”——扫描前就应设置过滤条件。使用 22 万条词表运行扫描,却不设过滤条件,然后再试图从噪声中 grep 出结果,这完全本末倒置。
  • “默认词表就够了”——词表选择是最重要的决定。通用词表会漏掉特定技术对应的路径。请参阅 references/wordlists.md。
  • “原始请求太麻烦了”——进行经过身份验证的模糊测试时,--request req.txt 比串联使用 -H 和 -b 标志更简单可靠。捕获一次,多次进行模糊测试。

关键规则

  1. 始终使用 -ac(自动校准),除非有具体且记录在案的理由不使用
  2. 始终保存输出,使用 -o results.json 以便后续分析
  3. 对生产目标进行速率限制,使用 -rate 和 -t 标志
  4. 进行身份验证时使用 --request——原始请求文件优于命令行标头串联
  5. 先确认授权——运行任何扫描前,确认用户拥有针对该目标的书面许可。如不明确,请先询问。

核心概念

FUZZ 关键字
# In URL path
ffuf -w wordlist.txt -u https://target.com/FUZZ -ac

# In headers
ffuf -w wordlist.txt -u https://target.com -H "Host: FUZZ.target.com" -ac

# In POST body
ffuf -w wordlist.txt -X POST -d "user=admin&pass=FUZZ" -u https://target.com/login -ac

# Multiple positions with custom keywords
ffuf -w endpoints.txt:EP -w ids.txt:ID -u https://target.com/EP/ID -mode pitchfork -ac
自动校准

-ac 会自动检测并过滤重复出现的误报响应。它会根据目标的特定行为进行调整,并去除动态内容带来的噪声。

ffuf -w wordlist.txt -u https://target.com/FUZZ -ac        # Standard
ffuf -w wordlist.txt -u https://target.com/FUZZ -ach       # Per-host (multi-host scans)
ffuf -w wordlist.txt -u https://target.com/FUZZ -acc "404" # Custom calibration string

常见模式

目录发现
ffuf -w /opt/SecLists/Discovery/Web-Content/raft-large-directories.txt \
     -u https://target.com/FUZZ -e .php,.html,.txt,.bak \
     -ac -c -v -o results.json
子域名枚举
ffuf -w /opt/SecLists/Discovery/DNS/subdomains-top1million-5000.txt \
     -u https://FUZZ.target.com -ac -c -v -o results.json
API 端点发现
ffuf -w /opt/SecLists/Discovery/Web-Content/api/api-endpoints.txt \
     -u https://api.target.com/v1/FUZZ \
     -H "Authorization: Bearer YOUR_TOKEN_HERE" -mc 200,201 -ac -c
使用原始请求进行经过身份验证的模糊测试

捕获完整的经过身份验证的请求,保存为 req.txt,并插入 FUZZ:

POST /api/v1/users/FUZZ HTTP/1.1
Host: target.com
Authorization: Bearer YOUR_TOKEN_HERE
Cookie: session=YOUR_SESSION_ID
Content-Type: application/json

{"action":"view","id":"1"}
ffuf --request req.txt -w wordlist.txt -ac -o results.json

有关涵盖 Bearer 令牌、会话 Cookie、API 密钥和 GraphQL 的预构建模板,请参阅 references/request-templates.md。

经过身份验证的模糊测试:Agent 工作流

经过身份验证的模糊测试需要真实凭据,Agent 无法独立获取这些凭据。用户提出经过身份验证的模糊测试时:

  1. 请用户提供以下其中一项:
    • 已包含身份验证标头的原始 HTTP 请求文件(req.txt)
    • 来自浏览器 DevTools 的 curl 命令(将其转换为 req.txt 格式)
    • 单独的凭据(Bearer 令牌、会话 Cookie、API 密钥)
  2. 如果用户提供 curl 命令,请将其转换为原始 HTTP 请求格式并写入 req.txt
  3. 如果用户提供单独的凭据,请使用 references/request-templates.md 中的模板,并替换为真实值
  4. 切勿伪造或猜测身份验证令牌
IDOR 测试
ffuf --request req.txt -w <(seq 1 10000) -ac -mc 200 -o idor_results.json

速率限制

环境标志说明
生产环境(隐蔽模式)-rate 2 -t 10避免触发 WAF
生产环境(普通模式)-rate 10 -t 20平衡配置
预发布/开发环境-rate 50 -t 40速度更快
本地/实验室无限制,-t 100最高速度

分析结果

将输出保存为 JSON(-o results.json),然后读取文件并重点关注:

  • 异常状态码 —— 除基准状态码 404/403 外的任何状态码
  • 大小异常值 —— 响应大小明显大于或小于平均值
  • URL 中的有趣关键词 —— admin、api、backup、config、.git、.env
  • 时间异常 —— 响应缓慢可能表示存在 SQL 注入或繁重的处理操作
  • 后续目标 —— 有趣的发现值得进行更深入的模糊测试

当自动校准不足以满足需求时,使用 -fs 按响应大小筛选,并使用 -fc 按状态码筛选。运行 ffuf -h 查看完整的匹配/筛选标志列表。

参考资料

评论

支持 Markdown