工具使用要点60 条

ffuf 目录与参数发现

ffuf 通过 FUZZ 占位做字典发现:用状态码/响应大小过滤噪音、限速控制请求量;先用小字典校准,再逐步扩大。

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,可能影响同一出口的其他评估工作;限速并记录请求量,必要时提前向客户报备来源地址。

易错点

  • 不设过滤规则直接跑大字典,结果几乎全是软 404 噪音,无法得出可用结论
  • 用大字典加高并发,触发 WAF 封禁甚至牵连同出口的其他测试
  • 字典与实际技术栈不匹配(如给 Java 站点用 PHP 路径字典),覆盖面被严重低估
  • 忽略 URL 编码与大小写变体,漏掉真实存在的路径
  • 只关注 200 响应,忽略 301/302 跳转与 403 提示的资源存在信息

数据来源与参考

  • ffuf 官方仓库(README)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