模糊测试介绍

模糊测试(fuzz testing,fuzzing)是一种软件测试技术,其核心思想是将自动或半自动生成的随机数据输入到一个程序中并监视程序异常,如崩溃、断言失败,以发现可能的程序错误,比如内存泄露。模糊测试常常用于检测软件或计算机系统的安全漏洞。

可以说,任何以暴力枚举形式的测试都能称为模糊测试。

漏洞挖掘有三种方法:白盒代码审计、灰盒逆向工程、黑盒测试。其中黑盒的Fuzz测试是效率最高的一种,能够快速验证大量潜在的安全威胁。

这里只是对一些常用的Web应用Fuzz工具做简单介绍,之后会结合实战进行一个详细地演示。

BurpSuite

在很多模糊测试场景中,研究人员可能会需要手动输出测试Payload,而BurpSuite 可以帮助我们将整个过程以自动化的方式实现。

关于BurpSuite的使用已经讲过很多遍了,这里就不多解释了。

WFuzz

介绍

wfuzz 是一款Python开发的Web安全模糊测试工具。

项目地址:https://github.com/xmendez/wfuzz

官方手册:https://wfuzz.readthedocs.io/en/latest/

用途

  • 暴破文件和路径
  • 测试URL中的参数
  • 测试POST请求
  • 测试Cookies
  • 测试自定义请求头
  • 测试HTTP请求方法(动词)
  • 使用代理
  • 认证
  • 递归测试
  • 测试速度与效率
  • 输出到文件
  • 不同的输出

语法

  • 基础语法
1
wfuzz [options] -z payload,params <url>
  • 常用参数
1
2
3
4
5
6
7
-z  payloads里面的参数(wfuzz -e payloads 可以查看)

-z file,1.txt(以文件形式,导入1.txt)

-z range,1-10(以范围形式,1到10)

-z list,1-2-3-10(列表形式,1,2,3,10)
1
2
3
-d   设定POST量

-d “uname=admin&passwd=admin”
1
2
3
-b   设定cookie量

-b “cookie=”
1
2
3
-H  设定头部信息

-H “User-Agent: firfox”
1
2
3
-X  设定请求方法

-X GET
1
2
3
-R  递归深度,探测目录很好

-R 1(深度为1)
1
2
3
-t   并发数 / -s  请求间隔时间  (这个主要是防拉黑,比如我要fuzz狗)

-t 3 -s 5
1
2
3
-f   输出到文件的格式,格式有raw,json,csv,magictree,html

-f /tmp/1,html (将结果输出到tmp目录下的1,以html格式)

输出的结果信息解析:

结果信息

1
2
3
4
5
6
7
8
9
10
11
ID:测试时的请求序  

Response:HTTP响应码 C

Lines:响应信息中的行数 L

Word:响应信息中的字数 W

Chars:响应信息中的字符数 H

Payload:当前使用的payload
1
2
3
4
5
6
7
8
隐藏结果  --hc  --hl  --hw  --hh 

隐藏响应码405 --hc 405


显示结果 --sc --sl --sw --sh

显示响应码405 --sc 405

示例

遍历id值隐藏500返回码并保存为html文件:

1
wfuzz -z range,1-200 --hc 500 -f 1,html http://www.XXX.net/Pro_show.asp?proid=FUZZ

需要一次测试多个FUZZ

1
wfuzz -z file,1.txt -z file,2.txt  http://www.xxx.com/FUZZ/FUZ2Z.html

对于需要base64加密的cookie

1
wfuzz -z file,1.txt,base64 -b “cookie=”FUZZ” http://www.xxx.com”

探测目录

1
wfuzz -z file,common.txt -R 2 -f 2.html,html http://www.baidu.com/FUZZ

FFuF

ffuf是一款Go语言编写的高速Web Fuzzer工具,该项目深受大型项目gobuster和wfuzz的启发。

项目地址:https://github.com/ffuf/ffuf/

用法与wfuzz差不多,就不进行具体介绍了。

具体用法可查看这篇文章:https://www.cnblogs.com/secxue/p/14617343.html