-
Wfuzz小记
2020-09-22 15:00:11Wfuzz小记 ** 使用wfuzz暴力猜测目录 wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://xxx.com/FUZZ 使用wfuzz暴力猜测文件 wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt ...**
Wfuzz小记
**
使用wfuzz暴力猜测目录
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://xxx.com/FUZZ
使用wfuzz暴力猜测文件
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://xxx.com/FUZZ.php
通过在URL中在?后面设置FUZZ占位符,使用wfuzz来测试URL传入的参数
wfuzz -z range,0-10 --hl 97 http://xxx.com/listproducts.php?cat=FUZZ
测试请求中加入自己设置的cookies,使用-b参数指定,多个cookies使用多次
wfuzz -z file,/usr/share/wfuzz/wordlist/general/common.txt -b cookie=value1 -b cookie2=value2 http://xxx.com/FUZZ
测试cookie字段
wfuzz -z file,/usr/share/wfuzz/wordlist/general/common.txt -b cookie=FUZZ http://xxx.com/
发现一个登录框,没有验证码,想爆破弱口令账户
POST请求正文为:username=&password=wfuzz -w userList -w pwdList -d "username=FUZZ&password=FUZ2Z" http://ip/login.php
wfuzz -c -w wordlist -u http://xx.xx.xx.xx/FUZZ --hl 0 --hw 24 -c: 显示不同颜色 -w: 指定字典 -u: 指定URL FUZZ 指定要模糊测试的位置 --h: 屏蔽不需要的信息
wfuzz将不同的字典的组合起来,那就是Iterators模块
使用参数-m迭代器,wfuzz自带的迭代器有三个:zip、chain、product,如果不指定迭代器,默认为product迭代器wfuzz -z range,0-9 -w dict.txt -m zip http://127.0.0.1/ip.php?FUZZ=FUZ2Z
注:字典要慢慢搜集
-
Wfuzz 使用
2018-03-17 21:41:47Wfuzz是网站模糊测试爆破工具。 https://github.com/xmendez/wfuzz wfuzz不仅仅是一个web扫描器: wfuzz能够通过发现并利用网站弱点/漏洞的方式帮助你使网站更加安全。wfuzz的漏洞扫描功能由插件支持。 wfuzz是...前言
Wfuzz是网站模糊测试爆破工具。
https://github.com/xmendez/wfuzz
wfuzz不仅仅是一个web扫描器:
wfuzz能够通过发现并利用网站弱点/漏洞的方式帮助你使网站更加安全。wfuzz的漏洞扫描功能由插件支持。
wfuzz是一个完全模块化的框架,这使得即使是Python初学者也能够进行开发和贡献代码。开发一个wfuzz插件是一件非常简单的事,通常只需几分钟。
wfuzz提供了简洁的编程语言接口来处理wfuzz或Burpsuite获取到的HTTP请求和响应。这使得你能够在一个良好的上下文环境中进行手工测试或半自动化的测试,而不需要依赖web形式的扫描器。
使用指南
最简单命令
一个典型的wfuzz命令只需要指定一个字典和一个要测试的URL即可,如下:
┌─[[email protected]]─[/usr/share/wfuzz/src/wfuzz] └──╼$wfuzz-w/usr/share/wfuzz/wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ ******************************************************** * Wfuzz 2.2.9 - The Web Fuzzer * ******************************************************** Target:http://testphp.vulnweb.com/FUZZ Total requests: 950 ================================================================== ID Response Lines Word Chars Payload ================================================================== 000223:C=404 7L12W168 Ch "constants" 000224:C=404 7L12W168 Ch "contact" 000225:C=404 7L12W168 Ch "contacts" 000230:C=404 7L12W168 Ch "controlpanel" 000226:C=404 7L12W168 Ch "content" 000227:C=404 7L12W168 Ch "contents" 000228:C=404 7L12W168 Ch "control" ... 000008:C=404 7L12W168 Ch "100" Total time: 5.193345 Processed Requests: 950 Filtered Requests: 0 Requests/sec.: 182.9264
wfuzz的输出使我们能够分析web server的响应,还可根据获得的HTTP响应信息过滤出我们想要的结果,比如过滤响应码/响应长度等等。
每一行输出给我们提供了以下信息:
- ID:测试时的请求序号
- Response:HTTP响应码
- Lines:响应信息中的行数
- Word:响应信息中的字数
- Chars:响应信息中的字符数
- Payload:当前使用的payload
获取帮助信息
使用 -h 和 –help 参数来获取基本帮助信息和详细帮助信息。
wfuzz是一个完全模块化的模式,你可以使用 -e <> 参数查看其中可用的模块,例如:
┌─[[email protected]]─[/usr/share/wfuzz/src/wfuzz] └──╼$wfuzz-e iterators Available iterators: Name | Summary ---------------------------------------------------------------------------------------------- product| Returns an iterator cartesian product of input iterables. zip| Returns an iterator that aggregates elements from each of the iterables. chain| Returns an iterator returns elements from the first iterable until it is exhaust |ed, then proceeds to the next iterable, until all of the iterables are exhausted | .
可用的categories包括: payloads , encoders , iterators , printers 和 scripts 。
Payloads
wfuzz基于一个非常简单的概念:它用一个给定的payload来替换相应的FUZZ关键词的值,我们称FUZZ这样的关键词为 占位符 ,这样更容易理解。一个wfuzz中的payload就是一个输入的源。
要想得到所有可用的payload列表,可以执行如下命令:
$ wfuzz -e payloads
关于payloads的更详细的信息可以通过以下命令获取:
$ wfuzz -z help
上面这个命令还可以使用 –slice 参数来对输出结果进行过滤:
┌─[[email protected]]─[/usr/share/wfuzz/src/wfuzz] └──╼ $wfuzz -z help --slice "dirwalk" Name: dirwalk 0.1 Categories: default Summary: Returns filename's recursively from a local directory. Author: Xavi Mendez (@xmendez) Description: Returns all the file paths found in the specified directory. Handy if you want to check a directory structure against a webserver, for example, because you have previously downloaded a specific version of what is supposed to be on-line. Parameters: + dir: Directory path to walk and generate payload from.
指定一个payload
每个FUZZ占位符都必须为它指定相应的payload。指定一个payload时有几种方法:
命令比较长的方式是显式的定义payload的参数:
$ wfuzz -z file --zP fn=/usr/share/wfuzz/wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
另一个不太长的方式是只提供payload所需的默认参数:
$ wfuzz -z file,/usr/share/wfuzz/wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
最后,短的方式是使用别名:
$ wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
stdin 这个payload可以在使用一些外部字典生成工具时很方便:
┌─[[email protected]]─[/usr/share/wfuzz/src/wfuzz] └──╼$crunch2 2ab|wfuzz-z stdin http://testphp.vulnweb.com/FUZZ Crunch will now generate the following amount of data: 12bytes 0MB 0GB 0TB 0PB Crunch will now generate the following number of lines: 4 ******************************************************** * Wfuzz 2.2.9 - The Web Fuzzer * ******************************************************** Target:http://testphp.vulnweb.com/FUZZ Total requests: <<unknown>> ================================================================== ID Response Lines Word Chars Payload ================================================================== 000002:C=404 7L12W168 Ch "ab" 000001:C=404 7L12W168 Ch "aa" 000003:C=404 7L12W168 Ch "ba" 000004:C=404 7L12W168 Ch "bb" Total time: 3.827355 Processed Requests: 4 Filtered Requests: 0 Requests/sec.: 1.045107
使用多个payloads
使用 -z 或 -w 参数可以同时指定多个payloads,这时相应的占位符应设置为 FUZZ, … , FUZnZ, 其中 n 代表了payload的序号。比如下面的例子,我们同时暴破文件,后缀和目录:
$ 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 http://testphp.vulnweb.com/FUZZ/FUZ2ZFUZ3Z
过滤器
对wfuzz的结果时行过滤是非常重要的:
非常大的字典文件可以生成非常庞大的输出,并且把我们想要的结果淹没
对HTTP响应的一些分类在实际攻击时是非常重要的,例如,为了查检一个SQLi的漏洞是否存在,我们必须能够将合理的响应和错误/不同的响应区分开。
wfuzz可根据HTTP响应码和收到的响应的长度(字数,字符数或行数)来过滤。还可以用正则表达式。过滤的方法有两种:隐藏或显示符合过滤条件的结果。
隐藏响应结果
通过 –hc , –hl , –hw , –hh 参数可以隐藏某些HTTP响应。
隐藏无法找到的页面的响应如下:
$ wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ
可指定多个需要隐藏的条件,如,想要加上隐藏禁止访问的响应:
$ wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404,403 http://testphp.vulnweb.com/FUZZ
用行数,字数,字符数来指定过滤规则,在当HTTP返回码相同的时候比较方便。比如,网站一般会指定一个自定义的错误页面,返回码是200,但实际上起到了一个404页面的作用,我们称之为软404。
下面是一个例子:
┌─[[email protected]]─[~] └──╼$wfuzz-w/usr/share/wfuzz/wordlist/general/common.txt--hc404http://datalayer.io/FUZZ ******************************************************** * Wfuzz 2.2.9 - The Web Fuzzer * ******************************************************** Target:http://datalayer.io/FUZZ Total requests: 950 ================================================================== ID Response Lines Word Chars Payload ================================================================== 000083:C=200 51L138W962 Ch "apache" 000008:C=200 51L138W962 Ch "100" 000009:C=200 51L138W962 Ch "1000" 000011:C=200 51L138W962 Ch "2" 000012:C=200 51L138W962 Ch "20" 000013:C=200 51L138W962 Ch "200" ...
仔细观察上面的结果,我们很容易推断出所有”not found”的返回信息中都有 51个行,138个字,962个字符。因此,我们需要改进一下我们的过滤条件(增加多个过滤条件):
┌─[[email protected]]─[~] └──╼$wfuzz-w/usr/share/wfuzz/wordlist/general/common.txt--hc404 --hh962http://datalayer.io/FUZZ ******************************************************** * Wfuzz 2.2.9 - The Web Fuzzer * ******************************************************** Target:http://datalayer.io/FUZZ Total requests: 950 ================================================================== ID Response Lines Word Chars Payload ================================================================== 000430:C=302 0L0W0 Ch "img" 000689:C=500 2L1W9 Ch "register" 000135:C=302 0L0W0 Ch "blog" 000438:C=200 1677L5416W90077 Ch "index" Total time: 8.323663 Processed Requests: 950 Filtered Requests: 946 Requests/sec.: 114.1324
显示响应结果
显示响应结果的使用方法跟隐藏时的原理一样,只不过参数变为了: –sc , –sl , –sw , –sh 。
使用Baseline
习惯上称Baseline为”基准线“。过滤器可以是某个HTTP响应的引用,这样的引用我们称为Baseline。
之前的使用 –hh 进行过滤的例子中,还可以使用下面的命令代替:
┌─[[email protected]]─[~] └──╼$wfuzz-w/usr/share/wfuzz/wordlist/general/common.txt--hh BBB http://datalayer.io/FUZZ{notthere} ******************************************************** * Wfuzz 2.2.9 - The Web Fuzzer * ******************************************************** Target:http://datalayer.io/FUZZ Total requests: 951 ================================================================== ID Response Lines Word Chars Payload ================================================================== 000002:C=200 51L138W962 Ch "notthere" 000432:C=302 0L0W0 Ch "img" 000086:C=404 0L0W0 Ch "api" 000691:C=500 2L1W9 Ch "register" 000137:C=302 0L0W0 Ch "blog" 000045:C=404 0L0W0 Ch "WEB-INF" 000440:C=200 1677L5416W90077 Ch "index" Total time: 21.76636 Processed Requests: 951 Filtered Requests: 944 Requests/sec.: 43.69125
这里, { } 来指定 第一次 HTTP请求时用来替换 FUZZ占位符 的值,其响应将被标记为 BBB ,并用于过滤条件中。
使用正则表达式过滤
在命令行中,参数 –ss 和 –hs 可以接受正则表达式来对返回的结果时行过滤。
详细例子请参考 http://edge-security.blogspot.co.uk/2014/10/scan-for-shellshock-with-wfuzz.html
$ wfuzz -H "User-Agent: () { :;}; echo; echo vulnerable" --ss vulnerable -w cgis.txt http://localhost:8000/FUZZ
重要关键词
payload
payload为wfuzz生成的用于测试的特定字符串,一般情况下,会替代被测试URL中的FUZZ占位符。
当前版本中的wfuzz中可用payloads列表如下:
┌─[[email protected]]─[~] └──╼$wfuzz-e payloads Available payloads: Name | Summary ------------------------------------------------------------------------------------------------------ guitab| 从可视化的标签栏中读取请求 dirwalk| 递归获得本地某个文件夹中的文件名 file| 获取一个文件当中的每个词 autorize| 获取autorize的测试结果Returns fuzz results' from autororize. wfuzzp | 从之前保存的wfuzz会话中获取测试结果的URL ipnet | 获得一个指定网络的IP地址列表 bing | 获得一个使用bing API搜索的URL列表 (需要 api key). stdin | 获得从标准输入中的条目 list | 获得一个列表中的每一个元素,列表用以 - 符号分格 hexrand | 从一个指定的范围中随机获取一个hex值 range | 获得指定范围内的每一个数值 names | 从一个以 - 分隔的列表中,获取以组合方式生成的所有usernames值 burplog | 从BurpSuite的记录中获得测试结果 permutation | 获得一个在指定charset和length时的字符组合 buffer_overflow | 获得一个包含指定个数个A的字符串. hexrange | 获得指定范围内的每一个hex值 iprange | 获得指定IP范围内的IP地址列表 burpstate | 从BurpSuite的状态下获得测试结果
encoder
encoder的作用是将payload进行编码或加密。
wfuzz的encoder列表如下:
┌─[[email protected]]─[~] └──╼$wfuzz-e encoders Available encoders: Category | Name | Summary ------------------------------------------------------------------------------------------------------------------------ url_safe,url|urlencode| 用`%xx`的方式替换特殊字符, 字母/数字/下划线/半角点/减号不替换 url_safe,url| double urlencode| 用`%25xx`的方式替换特殊字符, 字母/数字/下划线/半角点/减号不替换 url|uri_double_hex| 用`%25xx`的方式将所有字符进行编码 html|html_escape| 将`&`,`<`,`>`转换为HTML安全的字符 html|html_hexadecimal| 用 `&#xx;` 的方式替换所有字符 hashes|base64| 将给定的字符串中的所有字符进行base64编码 url|doble_nibble_hex| 将所有字符以`%%dd%dd`格式进行编码 db|mssql_char| 将所有字符转换为MsSQL语法的`char(xx)`形式 url|utf8| 将所有字符以`u00xx` 格式进行编码 hashes|md5| 将给定的字符串进行md5加密 default |random_upper| 将字符串中随机字符变为大写 url|first_nibble_hex| 将所有字符以`%%dd?` 格式进行编码 default |hexlify| 每个数据的单个比特转换为两个比特表示的hex表示 url|second_nibble_hex| 将所有字符以`%?%dd` 格式进行编码 url|uri_hex| 将所有字符以`%xx` 格式进行编码 default |none| 不进行任何编码 hashes|sha1| 将字符串进行sha1加密 url|utf8_binary| 将字符串中的所有字符以 `uxx` 形式进行编码 url|uri_triple_hex| 将所有字符以`%25%xx%xx` 格式进行编码 url|uri_unicode| 将所有字符以`%u00xx` 格式进行编码 html|html_decimal| 将所有字符以 `&#dd; ` 格式进行编码 db|oracle_char| 将所有字符转换为Oracle语法的`chr(xx)`形式 db|mysql_char| 将所有字符转换为MySQL语法的`char(xx)`形式
iterator
wfuzz的iterator提供了针对多个payload的处理方式。
itorators的列表如下:
┌─[[email protected]]─[~] └──╼$wfuzz-e iterators Available iterators: Name | Summary ---------------------------------------------------------------------------------------------- product| 返回输入条目的笛卡尔积 zip| Retns an iterator that aggregates elements from each of the iterables.(翻译不好,请自行理解) chain| Returns an iterator returns elements from the first iterable until it is exhaust |ed, then proceeds to the next iterable, until all of the iterables are exhausted | (翻译不好,请自行理解) printer wfuzz的printers用于控制输出打印。 printers列表如下: ┌─[[email protected]]─[~] └──╼$wfuzz-e printers Available printers: Name | Summary -------------------------------------------------- raw| `Raw`output format json| Results in `json`format csv| `CSV`printer ftw magictree| Prints results in `magictree`format html| Prints results in `html`format (比较好懂,不再翻译)
scripts
暂时不知道怎么使用
scripts列表如下:
┌─[[email protected]]─[~] └──╼$wfuzz-e scripts Available scripts: Category | Name | Summary ---------------------------------------------------------------------------------------------------- default,passive|cookies| 查找新的cookies default,passive|errors| 查找错误信息 passive|grep|HTTP response grep active|screenshot| 用linux cutycapt tool进行屏幕抓取 default,active,discovery|links| 解析HTML并查找新的内容 default,active,discovery|wc_extractor| 解析subversion的wc.db文件 default,passive|listing| 查找列目录漏洞 default,passive|title| 解析HTML页面的title default,active,discovery|robots| 解析robots.txt文件来查找新内容 default,passive|headers| 查找服务器的返回头 default,active,discovery|cvs_extractor| 解析CVS/Entries 文件 default,active,discovery|svn_extractor| 解析 .svn/entries文件 active,discovery|backups| 查找已知的备份文件名 default,active,discovery|sitemap| 解析sitemap.xml文件
内置工具
wfencode 工具
这是wfuzz自带的一个加密/解密(编码/反编码)工具,目前支持内建的encoders的加/解密。
┌─[[email protected]]─[~/.wfuzz] └──╼ $wfencode -e base64 123456 MTIzNDU2 ┌─[[email protected]]─[~/.wfuzz] └──╼ $wfencode -d base64 MTIzNDU2 123456
wfpayload工具
wfpayload是payload生成工具
┌─[[email protected]]─[~/.wfuzz] └──╼ $wfpayload -z range,0-10 0 1 2 3 4 5 6 7 8 9 10
wxfuzz 工具
这个看源码是一个wxPython化的wfuzz,也就是GUI图形界面的wfuzz。目前需要wxPython最新版本才能使用,但是在ParrotOS和Kali上都无法正常安装成功,问题已在GitHub提交Issue,期待开发者的回复中…
wfuzz命令中文帮助
这是wfuzz的主工具,我们平时使用的时候就是用这个。
先来看看帮助文档:
┌─[✗]─[[email protected]]─[~] └──╼$wfuzz--help ******************************************************** * Wfuzz 2.2.9 - The Web Fuzzer * * * * Version up to1.4c coded by: * * Christian Martorella ([email protected]-security.com) * * Carlos del ojo([email protected].com) * * * * Version 1.4d to2.2.9coded by: * * Xavier Mendez ([email protected]-security.com) * ******************************************************** Usage:wfuzz[options] -z payload,params <url> FUZZ, ..., FUZnZ payload占位符,wfuzz会用指定的payload代替相应的占位符,n代表数字. FUZZ{baseline_value}FUZZ会被baseline_value替换,并将此作为测试过程中第一个请求来测试,可用来作为过滤的一个基础。 Options: -h/--help: 帮助文档 --help: 高级帮助文档 --version: Wfuzz详细版本信息 -e<type> : 显示可用的encoders/payloads/iterators/printers/scripts列表 --recipe<filename> : 从文件中读取参数 --dump-recipe<filename> : 打印当前的参数并保存成文档 --oF<filename> : 将测试结果保存到文件,这些结果可被wfuzz payload处理 -c: 彩色化输出 -v: 详细输出 -f filename,printer: 将结果以printer的方式保存到filename(默认为raw printer). -o printer: 输出特定printer的输出结果 --interact: (测试功能) 如果启用,所有的按键将会被捕获,这使得你能够与程序交互 --dry-run: 打印测试结果,而并不发送HTTP请求 --prev: 打印之前的HTTP请求(仅当使用payloads来生成测试结果时使用) -p addr: 使用代理,格式ip:port:type. 可设置多个代理,type可取的值为SOCKS4,SOCKS5or HTTP(默认) -t N: 指定连接的并发数,默认为10 -s N: 指定请求的间隔时间,默认为0 -R depth: 递归路径探测,depth指定最大递归数量 -L,--follow: 跟随HTTP重定向 -Z: 扫描模式 (连接错误将被忽视). --req-delay N: 设置发送请求允许的最大时间,默认为 90,单位为秒. --conn-delay N: 设置连接等待的最大时间,默认为 90,单位为秒. -A: 是 --script=default -v-c的简写 --script= : 与 --script=default 等价 --script=<plugins> : 进行脚本扫描, <plugins> 是一个以逗号分开的插件或插件分类列表 --script-help=<plugins> : 显示脚本的帮助 --script-args n1=v1,... : 给脚本传递参数.ie. --script-args grep.regex="<A href="(.*?)">" -u url: 指定请求的URL -m iterator: 指定一个处理payloads的迭代器 (默认为product) -z payload: 为每一个占位符指定一个payload,格式为name[,parameter][,encoder]. 编码可以是一个列表, 如md5-sha1. 还可以串联起来, 如.[email protected]. 还可使用编码各类名,如url 使用help作为payload来显示payload的详细帮助信息,还可使用--slice进行过滤 --zP<params> : 给指定的payload设置参数。必须跟在 -z或-w参数后面 --slice<filter> : 以指定的表达式过滤payload的信息,必须跟在-z参数后面 -w wordlist: 指定一个wordlist文件,等同于 -z file,wordlist -V alltype: 暴力测试所有GET/POST参数,无需指定占位符 -X method: 指定一个发送请求的HTTP方法,如HEAD或FUZZ -b cookie: 指定请求的cookie参数,可指定多个cookie -d postdata: 设置用于测试的POST data(ex: "id=FUZZ&catalogue=1") -H header: 设置用于测试请求的HEADER(ex:"Cookie:id=1312321&user=FUZZ"). 可指定多个HEADER. --basic/ntlm/digest auth: 格式为 "user:pass" or "FUZZ:FUZZ" or "domainFUZ2Z:FUZZ" --hc/hl/hw/hh N[,N]+ : 以指定的返回码/行数/字数/字符数作为判断条件隐藏返回结果 (用BBB来接收baseline) --sc/sl/sw/sh N[,N]+ : 以指定的返回码/行数/字数/字符数作为判断条件显示返回结果 (用BBB来接收baseline) --ss/hs regex: 显示或隐藏返回结果中符合指定正则表达式的返回结果 --filter<filter> : 显示或隐藏符合指定filter表达式的返回结果 (用BBB来接收baseline) --prefilter<filter> : 用指定的filter表达式在测试之前过滤某些测试条目
来源
-
wfuzz学习
2020-10-04 16:33:59Wfuzz是一个基于Python的Web爆破程序,它支持多种方法来测试WEB应用的漏洞。它的功能太多了。kail里也有,Windows也可以自己装。 可以找漏洞 可预测的认证 可预测的session标志(session id) 可预测的资源定位...目录
前言
Wfuzz是一个基于Python的Web爆破程序,它支持多种方法来测试WEB应用的漏洞。它的功能太多了。kail里也有,Windows也可以自己装。
我们可以用它找漏洞
可预测的认证 可预测的session标志(session id) 可预测的资源定位(目录和文件) 注入 路径遍历 溢出 跨站脚本 认证漏洞 不安全的直接对象引用
wfuzz里也自带了很多的字典
. ├── Injections │ ├── All_attack.txt │ ├── SQL.txt │ ├── Traversal.txt │ ├── XML.txt │ ├── XSS.txt │ └── bad_chars.txt ├── general │ ├── admin-panels.txt │ ├── big.txt │ ├── catala.txt │ ├── common.txt │ ├── euskera.txt │ ├── extensions_common.txt │ ├── http_methods.txt │ ├── medium.txt │ ├── megabeast.txt │ ├── mutations_common.txt │ ├── spanish.txt │ └── test.txt ├── others │ ├── common_pass.txt │ └── names.txt ├── stress │ ├── alphanum_case.txt │ ├── alphanum_case_extra.txt │ ├── char.txt │ ├── doble_uri_hex.txt │ ├── test_ext.txt │ └── uri_hex.txt ├── vulns │ ├── apache.txt │ ├── cgis.txt │ ├── coldfusion.txt │ ├── dirTraversal-nix.txt │ ├── dirTraversal-win.txt │ ├── dirTraversal.txt │ ├── domino.txt │ ├── fatwire.txt │ ├── fatwire_pagenames.txt │ ├── frontpage.txt │ ├── iis.txt │ ├── iplanet.txt │ ├── jrun.txt │ ├── netware.txt │ ├── oracle9i.txt │ ├── sharepoint.txt │ ├── sql_inj.txt │ ├── sunas.txt │ ├── tests.txt │ ├── tomcat.txt │ ├── vignette.txt │ ├── weblogic.txt │ └── websphere.txt └── webservices ├── ws-dirs.txt └── ws-files.txt
安装我就不说了
基本用法:
参数:
ID: 按执行顺序排列 ID Response: HTTP 响应状态 Lines: HTTP 响应中的行数 Word:HTTP 响应中单词个数 Char:HTTP 响应的字节数 Payload:FUZZ 中的字典
到后面我们可以根据响应状态,行数等等,进行自定义过滤。
爆破网站后台文件
wfuzz -w wordlist URL/FUZZ.php
通过这个payload我们可以看到网站后台的php文件
爆破网站后台目录
wfuzz -w wordlist URL/FUZZ
类似于dirsearch的扫描,扫面网站后台目录,但是这个需要你的字典足够强大。
遍历URL中的参数
对于网站
http://127.0.0.1/index.php?id=12
如果其存在未授权漏洞我们可以用
wfuzz -z range,000-999 http://127.0.0.1/index.php?id=FUZZ
range就是参数id的可取范围
当然,如果需要cookie的话,也行
wfuzz -z range,000-999 -b session=session -b cookie=cookie http://127.0.0.1/index.php?uid=FUZZ
如果要加多个cookie的话,需要多次指定
访问请求时会在 header 中加入 Cookie: cookie1=x cookie2=xxx
-b cookie=xxx -b cookie=xxx
对于某些页面如果没有cookie,不会允许我们访问,直接跳转到错误页面,这就使FUZZ结果不是很准确。
POST请求
登录框,弱口令爆破
在DVWA里暴力破解
传参格式:username=&password=
构造payload:
wfuzz -w /usr/share/wfuzz/wordlist/general/mima.txt -w /usr/share/wfuzz/wordlist/general/mima.txt -d "username=FUZZ&password=FUZ2Z" http://192.168.46.129/vulnerabilities/brute/
-w 后面加字典的路径,因为有两个参数,所以要用两次- w。
-d 参数以POST格式传参 ,后面是格式。
最后是URL,爆破的过程是漫长且还要根据你字典的大小。
在这里说一下
wfuzz -z file --zP fn=~/Desktop/word.txt URL/FUZZ wfuzz -w ~/桌面/word.txt URL/FUZZ wfuzz -z file,~/桌面/word.txt URL/FUZZ
上面的虽然payload不一样,但是结果都是等效的。
-z 参数是指定一个可用的 payload 模块,–zP 是指定 payload 中的参数看下 file 模块的详细信息
我是用最多的可能是中间的那种方式。
使用多个payload并且同时爆破目录和文件
wfuzz -w /usr/share/wfuzz/wordlist/general/mima.txt -w /usr/share/wfuzz/wordlist/general/mima.txt -d http://192.168.46.129/vulnerabilities/brute/FUZZ/FUZ2Z/FUZNZ
因为有多个payload所以需要我们通过改变n的值来指定我们使用的是哪一个。
fuzz的过滤器
不得不说过滤器真是个好东西,它能给我们省下很多时间。
就比如说我们后台爆破的时候可以直接过滤掉我们不想看到的错误码,还有SQL注入时候,也是对我们有很大的帮助。我就说一下简单的参数:
隐藏响应结果
通过 --hc , --hl , --hw , --hh 参数可以隐藏某些HTTP响应。
栗子
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt --hc 302 -d “username=FUZZ&password=FUZ2Z” http://192.168.46.129/vulnerabilities/brute/
因为302的信息太多,直接用 - -hc过滤掉,这个就可以隐藏响应状态为302的信息。
我们也可以过滤多个响应状态,用
,
隔开就行了,– hc 302,404
–hh 178 过滤掉返回数据字符串长度为178的信息
有隐藏就又显示
参数:
–sc , –sl , –sw , –sh
比如我们只需要201,350的状态的数据
则wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt --sc 302 -d “username=FUZZ&password=FUZ2Z” http://192.168.46.129/vulnerabilities/brute/
使用Baseline
Baseline (基线) 就是针对 HTTP Response 构建过滤器。
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt -w /usr/share/wfuzz/wordlist/general/common.txt --hh bbb http://192.168.46.129/vulnerabilities/brute/{zxc}
{}被指定第一次HTTP请求时用来替换 FUZZ占位符 的值,其返回的响应码将被标记为 BBB ,并用于过滤条件中。
在下面的测试中,如果再遇到BBB,则直接过滤了。
⑧基于正则表达式的过滤
参数:
-- hs,--ss
wfuzz -c -w ~/Desktop/word.txt --hs “404 Not Found” URL/FUZZ/
FUZZing自定义headers
对于某些目标站点,可能会对我们的user-agent,而这种情况就需要我们自定义了
$ wfuzz -w word.txt -H “user-agent:aaa” URL/FUZZ
Fuzzing HTTP 协议
简单的说就是测试这个站点的HTTP请求方式,get还是post等等。
wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ URL
FUZZ的代理设置
如果在 fuzz 中设置代理使用 -p proxy地址,代理支持 SOCKS4、SOCKS5 也支持多个代理只需要使用多个 -p 参数。(当我们需要访问国外站点时,就需要代理了)
普通代理:
$ wfuzz -w word.txt -p localhost:8000 url
SOCKS4
$ wfuzz -w word.txt -p localhost:8000: SOCKS4 url
SOCKS5
$ wfuzz -w word.txt -p localhost:8000 :SOCKS5 url
递归FUZZING测试
使用-R参数可以指定一个payload被递归的深度。
例如:爆破目录时,我们想使用相同的payload对已发现的目录进行测试,可以使用如下命令:
wfuzz -z list,"admin-login.php-test.php" -R 1 URL/FUZZ
1 就是指在我们已经测试出来的目录再递归一次字典 。
例如:
测试admin目录下是否还存在admin并发
在 fuzz 中如果目标存在 waf,发送请求并发太高会被禁止,wfuzz 中可以使用 -t 参数来增加或减少并发数量,也可以使用 -s 指定每次请求后的间隔秒数
这个找不到好的栗子,就借鉴JBlock大师傅的了
e.g. 你想测试一个网站的转账请求是否存在HTTP并发漏洞(条件竞争)
请求地址:http://127.0.0.1/dorabox/race_condition/pay.php
POST请求正文:money=1
使用如下命令:
wfuzz -z range,0-20 -t 20 -d “money=1” http://127.0.0.1/dorabox/race_condition/pay.php?FUZZ
测试并发要控制请求次数,在这里为使用range模块生成0-20,然后将FUZZ占位符放在URL的参数后不影响测试即可,主要是用-t参数设置并发请求,该参数默认设置都是10。
测试结果输出为文件
这个功能是插件printers提供的
格式:
Available printers: Name | Summary -------------------------------------------------- csv | CSV printer ftw html | Prints results in html format json | Results in json format magictree | Prints results in magictree format raw | Raw output format
使用-f参数,指定值的格式为输出文件位置,输出格式。
$ wfuzz -f outfile,html -w wordlist URL/FUZZ
fuzzing常用的使用方法就说到这吧,至于高阶的我以后碰到再记录。
理论总没有实战有意思!!!
-
wfuzz 教程
2019-03-05 09:28:04Wfuzz是一个为暴力破解Web应用程序而设计的工具,它可以用于查找未链接的资源(目录,servlet,脚本等),暴力GET和POST参数以检查不同类型的注入(SQL,XSS,LDAP等),强力表单参数(用户/密码),Fuzzing等。...Wfuzz是一个为暴力破解Web应用程序而设计的工具,它可以用于查找未链接的资源(目录,servlet,脚本等),暴力GET和POST参数以检查不同类型的注入(SQL,XSS,LDAP等),强力表单参数(用户/密码),Fuzzing等。
Wfuzz一些功能:具有多个词典的多注入点功能
递归(当做目录暴力时)
发布,标头和认证数据暴力强制
输出到HTML
彩色输出
按返回码,字数,行号,正则表达式隐藏结果
Cookies fuzzing
多线程
代理支持
SOCK支持
请求之间的时间延迟
身份验证支持(NTLM,基本)
所有参数bruteforce(POST和GET)
每个有效载荷多个编码器
有效载荷与迭代器的组合
基线请求(用于过滤结果)
蛮力HTTP方法
多个代理支持(每个请求通过不同的代理)
HEAD扫描(资源发现更快)
为已知应用量身定制的字典(Weblogic,Iplanet,Tomcat,Domino,Oracle 9i,Vignette,Coldfusion等等)有效载荷:
文件
列表
hexrand
范围
名称
hexrange
编码:random_uppercase
urlencode
binary_ascii
base64
double_nibble_hex
uri_hex
sha1
md5
double_urlencode
utf8
utf8_binary
html
html十进制
自定义
还有很多…迭代器:
产品
压缩
链wfuzz 用法:
/usr/bin/wfuzz [选项]wfuzz 选项:
-c:用颜色输出-v:详细的信息
-o 打印机:由stderr输出格式
-p addr:使用代理(ip:port或ip:port-ip:port-ip:port)
-x type:使用SOCK代理(SOCKS4,SOCKS5)
-t N:指定线程数(默认20个)
-s N:指定请求之间的时间延迟(默认为0)
-e :可用编码/有效载荷/迭代器/打印机的列表
-R depth:递归路径发现
-I:使用HTTP HEAD而不是GET方法(没有HTML主体响应)。
–follow:遵循重定向
-m iterator:指定迭代器(默认产品)
-z payload :指定有效载荷(类型,参数,编码)
-V alltype:所有参数bruteforcing(allvars和allpost)。不需要FUZZ关键字。
-X:HTTP方法中的有效载荷(例如:“FUZZ HTTP / 1.0”)。不需要FUZZ关键字。
-b cookie:为请求指定一个cookie
-d postdata:使用发布数据(例如:“id = FUZZ&catalog = 1”)
-H headers:使用头文件(例如:“Host:www.mysite.com,Cookie:id=1312321&user=FUZZ”)
–basic/ntlm/digest auth:格式为“user:pass”或“FUZZ:FUZZ”或“domain \ FUZ2Z:FUZZ”
–hc/hl/hw/hh N[,N]+ :隐藏指定的代码/行/字/字符的resposnes(使用BBB从基线获取值)
–hs regex :在响应中隐藏具有指定正则表达式的响应
关键字:FUZZ,FUZ2Z,无论你放置这些词汇,wfuzz都会将其替换为所选择的有效载荷。
wfuzz 示例:
wfuzz.py -c -z file,commons.txt --hc 404 -o html http://www.site.com/FUZZ 2> res.htmlwfuzz.py -c -z file,users.txt -z file,pass.txt --hc 404 http://www.site.com/log.asp?user=FUZZ&pass=FUZ2Z
wfuzz.py -c -z range,1-10 --hc=BBB http://www.site.com/FUZZ{something}
更多示例在README文件中。wfuzz 使用示例:
使用颜色输出(-c),一个词表作为有效载荷(-z文件,/ usr / share / wfuzz / wordlist / general / common.txt),并隐藏404消息(-hc 404)来模糊给定的URL (http ://192.168.1.202/FUZZ):root@kali:~# wfuzz -c -z file,/usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://192.168.1.202/FUZZ
- Wfuzz 2.0 - The Web Bruteforcer *
Target: http://192.168.1.202/FUZZ
Payload type: file,/usr/share/wfuzz/wordlist/general/common.txtTotal requests: 950
ID Response Lines Word Chars Request
00429: C=200 4 L 25 W 177 Ch " - index"
00466: C=301 9 L 28 W 319 Ch " - javascript"wfuzz 效果评价:
wfuzz许多的功能并不仅限于此篇文章,有很多效果都没有真正的体现出来,是一个不错的web应用程序工具,更多资料请参考:1、github地址:https://github.com/xmendez/wfuzz
2、wfuzz文档:http://wfuzz.readthedocs.io
-
WFUZZ使用教程
2019-10-22 14:23:47WFUZZ使用教程 -
wfuzz info
2016-01-24 11:39:25Wfuzz is a tool designed for bruteforcing Web Applications, it can be used for finding resources not linked (directories, servlets, scripts, etc), bruteforce GET and POST parameters for checking diffe -
wFuzz使用帮助
2019-09-28 20:18:30******************************************************** * Wfuzz 2.0 - The Web Bruteforcer * ******************************************************** Usage: /usr/bin/w... -
史上最详[ZI]细[DUO]的wfuzz中文教程(四)—— wfuzz 库
2019-10-18 19:30:13这是wfuzz系列教程的最后一篇啦! wfuzz 库 wfuzz库参数 测试一个URL FuzzSession对象 生成Payload 生成Session wfuzz 库 wfuzz库参数 在wfuzz库中包含所有 wfuzz命令行的参数。 CLI Option Library ... -
wfuzz info2
2016-01-24 11:49:29******************************************************** * Wfuzz 2.0 - The Web Bruteforcer * ******************************************************** Usage: /usr/bin/wfuzz [optio -
wfuzz: configparser and python >3.5
2021-01-08 18:14:15<p>wfuzz requires </p><pre><code>configparser</code></pre> however this package does not support python > 3.5. Due to this, I'm facing the following error: <pre><code> python3.6 /usr/bin/wfuzz ... -
史上最详[ZI]细[DUO]的wfuzz中文教程(二)——wfuzz 基本用法
2019-10-18 19:28:20wfuzz 基本用法 暴破文件和路径 测试URL中的参数 测试POST请求 测试Cookies 测试自定义请求头 测试HTTP请求方法(动词) 使用代理 认证 递归测试 测试速度与效率 输出到文件 不同的输出 wfuzz 基本用法 暴破... -
Web安全 --Wfuzz 使用大全
2019-10-07 05:02:04前言: 做web渗透大多数时候bp来fuzz 偶尔会有觉得要求达不到的时候wfuzz就很有用了这时候 用了很久了这点来整理一次 wfuzz 是一款Python开发的Web安全模糊测试工具。 下载地址 ... -
Python-wfuzz是一款Python开发的Web安全模糊测试工具
2019-08-10 07:03:01wfuzz 是一款Python开发的Web安全模糊测试工具 -
史上最详[ZI]细[DUO]的wfuzz中文教程(一)——初识wfuzz
2019-10-18 18:46:12wfuzz教程 这个教程主要内容是来自wfuzz官方文档。之所以写这个,是因为大多数的国内文章并没有对这个工具进行详细的说明。个人英文还算可以,所以抖胆翻译一下,加上自己的一些操作,一方面加深下自己对这个工具的... -
Store wfuzz configuration according to XDG Base Directory Specification
2021-01-08 18:10:53<div><p>Fixes #129 </p><p>该提问来源于开源项目:xmendez/wfuzz</p></div> -
网站模糊测试爆破工具Wfuzz
2017-07-19 14:22:18网站模糊测试爆破工具Wfuzz -
[v2.2.9] Wfuzz says pycurl is missing, but pycurl is installed
2021-01-08 18:10:25<p>After a recent <code>softwareupdate --all --install --force</code> and <code>brew upgrade</code> it seems that wfuzz is not working anymore. <pre><code> Fatal exception: Wfuzz needs pycurl to run. ... -
爆破工具wfuzz的使用笔记
2019-04-09 21:05:57推荐米斯特的wfuzz手册三部曲 相关命令 -c:用颜色输出 -v:详细的信息 -o 打印机:由stderr输出格式 -p addr:使用代理(ip:port或ip:port-ip:port-ip:port) -x type:使用SOCK代理(SOCKS4,SOCKS5... -
Wfuzz Exits After Fatal exception: Pycurl error 28: Connection timed out after 90000 milliseconds
2021-01-08 18:09:23ve read the docs for <a href="http://wfuzz.readthedocs.io/">Wfuzz</a></li> <p><strong>Please describe your local environment:</strong></p> <p>Wfuzz version: 2.4.6 <p>Python version: 2.7.18 <p>OS: ... -
Wfuzz:一款强大的Web Fuzz测试工具 | 安装报错解决
2019-08-15 16:07:36Wfuzz是一个基于Python的Web爆破程序,它支持多种方法来测试WEB应用的漏洞。你可以审计参数、登录认证、GET/POST方式爆破的表单,并且可以发掘未公开的资源,比如目录、文件和头部之类的。 Wfuzz是一款为了评估WEB... -
Wfuzz模糊测试工具-能模糊的地方都能模糊
2020-08-04 17:39:36Wfuzz模糊测试-URL爆破扫描WFUZZwfuzz参数wfuzz使用方法1、最基本模糊测试路径,文件名,参数值2.过滤显示3.POST请求测试4.指定Cookie5.递归扫描目录总结 WFUZZ wfuzz是用python开发的针对web的模糊测试工具,该工具...
-
自述文件:练习编写readme.md-源码
-
性能调优攻略
-
腾讯、华为2021前端技术岗发布+最新内部面试题
-
Tablayout.setSelectedTabIndicator不显示
-
用Hadoop进行分布式数据处理第2部分:进阶
-
androidLiveFolder(活动文件夹)完全解析
-
linux基础入门和项目实战部署系列课程
-
响应式网站的产品需求和设计流程详解
-
消防课件,非常重要..ppt
-
牛牛量化策略交易
-
access应用的3个开发实例
-
爱奇艺获取每集tvid和剧情介绍的api链接
-
SecureCRT 连接 GNS3/Linux 的安全精密工具
-
Glasterfs 分布式网络文件系统
-
C语言
-
程序员必修基础套餐课
-
linux之常用命令
-
Jsplumb从入门到实战
-
28 后台开发3
-
Mycat 实现 MySQL的分库分表、读写分离、主从切换