但是安全测试过程中有一类测试,就是Fuzz 测试。问题表现就是特别简单的异常参数攻击,就有可能导致网站出现致命问题。甚至服务器重启等异常情况产生。绝对是测试过程中投入产出比特别高的一类测试。
最典型场景就是暴力破解。把常见用户名和密码输入到参数列表里,然后用参数列表替换登录接口里的用户名和密码。返回请求结果正常的200以及结果正常的,表示破解成功了。
一 . 什么是Fuzz 测试?
Fuzz测试,也叫做“模糊测试”,是一种挖掘软件安全漏洞、检测软件健壮性的黑盒测试,它通过向软件输入非法的字段,观测被测试软件是否异常而实现。Fuzz测试的概念非常容易理解,如果我们构造非法的报文并且通过测试工具注入被测设备,那么这就是一个Fuzz测试的测试例执行,大多数测试工程师肯定都尝试过这种测试手段。今天我们就来学习如何用ZAP做这类测试。
二. ZAP 的Fuzz 功能入口
由上面的介绍我们得知:Fuzz是一种向目标提交大量无效或意外数据的技术。那么如何用ZAP做Fuzz呢?
要打开Fuzzer对话框,可以:
●右键单击ZAP选项卡中的一个请求(例如历史记录或站点),然后选择“Attack / Fuzz…”
●在Request选项卡中双击选中一个参数值,高亮显示一个参数的字符串,右键单击它并选择“Fuzz…”
●选择“Tools / Fuzz…”菜单项,然后选择你想要做Fuzz的请求
三. 如何利用Fuzz 做SQL注入?
接下来我们演示下如何使用Fuzz 做SQL 注入测试。
1.先找到你需要测试的API 请求的参数,无论它在URL 还是在Body里,选择中,打开Fuzz 对话框。
2.点击Payloads 按钮。
3.在Payloads 位置 点击Add
4.选择File Fuzzers
5.打开jbrofuzz, 选择SQL Injection, 选择添加,然后开始Fuzz 测试。
6.在下方Fuzzer 结果窗口分析所有200 结果的请求,表明注入成功了。
是不是很简单?
四. 如何使用Fuzz 测试做路径遍历?
上面介绍了SQL 注入,路径遍历的测试方法如下:
1.选择URL 中可以替换的位置或者是 Body 里的参数。选中后,打开Fuzz对话框。
2.添加Payloads
3.在上图对话框中选择dirbuster.
4. 添加好payload 后开始Fuzz测试即可。
5.有些同学可能说了,URL 上的参数如果要编码怎么办?ZAP为我们提供了一个强大的处理器。
6.在Processors 里可以选择对参数进行各种处理,比如密码加密,给参数添加前缀,URL 编码等等。
7.通过选择URL 编码,可以实现给payload参数编码。然后开始Fuzz 测试。通过分析结果中的200 请求来判断路径遍历漏洞是否存在。
目前内置的处理器有
●Base64解码
●Base64编码
●扩展(到指定的最小长度)
●JavaScript escape
●JavaScript Unescape
●MD5哈希
●后缀字符串
●前缀字符串
●sha - 1哈希
●sha - 256散列
●sha - 512散列
●Trim
●URL解码
●URL编码
如果你对系统比较熟悉,可以自己写一个路径的list 文件,然后导入上面的对话框中,查看是否有路径遍历。或者观察 URL 中是否有数字或者有规律的字符,可以用其他数字或者字符替换。
谢谢大家的学习。我们明天见。