本文发布于468天前,本文最后更新于468 天前,其中的信息可能已经过时,如有错误请留言或评论。
知识点
- Fuzz技术应用-用户口令(弱口令)
- Fuzz技术应用-目录文件(泄漏点)
- Fuzz技术应用-未知参数(利用参数)
- Fuzz技术应用-Payload(Bypass)
fuzz项目字典都在文末,GitHub地址自行下载即可。
Fuzz知识
含义
- 是一种基于黑盒的自动化软件模糊测试技术,简单的说一种懒惰且暴力的技术融合了常见的以及精心构建的数据文本进行网站、软件安全性测试。
Fuzz的核心思想
- 口令Fuzz(弱口令)
- 目录Fuzz(漏洞点)
- 参数Fuzz(利用参数)
- PayloadFuzz(Bypass)
Fuzz应用场景:
- 爆破用户口令
- 爆破敏感目录
- 爆破文件地址
- 爆破未知参数名
- Payload测漏洞(绕过等也可以用)
在实战黑盒中,目标有很多没有显示或其他工具扫描不到的文件或目录等,我们就可以通过大量的字典Fuzz找到的隐藏的文件进行测试。
演示案例
➢Fuzz技术-用户口令-常规&模块&JS插件
常规
- 使用bp爆破模块对一个或者多个参数进行爆破
- 一个参数可以选择Sniper模式,多个参数可以选择Cluster bomb模式
- 然后配置各自参数的字典进行爆破即可
- 爆破模块的简单使用可以参考:
- Burp Suite爆破模块中的四种模式的区别详解和演示(暴力破解)
模块
- 数据包中发送的参数被进行了加密,但已知加密算法,且不需要密钥偏移量等的加密(即md5,url,base64等)爆破可以使用模块
- 如图,多种模式以供选择
- 如是md5加密,可以选择hash然后在选择md5
- 此时就会对该参数发送时进行md5加密
JS插件
- 用来加密参数,爆破参数使用了有密钥偏移量等的加密算法进行加密,bp自带的模块无法进行加密
- 通过对网站js进行逆向分析,获取到网站对该参数的加密的算法、密钥、偏移量等
jsEncrypter
GitHub下载地址:https://github.com/c0ny1/jsEncrypter
具体使用方式可以看之前的笔记:
使用方式:
- 修改插件目录下的phantomjs_server.js
- 修改加载实现加密算法的js脚本,需要将网站加密使用的js文件直接下载保存下来
-
修改处理函数
- 运行脚本,开启端口
phantomjs .\phantomjs_server.js
- 配置插件,连接测试
- 然后在爆破模式下选择模块时选择Invoke Burp extension,选择jsEncrypter后,进行爆破,参数就会经过js中的算法加密后发送
BurpCrypto
GitHub下载地址:https://github.com/whwlsfb/BurpCrypto
使用方式:
- 若知道是什么加密算法,且知道密钥和偏移量,那么直接使用即可,添加processor,然后在爆破模式下,选择模块时选择Invoke Burp extension,然后选择自己取名的processor即可
- 若是不知道是什么加密,但有js,可以将其放到Exec Js中进行执行,然后定义一个函数返回加密后的值即可,然后添加processor,同样在爆破模式下,选择模块时选择Invoke Burp extension,然后选择自己取名的processor即可
- 如果这里弄好之后爆破时没有正常爆破,或者没有加密,可以将右下角JS引擎换为别的进行尝试
➢Fuzz技术-目录文件-目录探针&文件探针
含义
- Fuzz就是盲猜,尝试去访问页面没有体现的目录或者文件,即未知的目录或者文件
目录文件探针
- 即使用bp,采用字典爆破目录路径和文件
➢Fuzz技术-未知参数名-文件参数&隐藏参数
含义
- 找漏洞,一般是有目录,文件,参数名称,参数值
方法
假设目标网站有这样一个路径:http://xxx.xxx.xxx.xxx/admin/ping.php?do=1
- 通过Fuzz爆破出来了这个路径文件,目录/admin,文件ping.php
- 直接访问页面返回一个error
- 但是找漏洞需要构造参数和参数值,但我们不知道参数名称和参数值
- 所以修改数据包将访问路径修改为/admin/ping.php?a=1,然后对a进行爆破,这个1是瞎写的,是什么都可以
- 即盲猜参数名
- do返回长度不同,其他都会返回error,但是do返回没有error,所以存在do参数名
- 然后就使用字典再去爆破参数值,因为这里猜测是rce,所以使用rce的字典去跑这个参数值
- 成功得出结果
总结
- 这个的话,页面不能没有返回,若什么返回都没有,页面返回长度就会一致,不管怎么爆破,返回长度都一致
- 即页面访问正确和错误有差异,若没有差异,则不知道Fuzz猜测是是否正确
➢Fuzz技术-构造参数值-漏洞攻击恶意Payload
就是上面未知参数名那个里面,爆破参数值
➢Fuzz技术SRC泄漏未授权案例分享
- Fuzz手机加验证码突破绕过
- Fuzz访问URL挖未授权访问
- Fuzz密码组合规则信息泄漏
总结
- 若访问网站为空,什么都没有可以先fuzz目录和文件
- 猜到文件后,没有参数名,fuzz参数名
- 找到参数名后,fuzz参数值
- 对参数值进行爆破,启用各种payload,即各种漏洞的攻击
- 通页面返回不同,获取最终结果
不止可以用在上面的例子中,如还可以使用在上传漏洞中,在文件上传的地方,文件上传格式被过滤,可以fuzz上传各种后缀,尝试看哪个后缀可以上传,没有被拦截。还有可以测试提交方法get、post、put等等,还有找到网站js目录后,爆破js目录下的js文件,fuzz模糊测试,就是对各种地方进行各种测试。
实战中会耗费大量时间,因为可能会扫描到很多目录文件,参数名和参数值也会有很多,因为你不知道是什么漏洞,所以需要将各种漏洞都测试一遍,并且若对方页面即使你参数名正确,一样返回和参数名不正确的相同的页面,那也测试不出来。
参考
学习内容均来自小迪安全系列课程:
Fuzz项目