在计算机领域,Fuzz Testing(模糊测试)是一种测试方法,即构造一系列无规则的“坏”数据插入应用程序,判断程序是否出现异常,以发现潜在的bug。在信息安全领域,也有人尝试引入fuzz test…
在计算机领域,Fuzz Testing是一种测试方法,它构造一系列不规则的“坏”数据插入应用程序,以确定程序是否有异常来检测潜在的错误。在信息安全领域,有些人试图引入模糊测试思想来利用安全漏洞,效果很好。
JSRC 安全课堂第117号,邀请dogboy作为讲师分享一些关于模糊的简单想法。与此同时,我要感谢你们所有人的精彩讨论。
京安小妹:模糊的优点和缺点是什么?
dogboy :
优点:
1该技术简单易操作,节省了大量人力。程序运行后,只需要分析结果。
2发现漏洞很快,误报率相对较低
缺点:
1黑盒测试的所有缺点
2如果它是一个复杂的协议,那么构建测试用例周期很长,不通用
3无法测试未记录的接口
静安小梅:正常情况下模糊的内容是什么?
dogboy :
文件格式Fuzz 在软件漏洞的挖掘中比较常见,似乎ImageMagick的许多崩溃都是基于这样的模糊
- 图片格式
- 文件格式
- 还有很多
协议模糊
- RPC协议
- Http协议(参数=值,路径)
- 还有很多
静安小梅:漏洞利用漏洞时有什么用?
Dogboy
当我们使用sql注入waf时,我们大多数人将使用模糊技术,依靠强大的字典来绕过waf关键字检测。
https://xz.aliyun.com/t/2418
或者像参数名称一样模糊参数名称,寻找jsonp劫持,过度授权或rce
https://gh0st.cn/archives/2018-07-25/1
密钥使用添加,删除和更改参数的模糊方法。尝试挖掘无法直接发现的漏洞(通常适用于挖掘逻辑类漏洞)。
而且我只能模糊网址跳跃的参数,挖一个挖掘的网址跳跃
静安小梅:模糊最重要的是什么?
Dogboy
我认为字典的第一个键,字典应该足够大,以涵盖所有可能性。
关于字典:
1.收集网站本身以传递参数和值

2.收集和组织常用词典
3.收集和组织词典的规则
静安小梅:有什么更好的模糊工具?
Dogboy
面向Web的Fuzz工具
https://github.com/xmendez/wfuzz
https://github.com/maK-/parameth
可以在请求参数类的模糊测试中使用,上面列出的项目的所有功能都依赖于字典和字典规则来完成测试。
HTTP Fuzzer
https://fuzzer.test404.com/?/article/5
优点是你可以拖放插件,不需要编写脚本,而且它是图形的,windows很容易使用,适合懒惰使用时23333
XssSniper插件
chrome的插件,由360的0kee团队编写的插件,值得深思的是我依靠这个插件来模拟360主站的xss。

总结一下
模糊测试只是自动发现漏洞的重要手段,就像自动化漏洞扫描程序一样。我们不能完全依赖它。在测试过程中,手工分析结果和合理改进字典不仅可以提高模糊测试的效率,还可以帮助我们探索更多潜在的设计缺陷。毕竟,机器毕竟是“硬”,人们是“灵活的”。
Dogboy
互动问答环节:
1. fuzz是规则还是累积字典?
规则和累积词典
字典可以很好地组织这个项目
https://github.com/fuzzdb-project/fuzzdb
猪人的字典
https://fuzz.wget.lc/Fuzz/
这是JSRC安全小班的结论。如需更多内容,请期待下一个安全小班。如果您还想在安全的小课堂内容中出现某些内容,请留言告诉我们。