
ffuf · Fuzz Faster U Fool · Go 编写的高速 Web 模糊测试工具部署与使用全指南
项目仓库: https://github.com/ffuf/ffuf
开源协议:MIT License · 语言:Go(要求 Go 1.20+) · 当前版本:v2.x ·
关键字:FUZZ 占位 · 支持:目录 / vhost / GET 参数 / POST
数据 / 外部 mutator
1 项目简介
ffuf(Fuzz Faster U Fool)是一个用 Go 编写的快速 Web
模糊测试(web fuzzer)工具。通过在 URL、HTTP 头或 POST
数据中放置 FUZZ 关键字占位,ffuf
会用字典批量替换该位置并发送请求,再按状态码、响应大小、行数、字数等规则过滤,快速发现隐藏目录、虚拟主机、可用参数与注入点。
1.1 核心信息一览
| 项目项 | 内容 |
|---|---|
| 项目名称 | ffuf(Fuzz Faster U Fool) |
| 仓库地址 | github.com/ffuf/ffuf |
| 项目定位 | 高速 Web 目录 / vhost / 参数 / POST 模糊测试工具 |
| 开源协议 | MIT(见 LICENSE) |
| 语言 | Go(1.20+) |
| 安装方式 | Release 二进制、Scoop / Winget / Homebrew、go install、源码构建 |
| 默认端口 | 无网络服务(本地命令行工具) |
| 系统入口 | ffuf 命令 |
| 配置文件 | $XDG_CONFIG_HOME/ffuf/ffufrc |
1.2 适用场景
- Web 目录 / 内容发现:
-u https://target/FUZZ批量枚举路径。 - 虚拟主机发现:fuzz
Host头并过滤默认响应大小。 - GET 参数名 / 参数值 fuzzing;POST body 与 JSON fuzzing。
- 配合 Radamsa 等外部 mutator 生成畸形 payload 做模糊测试。
- 递归目录扫描:
-recursion自动深入发现的子目录。
1.3 能力边界(官方口径)
- ffuf 是 fuzz 工具,不是漏洞利用框架;它负责“批量发请求 + 过滤结果”,是否构成漏洞需人工复核。
- 官方建议用
https://github.com/adamtlangley/ffufme容器或http://ffuf.me在线靶场练习,避免在未授权目标上测试。 - 本地
go build的版本会显示git-<date>-<commit>,官方强调权威发布版本以 Releases 页面二进制为准。
2 功能特性
FUZZ占位符:在 URL、Header、POST 数据任意位置放置FUZZ,即可对该处 fuzz。- 强大的匹配 / 过滤:按状态码
-mc/-fc、响应大小-ms/-fs、行数-ml/-fl、字数-mw/-fw、正则-mr/-fr、响应时间-mt/-ft过滤。 - 自动校准:
-ac自动校准过滤选项;-acc/-ach/-acs自定义校准。 - 递归扫描:
-recursion、-recursion-depth、-recursion-strategy(default / greedy)。 - 限速与延时:
-p(延时秒数或范围)、-rate(每秒请求数)、-t(并发线程,默认 40)。 - 外部 mutator:
--input-cmd调用 Radamsa 等命令生成 payload,$FFUF_NUM作为种子。 - 多字典模式:
-w params.txt:PARAM -w values.txt:VAL,模式 clusterbomb / pitchfork / sniper。 - 交互式模式:运行中按
ENTER进入交互 shell,动态调整过滤器、管理队列、保存结果。 - 多种输出格式:
-of json, ejson, html, md, csv, ecsv,-o写文件。 - 配置文件:默认
ffufrc自动加载,-config指定配置文件;命令行参数覆盖配置。
3 官方界面预览
开头封面即 ffuf 官方吉祥物(README
官方素材)。运行时终端显示进度、已命中条目、状态码与大小;按
ENTER 可进入交互模式,用
show、fs、fc、rate、savejson
等命令动态调整。
4 官方跳转链接汇总
| 类别 | 链接 | 说明 |
|---|---|---|
| 仓库主页 | https://github.com/ffuf/ffuf | 源码、Issues、Releases |
| Releases | github.com/ffuf/ffuf/releases/latest | 预编译二进制 |
| Wiki | github.com/ffuf/ffuf/wiki | 详细文档与示例 |
| ffufrc 示例 | ffufrc.example | 配置文件模板 |
| 练习靶场 | github.com/adamtlangley/ffufme | 本地练习容器 |
| 在线练习 | http://ffuf.me | 官方在线靶场 |
| Awesome 指南 | codingo.io FFUF 指南 | 扩展教程 |
| 许可证 | LICENSE | MIT |
5 前置要求与服务器配置
5.1 软件前提
- 使用 Release 二进制:无需 Go 环境,下载解压即可运行。
- 使用 go install / 源码构建:需要 Go 1.20 或更高版本。
- 包管理器:Windows 可用
Scoop(
scoop install ffuf)或 Winget(winget install ffuf.ffuf);macOS 可用 Homebrew(brew install ffuf)。 - 字典文件:自备。
5.2 硬件建议
- 普通主机即可;扫描速度取决于网络与目标并发承受能力。
- 官方默认并发线程为 40;过高并发易触发目标 WAF / 封禁。
5.3 端口与资源
- 工具不监听端口;作为客户端向外发请求。
6 方式一:Release 二进制 / 包管理器(推荐)
# macOS
brew install ffuf
# Windows
scoop install ffuf
# 或
winget install ffuf.ffuf
# 或直接从 Releases 下载对应平台二进制解压运行7 方式二:go install / 源码构建
go install github.com/ffuf/ffuf/v2@latest
# 或源码构建
git clone https://github.com/ffuf/ffuf
cd ffuf
go get
go build8 常用参数与示例
| 命令 | 用途 |
|---|---|
ffuf -w wordlist -u https://target/FUZZ |
目录发现 |
ffuf -w vhosts -u https://target -H "Host: FUZZ" -fs 4242 |
vhost 发现(过滤默认响应大小) |
ffuf -w params -u https://target/script.php?FUZZ=test -fs 4242 |
GET 参数名 fuzz |
ffuf -w vals -u https://target/script.php?valid_name=FUZZ -fc 401 |
GET 参数值 fuzz(过滤 401) |
ffuf -w postdata -X POST -d "username=admin&password=FUZZ" -u https://target/login.php -fc 401 |
POST fuzz |
-maxtime 60 / -maxtime-job 60 |
限制总 / 单任务时长 |
-recursion -recursion-depth 2 |
递归扫描 |
-t 40 -p 0.1 -rate 100 |
并发 / 延时 / 限速 |
-of json -o out.json |
输出为 JSON |
9 常用运维命令
- 查看帮助与版本:
ffuf -h、ffuf -V - 目录发现并保存:
ffuf -w dirs.txt -u https://target/FUZZ -o out.json -of json - 交互模式:运行中按
ENTER,然后show、fs、fc、rate、savejson、resume。 - 更新:重新
go install或重新下载 Release 二进制。
10 常见故障排查
- 大量 403:用
-sf(>95% 响应为 403 时停止)自动停;降低并发或加延时。 - 误报多:用
-ac自动校准,或手动-fs/-fc过滤默认响应。 - 结果为空:确认目标可达,检查
-mc/-fc默认过滤(默认只匹配 2xx/301/302/307/401/403/405/500),可改用-mc all。 - 递归不生效:URL 必须以
FUZZ结尾才支持-recursion。 - 本地构建版本号不对:官方以 Releases 二进制为准。
11 风险与合规说明
- 合法性:ffuf 只能在你拥有或已获书面授权的目标上使用;未经授权对他人网站做 fuzzing 属违法行为。练习请用官方提供的 ffufme / ffuf.me 靶场。
- 许可证:MIT,可自由使用与再分发。
- 对目标影响:高并发 fuzz 易触发 WAF、限流、封
IP;建议用
-p/-rate限速。 - 本文整理自官方 README,命令与参数以官方仓库最新说明为准;不包含 star 数等动态数据。