ffuf 是怎么工作的
ffuf 用 FUZZ 占位符把字典内容注入到 URL、参数、请求头或请求体中,通过比对响应特征筛选出有效结果。它的难点不在跑起来,而在过滤:站点普遍对不存在的路径返回软 404(状态码 200 的定制错误页),不做校准就会得到成百上千条噪音,因此上手第一步永远是用一个已知不存在的路径确定过滤规则。
基本信息
| 核心用法 | -u 目标地址 + FUZZ 占位符 |
|---|---|
| 匹配过滤 | -mc/-fc 状态码,-fs/-ms 响应大小,-fw 词数,-fl 行数 |
| 并发控制 | -t 并发线程数,-rate 每秒请求上限 |
| 自动校准 | -ac 自动识别软 404 类噪音 |
| 扩展能力 | -H 自定义头,-b Cookie,-X 方法,-e 扩展名,-recursion 递归 |
典型使用场景
- 目录与文件发现:找未在导航中暴露的后台与接口
- 参数名枚举:发现隐藏参数与调试开关
- 虚拟主机发现:用 Host 头 FUZZ 找同 IP 上的其他站点
- 接口版本枚举:批量测试 v1/v2 等路径变体
- 上传点扩展名测试:确认服务端允许的文件类型
发现示例
发现示例
ffuf -u https://example.com/FUZZ -w common.txt -mc 200,301,403 -rate 50 -t 20 # 目录发现,限定状态码并限速
ffuf -u 'https://example.com/api?FUZZ=1' -w params.txt -fs 0 # 参数名枚举,过滤指定大小
ffuf -u https://example.com -w subs.txt -H 'Host: FUZZ.example.com' # 虚拟主机发现
ffuf -u https://example.com/FUZZ -w dirs.txt -ac -c -of json -o out.json # 自动校准 + 彩色输出 + JSON 结果过滤与匹配参数
| 参数 | 含义 | 典型用法 |
|---|---|---|
| -mc | 匹配指定状态码 | 只看 200/301/403,排除 404 |
| -fc | 过滤指定状态码 | 过滤掉噪音状态码 |
| -fs / -ms | 按响应体大小过滤/匹配 | 软 404 常靠此项排除 |
| -fw / -fl | 按词数/行数过滤 | 内容长度不稳定的站点更有效 |
| -ac | 自动校准 | 自动学习并过滤默认响应 |
| -rate / -t | 速率与并发 | 大字典场景必须收紧 |
先小字典跑通、确认过滤规则有效,再换大字典扩大范围:反过来做会浪费大量请求额度,也更容易触发 WAF 封禁。
高频请求会被 WAF 判定为攻击并封禁来源 IP,可能影响同一出口的其他评估工作;限速并记录请求量,必要时提前向客户报备来源地址。