FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序把安全装进口袋
wfuzz是一款Python开发的Web安全测试工具wfuzz不仅仅是一个web扫描器:
一个典型的wfuzz命令只需要指定一个字典和一个要测试的URL即可,如下:
wfuzz的输出使我们能够分析webserver的响应,还可根据获得的HTTP响应信息过滤出我们想要的结果,比如过滤响应码/响应长度等等。
每一行输出给我们提供了以下信息:
使用-h和--help参数来获取基本帮助信息和详细帮助信息。wfuzz是一个完全模块化的模式,你可以使用-e<
可用的categories包括:payloads,encoders,iterators,printers和scripts。
wfuzz基于一个非常简单的概念:它用一个给定的payload来替换相应的FUZZ关键词的值,我们称FUZZ这样的关键词为占位符,这样更容易理解。一个wfuzz中的payload就是一个输入的源。
要想得到所有可用的payload列表,可以执行如下命令:$wfuzz-epayloads
关于payloads的更详细的信息可以通过以下命令获取:$wfuzz-zhelp
上面这个命令还可以使用--slice参数来对输出结果进行过滤:
指定一个payload每个FUZZ占位符都必须为它指定相应的payload。指定一个payload时有几种方法:
stdin这个payload可以在使用一些外部字典生成工具时很方便:
对wfuzz的结果时行过滤是非常重要的:
wfuzz可根据HTTP响应码和收到的响应的长度(字数,字符数或行数)来过滤。还可以用正则表达式。过滤的方法有两种:隐藏或显示符合过滤条件的结果。
隐藏响应结果
用行数,字数,字符数来指定过滤规则,在当HTTP返回码相同的时候比较方便。比如,网站一般会指定一个自定义的错误页面,返回码是200,但实际上起到了一个404页面的作用,我们称之为软404。下面是一个例子:
仔细观察上面的结果,我们很容易推断出所有”notfound”的返回信息中都有51个行,138个字,962个字符。因此,我们需要改进一下我们的过滤条件(增加多个过滤条件):
显示响应结果
显示响应结果的使用方法跟隐藏时的原理一样,只不过参数变为了:--sc,--sl,--sw,--sh。
使用Baseline
习惯上称Baseline为”基准线“。过滤器可以是某个HTTP响应的引用,这样的引用我们称为Baseline。之前的使用--hh进行过滤的例子中,还可以使用下面的命令代替:
这里,{}来指定第一次HTTP请求时用来替换FUZZ占位符的值,其响应将被标记为BBB,并用于过滤条件中。
使用正则表达式过滤
payload为wfuzz生成的用于测试的特定字符串,一般情况下,会替代被测试URL中的FUZZ占位符。当前版本中的wfuzz中可用payloads列表如下:
encoderencoder的作用是将payload进行编码或加密。wfuzz的encoder列表如下:
iteratorwfuzz的iterator提供了针对多个payload的处理方式。itorators的列表如下:
printerwfuzz的printers用于控制输出打印。printers列表如下:
scripts暂时不知道怎么使用scripts列表如下:
内置工具wfencode工具这是wfuzz自带的一个加密/解密(编码/反编码)工具,目前支持内建的encoders的加/解密。
wfpayload工具wfpayload是payload生成工具
wxfuzz工具这个看源码是一个wxPython化的wfuzz,也就是GUI图形界面的wfuzz。目前需要wxPython最新版本才能使用,但是在ParrotOS和Kali上都无法正常安装成功,问题已在GitHub提交Issue,期待开发者的回复中…
这是wfuzz的主工具,我们平时使用的时候就是用这个。先来看看帮助文档: