简介
Wfuzz的创建是为了促进Web应用程序评估中的任务,它基于一个简单的概念:它用给定有效负载的值替换对FUZZ关键字的任何引用。
Wfuzz中的有效负载是数据源。
这个简单的概念允许在HTTP请求的任何字段中注入任何输入,允许在不同的Web应用程序组件中执行复杂的Web安全攻击,例如:参数,身份验证,表单,目录/文件,标题等。
Wfuzz不仅仅是一个Web内容扫描程序:
Wfuzz可以通过查找和利用Web应用程序漏洞来帮助您保护Web应用程序。插件支持Wfuzz的Web应用程序漏洞扫描程序。
Wfuzz是一个完全模块化的框架,即使是最新的Python开发人员也可以轻松做出贡献。构建插件很简单,只需几分钟。
Wfuzz为使用Wfuzz或其他工具(如Burpsuite)执行的先前HTTP请求/响应提供了一个简单的语言界面。
这使您可以使用完整的上下文和对操作的理解来执行手动和半自动测试,而无需依赖Web应用程序扫描程序底层实现。
它是为了方便网络应用程序评估中的任务而创建的,它是一个由测试者提供的测试工具。
安装
我是使用的Manjoro Linux,并添加了blackarch源
。
如果已经配置好源可以直接安装。
| 1
2
3
 | sudo pacman -Rcnsu Wfuzz
cd /usr/share/wfuzz
sudo pip install wfuzz
 | 
 
用法
参数介绍
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 | wfuzz -help
Usage:	wfuzz [options] -z payload,params <url>
	FUZZ, ..., FUZnZ  无论你把这些关键字放在哪里,wfuzz都会用指定有效负载的值替换它们。
	FUZZ{baseline_value} FUZZ将替换为baseline_value。 它将是第一个执行的请求,可以用作过滤的基础。
Options:
	-h                        : 帮助
	--help                    : 高级帮助
	--version                 : Wfuzz版本细节
	-e <type>                 : 可用的清单 encoders/payloads/iterators/printers/scripts
	
	-c                        : 输出颜色
	-v                        : 详细信息.
	--interact                : (beta)如果选中,则捕获所有按键。 这允许您与程序进行交互。
	
	-p addr                   : 使用代理格式为ip:port:type。 重复使用各种代理的选项。
	                            其中type可以是SOCKS4,SOCKS5或HTTP(如果省略)。
	
	-t N                      : 指定并发连接数(默认为10)
	-s N                      : 指定请求之间的时间延迟(默认值为0)
	-R depth                  : 递归路径发现深度是最大递归级别。
	-L, --follow              : Follow HTTP redirections
	
	-u url                    : 指定请求的URL。
	-z payload                : 为类型,参数,编码器形式的每个FUZZ关键字指定有效负载。
                                    可以使用编码器列表,即。MD5,SHA1。 编码器可以链接,即。MD5@ SHA1。
                                    可以使用编码器类别。即。网址
                                    使用帮助作为有效负载来显示有效负载插件的详细信息(您可以过滤using --slice)
	-w wordlist               : 指定wordlist文件(-z文件,wordlist的别名)。
	-V alltype                : 所有参数bruteforcing(allvars和allpost)。 不需要FUZZ关键字。
	-X method                 : 为请求指定HTTP方法,即。 HEAD或FUZZ
	
	-b cookie                 : 为请求指定cookie
	-d postdata               : 使用post发布数据 (ex: "id=FUZZ&catalogue=1")
	-H header                 : 使用 header (ex:"Cookie:id=1312321&user=FUZZ")
	--basic/ntlm/digest auth  : 格式 "user:pass" or "FUZZ:FUZZ" or "domain\FUZ2Z:FUZZ"
	
	--hc/hl/hw/hh N[,N]+      : 隐藏指定的响应 code/lines/words/chars (使用BBB从基线获取值)
	--sc/sl/sw/sh N[,N]+      : 显示指定的响应 code/lines/words/chars (使用BBB从基线获取值)
	--ss/hs regex             : 隐藏指定的响应 regex within the content
 | 
 
爆破用户名与密码
| 1
 | wfuzz -c -z file,/tmp/字典文件 — hs Invalid -d “log=FUZZ&pwd=icekam” https://www.icekam.com/index.html
 | 
 
爆破目录
| 1
 | wfuzz -c -z file,/tmp/字典文件.txt — hc 404 https://www.icekam.com/categories/FUZZ
 | 
 
使用多个payloads
| 1
 | wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/extensions_common.txt --hc 404 https://www.icekam.com/categories/FUZZ
 | 
 
- 使用-z或-w参数可以同时指定多个payloads,这时相应的占位符应设置为 FUZZ, … , FUZnZ, 其中n代表了payload的序号。
- 上面的例子,我们同时暴破了文件,后缀和目录。
总结
Wfuzz是搞web测试必备的工具,上面仅列出常用姿势,更多姿势请在实战中发掘!