0.1 前言
在进行小程序的渗透的时候发现请求包中的请求体是加密数据,本意是开发人员不想让人看到其中的数据:
防止数据被轻易窥探
防止请求被重放
增加逆向工程难度
保护敏感业务逻辑
如下图所示:
0.2 绕过
0.2.1 工具
下面我将用实战案例描述针对这种类型的站点我们怎么样进行绕过。
所需工具:
- https://github.com/fasnow/fine
- 作用:针对小程序进行反编译
- https://github.com/cloud-jie/CloudX
- 作用:针对加密、防重放、签名进行操作
0.2.2 思路
小程序请求体的数据是加密一般加密算法在前端的JS中,在发送请求数据包的时候,就把关键数据进行加密,其中我们也可以利用这个特性找到加密算法:
- 通过强开F12断点调试小程序前端查找加密算法
- 优点:更加清晰准确的找到加密算法,而且定位准确
- 缺点:微信号容易被封
- 通过反编译小程序从源码中查找加密算法
- 优点:微信号不容易被封,且找寻算法过程较快
- 缺点:会定位到很多加密算法,需要挨个尝试加密算法
以上两点均可以找到关键加密算法,下面中我将使用通过反编译查找加密算法
0.3 方法
0.3.1 反编译寻找关键点
使用fine
工具针对小程序进行反编译
得到源码之后,我们在进行全局搜索关键词encrypt、decrypt、AES、RSA
。
其中,我们可以通过webStorm直接搜索到关键点
由于小程序反编译之后代码比较凌乱找寻起来比较耗费时间,此时我们可以仔细观察:
- 带有KEY字段的样式以及:
enc.Utf8.parse
以及AES.encrypt
这种关键信息
这时,我们通过刚刚上面两种方式就可以找到关键点,包括加密信息:
下载脚本,修改脚本main函数中的search_directory指向指定小程序反后的目录
运行脚本,可以得到如下信息:
其中,我们可以从中的得到关键的信息,通过全局搜索脚本得到的信息,我们可以找到关键的加密算法以及密钥还有偏移。
也可以通过加密摘要得到信息
得到的加密代码可以直接给AI进行识别:
0.3.2 自动化加解密
使用Burp Suite抓包工具,使用CloudX
进行加解密测试
0.3.2.1 加载插件
0.3.2.2 解密流程
此时抓包,我们可以找到红框内为加密数据
选中数据包,发送到插件
请求参数->请求体->requestBody->加解密配置->选择我们找到的算法
我们填入对应的值,点击解密,就可以成功解密数据
0.3.2.3 自动解密
我们可以设置,爆破模型下,以及抓包,重放包模式下,自动加密解密:
点击下图中的按钮,添加,就可以在抓包,重放包模式下,自动加密解密
测试是否正常:点击查看当前已配置的规则->执行->就可以看到黄色样式,表示成功
此时我们在进行抓包,就可以看到抓到的包已经是加密了的,而且不管是重发包以及爆破模式下,都是自动加解密。