不幸的是——尽管带有 "-ac" 标志,ffuf 仍会生成大量无关条目。因此我创建了一个后处理工具来过滤掉这些条目。 此外,我发现在使用 "-ac" 时,大量相关条目被删除——尤其是当 ffuf 遇到 json 或 xml 文件时,"-ac" 可能会将它们完全丢弃。 此工具必须在 ffuf 运行完成后执行。另外,初始 ffuf 命令应使用以下标志运行:
-o /folder/to/results.json
-od /folder/to/bodies
-of json (default)
这会强制 ffuf 将 json 格式的汇总文件以及响应体写入磁盘。 添加 "-od" 不是强制性的,但建议添加。
我强烈建议__不要使用 "-ac" 标志__——尤其是如果你不想错过有用内容并希望使用这个 后处理工具。
Usage of ./ffufPostprocessing:
-result-file string
Path to the original ffuf result file (in json format)
-bodies-folder string
Path to the ffuf bodies folder (optional, if set results will be better)
-new-result-file string
Path to the new ffuf result file (optional)
-delete-bodies
Delete unnecessary body files after filtering (optional)
-overwrite-result-file
Overwrite original result file (optional)
-verbose
Verbose mode (Shows currently filtered results) (optional)
首先像往常一样运行 ffuf——我使用了一个非常简单的极简命令:
./ffuf -u yourtarget.com/FUZZ -w /path/to/wordlist -o /tmp/ffuf/results.json -od /tmp/ffuf/bodies/ -of json
运行完成后,你应该在指定文件夹中得到结果文件以及所有响应体。现在可以解析数据并过滤掉无关条目:
./ffufPostprocessing -result-file /tmp/ffuf/results.json -bodies-folder /tmp/ffuf/bodies/ -delete-bodies -overwrite-result-file
尤其是当设置了 -od 时,这意味着我们拥有每个请求 URL 的所有 http 头和响应体——此工具将首先 分析所有响应体,并用以下数据点丰富初始结果 json 文件:
然后它会扫描整个新的结果文件,仅保留那些基于已知元数据类型唯一的条目。 如果发现这些值中的某一个总是不同(例如页面标题变化非常大)——在唯一性检查中会跳过该元数据类型。
一般来说,此工具总会保留少量 不 唯一的条目。例如,如果结果 json 文件 包含 300 个 http 状态 403(words、length 等完全相同)和 2 个唯一的 http 状态 200 响应,它不会丢弃全部 300 个 http 状态 403 条目。 它会在数据集中保留其中 X 个。
ffufPostprocessing 需要 golang 1.19
cd ffufPostprocessing
go build -o dist/ffufPostprocessing main.go
我不在乎。你可以随意使用这个工具。