/'___\  /'___\           /'___\
   /\ \__/ /\ \__/  __  __  /\ \__/
   \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
    \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
     \ \_\   \ \_\  \ \____/  \ \_\
      \/_/    \/_/   \/___/    \/_/

该工具用途广泛,可用于多种用途。一些用途:
• 目录发现,可选择在 URL 中的任何位置进行模糊测试。
• 子域名发现
• 使用各种 HTTP 方法进行模糊测试。

安装

  1. 通过下载二进制兼容版本进行安装下载地址
  2. 也可以使用go get命令安装。

使用这种方法需要Golang编译器

  1. 在Kali Linux中使用apt-get install ffuf安装,目前自带。

基础指令

• -u url地址
• -w 设置字典
• -c 将响应状态码用颜色区分,windows下无法实现该效果。
• -t 线程率,默认40
• -p 请求延时: 0.1、0.2s
• -ac 自动校准fuzz结果
• -H Header头,格式为 “Name: Value”
• -X HTTP method to use
• -d POST data
• -r 跟随重定向
• -recursion num 递归扫描
• -x 设置代理 http 或 socks5://127.0.0.1:8080
• -s 不打印附加信息,简洁输出
• -e 设置脚本语言 -e .asp,.php,.html,.txt等
• -o 输出文本
• -of 输出格式文件,支持html、json、md、csv、或者all

ffuf -u "http://192.168.242.62/FUZZ"  -w top7000.txt   -fc "200"   -o 2.html -of html

基础用法 (⊙o⊙)

-u 扫描目标,-w字典,速度非常快,7000的字典只用了三秒钟

ffuf -u "http://192.168.242.62/dvwa/FUZZ"  -w ./top7000.txt

递归扫描

值得注意的是字典内开头不要有 / 不然不会进行递归的,当然,也有可能是我演示时候FUZZ前加了 / ,我也不想再做实验了,随便写上吧。去除 / 可使用sed -i ‘s///’ /dict.txt 替换掉开头第一个斜杠

ffuf -u "http://192.168.242.62/FUZZ"  -w test.txt  -x "http://127.0.0.1:8080"  -recursion "2"

图片

进阶用法 ^ _ ^

  • -maxtime 在有限的时间内完成测试,不论是否完成都将终止,单位为s,
    尽量使用**-maxtime-job-recursion**递归扫描一起使用,用于指定每个目录递归扫描时间,避免扫描时间过长
ffuf -w dict.txt -u http://website/FUZZ -maxtime 60
  • -p Seconds of delay between requests, or a range of random delay. For example “0.1” or “0.1-2.0”

匹配输出(MATCHER)

ffuf提供了仅获取具有特定特征的状态码、行数、响应大小、字数以及匹配正则表达式的模式进行响应输出。

  • -mc :指定状态代码。

  • -ml:指定响应行数

  • -mr: 指定正则表达式模式

  • -ms:指定响应大小

  • -mw:指定响应字数

例子:匹配响应状态码为200,301进行输出

ffuf -w dict.txt -w http://website/FUZZ -e .aspx,.html -mc 200,301

过滤输出(FILTER)

  • -fw : 按字数过滤

  • -fl :按行数过滤

  • -fs :按响应大小过滤

  • -fc : 按状态码过滤

  • -fr : 按正则表达式模式过滤

不输出 200,300状态码:

ffuf -w dict.txt -w http://website/FUZZ -e .aspx,.html -fc 200,301

对多个域名进行目录发现

ffuf -w dict.txt:FUZZ  -w /targets.txt:URL -u URLFUZZ -mc 200 -of csv -o result.txt

注意
如果你的字典是 / 开头,如:/admin
直接URLFUZZ就可以
如果是直接admin的字典,
那就使用URL/FUZZ

子域名爆破

ffuf -w subdomains.txt -u http://website/ -H "Host:FUZZ.website"

密码爆破&接口&参数模糊测试

ffuf -w wordlist.txt -X POST -d "username=admin\&password=FUZZ" -u http://website/FUZZ
ffuf -request poc.txt -request-proto http -mode clusterbomb -w ./test.txt:HFUZZ -w test.txt:WFUZZ -x "http://127.0.0.1:8080"
  • -mode 爆破模块,目前有clusterbomb 、 pitchfork 两个模式具体看burpsuite的爆破模块

  • clusterbomb模式下,用户名单词列表中的每个单词都将与密码单词列表中的每个单词组合使用。就像如果列表 1 中有 4 个单词而列表 2 中有 5 个单词,那么总共会有 20 个请求。

  • pitchfork模式下,用户名列表中第一个单词将与密码列表中第一个单词一起使用,同样,用户名列表中第二个单词将与密码列表中第二个单词一起使用。如果两个列表中的单词数量不同,那么一旦单词数量较少的列表耗尽就会停止。

  • -request 标志可用于指定与原始HTTP请求文件,并且将相应使用FUZZ

  • -request-proto 与原始请求一起使用的协议(默认值:https)

更多推荐

Ffuf使用教程