工具介绍
- 目录模糊爆破
- 子域名模糊爆破
- HTTP 方法模糊测试
下载地址
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 -w /usr/share/wordlists/dirb/big.txt -u http://192.168.178.22/FUZZ -e .php
ffuf -w /usr/share/wordlists/dirb/big.txt -u http://172.16.12.19/FUZZ -e .php
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v1.3.1 Kali Exclusive <3
________________________________________________
:: Method : GET
:: URL : http://172.16.12.19/FUZZ
:: Wordlist : FUZZ: /usr/share/wordlists/dirb/big.txt
:: Extensions : .php
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403,405
________________________________________________
css [Status: 301, Size: 162, Words: 5, Lines: 8]
image_gallery.php [Status: 200, Size: 6381, Words: 1626, Lines: 169]
img [Status: 301, Size: 162, Words: 5, Lines: 8]
index.php [Status: 200, Size: 10175, Words: 2895, Lines: 273]
js [Status: 301, Size: 162, Words: 5, Lines: 8]
vendor [Status: 301, Size: 162, Words: 5, Lines: 8]
:: Progress: [40938/40938] :: Job [1/1] :: 11731 req/sec :: Duration: [0:00:03] :: Errors: 0 ::
递归扫描
注:
字典内开头不要有 / 不然不会进行递归的,当然,也有可能是我演示时候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.com/FUZZ -maxtime 60
- -p Seconds of delay between requests, or a range of random delay. For example “0.1” or “0.1-2.0”
匹配输出
ffuf提供了仅获取具有特定特征的状态码、行数、响应大小、字数以及匹配正则表达式的模式进行响应输出。
-
-mc :指定状态代码。
-
-ml:指定响应行数
-
-mr: 指定正则表达式模式
-
-ms:指定响应大小
-
-mw:指定响应字数
例子:匹配响应状态码为200,301进行输出
ffuf -w dict.txt -w http://website.com/FUZZ -e .aspx,.html -mc 200,301
过滤输出(FILTER)
-
-fw : 按字数过滤
-
-fl :按行数过滤
-
-fs :按响应大小过滤
-
-fc : 按状态码过滤
-
-fr : 按正则表达式模式过滤
不输出 200,300状态码:
ffuf -w dict.txt -w http://website.com/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.com/ -H "Host:FUZZ.website.com"
密码爆破&接口&参数模糊测试
ffuf -w wordlist.txt -X POST -d "username=admin\&password=FUZZ" -u http://website.com/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)