跳到主要内容

FUFF

ffuf -w url.txt:URL -w SecDictionary/filelak/H2-100.txt:FUZZ -u URL/FUZZ -c -o urldirout.html -of html

注意:ffuf执行多个字典时,默认采用clusterbomb模式,是顺序执行,如上面的命令,会先遍历完domian.txt,再遍历wordlist.txt。

domain写在前,wordlist在后,比反过来写更有效的防止触发网站的防御机制。若反过来写,则是先对同一域名尝试大量遍历,再转到下一个域名。

ffuf -w url.txt:URL -w SecDictionary/filelak/H2-9000.txt:FUZZ -u URL/FUZZ -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 uacq" -H "X-Originating-Ip: 127.0.0.1" -H "X-Remote-Ip: 127.0.0.1" -H "X-Forwarded-For: 127.0.0.1" -H "X-Remote-Addr: 127.0.0.1" -H "Cf-Connecting-Ip: 127.0.0.1" -fs 0  -fw 0 -ac -t 100 -c -o urldirout.csv -of csv

-fw : 按字数过滤 -fl :按行数过滤 -fs :按响应大小过滤 -fc : 按状态码过滤 -fr : 按正则表达式模式过滤

fuzz子域名:

ffuf -w hosts.txt -u https://example.org/ -H "Host: FUZZ" -mc 200

从文件或读取fuzz目标:

ffuf -request /request.txt -w ./wordlist.txt
# -request 参数指定需要读取的文件
# 常用场景:burpsuite获取了请求数据,保存到文件,修改文件在需要fuzz的地方加入FUZZ标志,ffuf读取文件进行扫描

其他可能用到的参数备注:

-s 仅输出简要的关键信息,可用于需要和其他脚本结合使用的场景。 -ac 自动校准过滤,ffuf通过发送一些随机字符获取200响应码的返回内容的长度,自动消除相同内容长度的响应。可能用到的场景:某些情况下,网站将错误信息或404页面重定向到某固定网页,并返回200响应码时,可自动排除噪音信息。 -p 请求延迟,指定每个请求之间经过指定范围内的随机延迟。如:-p 2,会在0.1-2秒之间随机延迟。 -rate 指定线程数,默认40 -recursion "2" 递归扫描 -e .txt,.pub,.bak,.zip,.rar 扫描指定后缀敏感文件(在字典基础上添加后缀)

中文说明:


Fuzz Faster U Fool - v2.0.0

HTTP 选项:
-H Header `"Name: Value"`,以冒号分隔。 接受多个 -H 标志。
-X 要使用的 HTTP 方法
-b Cookie 数据`"NAME1=VALUE1; NAME2=VALUE2"` 用于复制为 curl 功能。
-d POST 数据
-http2 使用 HTTP2 协议(默认值:false)
-ignore-body 不获取响应内容。 (默认值:false)
-r 遵循重定向(默认值:false)
-recursion 递归扫描。 仅支持 FUZZ 关键字,并且 URL (-u) 必须以它结尾。 (默认值:false)
-recursion-depth 最大递归深度。 (默认值:0)
-recursion-strategy 递归策略:“默认”用于基于重定向,“贪婪”用于递归所有匹配项(默认值:默认值)
-replay-proxy 使用此代理重播匹配的请求。
-sni 目标 TLS SNI,不支持 FUZZ 关键字
-timeout HTTP 请求超时秒数。 (默认值:10)
-u 目标网址
-x 代理 URL(SOCKS5 或 HTTP)。 例如:http://127.0.0.1:8080 或 socks5://127.0.0.1:8080

