大家好,我是阿萨。昨天解决了HTTPS的证书问题,大部分网站都可以扫描了。Web 网站扫描报告的导出,也是那么的像模像样了,开发也不需要找你。只需要看下修复建议,就大概知道如何修复了。
但是安全测试过程中有一类测试,就是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 注入测试。
- 先找到你需要测试的API 请求的参数,无论它在URL 还是在Body里,选择中,打开Fuzz 对话框。
- 点击Payloads 按钮。
- 在Payloads 位置 点击Add
- 选择File Fuzzers
- 打开jbrofuzz, 选择SQL Injection, 选择添加,然后开始Fuzz 测试。
- 在下方Fuzzer 结果窗口分析所有200 结果的请求,表明注入成功了。
是不是很简单?
四. 如何使用Fuzz 测试做路径遍历?
上面介绍了SQL 注入,路径遍历的测试方法如下:
- 选择URL 中可以替换的位置或者是 Body 里的参数。选中后,打开Fuzz对话框。
- 添加Payloads
- 在上图对话框中选择dirbuster.
- 添加好payload 后开始Fuzz测试即可。
- 有些同学可能说了,URL 上的参数如果要编码怎么办?ZAP为我们提供了一个强大的处理器。
- 在Processors 里可以选择对参数进行各种处理,比如密码加密,给参数添加前缀,URL 编码等等。
- 通过选择URL 编码,可以实现给payload参数编码。然后开始Fuzz 测试。通过分析结果中的200 请求来判断路径遍历漏洞是否存在。
目前内置的处理器有
- Base64解码
- Base64编码
- 扩展(到指定的最小长度)
- JavaScript escape
- JavaScript Unescape
- MD5哈希
- 后缀字符串
- 前缀字符串
- sha - 1哈希
- sha - 256散列
- sha - 512散列
- Trim
- URL解码
- URL编码
如果你对系统比较熟悉,可以自己写一个路径的list 文件,然后导入上面的对话框中,查看是否有路径遍历。或者观察 URL 中是否有数字或者有规律的字符,可以用其他数字或者字符替换。
五. 实践题
学习了如何使用zap 做安全 测试的场景。请大家实践下如何使用Fuzz 暴力破解你所要测试的网站。
谢谢大家的学习。我们明天见。