常规选项:
-V 显示版本信息。 (默认值:false)
-ac 自动校准过滤选项(默认值:false)
-acc 自定义自动校准字符串。 可以多次使用。 暗示-ac
-ach 每个主机自动校准(默认值:false)
-ack 自动校准关键字(默认值:FUZZ)
-acs 自动校准策略:“基本”或“高级”(默认值:基本)
-c 着色输出。 (默认值:false)
-config 从文件加载配置
-json JSON 输出,打印换行符分隔的 JSON 记录(默认值:false)
-maxtime 整个过程的最长运行时间(以秒为单位)。 (默认值:0)
-maxtime-job 每个作业的最长运行时间(以秒为单位)。 (默认值:0)
-noninteractive 禁用交互式控制台功能(默认值:false)
-p 请求之间的“延迟”秒数,或一系列随机延迟。 例如“0.1”或“0.1-2.0”
-rate 每秒请求率(默认值:0)
-s 不打印附加信息(静默模式)(默认值:false)
-sa 停止所有错误情况。 暗示-sf 和-se。 (默认值:false)
-scraperfile 自定义抓取文件路径
-scrapers 活动刮板组(默认值:全部)
-se 停止虚假错误(默认值:false)
-search 从 ffuf 历史中搜索一个 FFUFHASH payload
-sf 当 > 95% 的响应返回 403 Forbidden 时停止(默认值:false)
-t 并发线程数。 (默认值:40)
-v 详细输出,打印完整的 URL 和重定向位置(如果有)以及结果。 (默认值:false)

匹配器选项:
-mc 匹配 HTTP 状态代码,或“全部”代表所有内容。 (默认值:200,204,301,302,307,401,403,405,500)
-ml 匹配响应中的行数
-mmode 匹配器集合运算符。 两者之一:和,或(默认:或)
-mr 匹配正则表达式
-ms 匹配 HTTP 响应大小
-mt 匹配第一个响应字节的毫秒数,大于或小于。 例如:>100 或 <100
-mw 匹配响应中的字数

过滤器选项:
-fc 从响应中过滤 HTTP 状态代码。 逗号分隔的代码和范围列表
-fl 按响应中的行数过滤。 行数和范围的逗号分隔列表
-fmode 过滤器集运算符。 两者之一:和,或(默认:或)
-fr 过滤正则表达式
-fs 过滤器 HTTP 响应大小。 逗号分隔的大小和范围列表
-ft 按到第一个响应字节的毫秒数过滤,大于或小于。 例如:>100 或 <100
-fw 按响应中的字数过滤。 逗号分隔的字数和范围列表

输入选项:
-D DirSearch wordlist 兼容模式。 与 -e 标志一起使用。 (默认值:false)
-e 逗号分隔的扩展名列表。 扩展 FUZZ 关键字。
-ic 忽略单词列表注释(默认值:false)
-input-cmd 产生输入的命令。 使用此输入法时需要--input-num。 覆盖-w。
-input-num 要测试的输入数。 与 --input-cmd 结合使用。 (默认值:100)
-input-shell 用于运行命令的shell
-mode 多词表操作模式。 可用模式:集束炸弹、干草叉、狙击手(默认:集束炸弹)
-request 包含原始 http 请求的文件
-request-proto 与原始请求一起使用的协议(默认值:https)
-w 单词列表文件路径和(可选)关键字以冒号分隔。 例如。 '/path/to/wordlist:KEYWORD'

输出选项:
-debug-log 将所有内部日志记录写入指定文件。
-o 将输出写入文件
-od 存储匹配结果的目录路径。
-of 输出文件格式。 可用格式:json、ejson、html、md、csv、ecsv(或者,“all”代表所有格式)(默认:json)
-or 如果我们没有结果就不要创建输出文件(默认值:false)

使用示例:
来自 wordlist.txt 的模糊文件路径,匹配所有响应但过滤掉内容大小为 42 的响应。
彩色的,详细的输出。
ffuf -w wordlist.txt -u https://example.org/FUZZ -mc all -fs 42 -c -v

Fuzz Host-header,匹配 HTTP 200 响应。
ffuf -w hosts.txt -u https://example.org/ -H "主机:FUZZ" -mc 200

模糊 POST JSON 数据。 匹配所有不包含文本“错误”的响应。
ffuf -w entries.txt -u https://example.org/ -X POST -H "Content-Type: application/json" \
-d '{"name": "FUZZ", "anotherkey": "anothervalue"}' -fr "error"

模糊多个位置。 仅匹配反映“VAL”关键字值的响应。 有色。
ffuf -w params.txt:PARAM -w values.txt:VAL -u https://example.org/?PARAM=VAL -mr "VAL" -c

更多信息和示例:https://github.com/ffuf/ffuf