解开微信devtools进行debug获取加密逻辑和还原js后硬逆,两种思路各有利弊
小程序sign逆向和渗透两种思路,总有一款适合你
0x01 sign发现和排查思路
起因是在做小程序渗透的过程中,改了数据重新发包显示系统异常,数据包如下图所示,猜测可能是signature这行是sign校验,所以才会出现异常
然后因为正常请求是显示的是code无效,且请求头中存在大量参数,于是为了排除干扰就开始依次修改请求头中的每一组值再发包,如果修改后发包显示系统异常,那就证明这个sign值校验跟这个请求头也有关,最后如下图所示,初步判断请求头中有四处busi-timestamp、busi-noncestr、busi-appid、json请求体、这四处变一下响应就变成了系统异常,所以盲猜busi-signature就是根据他们四个的值进行计算得来的
0x02 解开微信devtools进行debug获取加密逻辑
接下来使用第一种方式进行破译sign校验,虽然这个方法非常简单,但是其实这个方式我并不推荐,因为它是需要解开微信小程序devtools,存在封号风险,所以如果要尝试一定要使用自己的微信小号、同时注意一定不要使用虚拟机!!!
我这里远控我另一台电脑登录我的微信小号,工具地址:https://github.com/JaveleyQAQ/WeChatOpenDevTools-Python
打开微信后执行
WechatOpenDevTools-Python.exe -x
成功打开devtools
上图代码分析,首先要知道busi-appID是写死的后续不会改变,然后可以看到busi-signature的值是a,而a又是一个函数计算得到的,我们直接跟进这个函数,如下,可以看到它先创建个HMAC对象秘钥是t,然后对e进行了计算,这里直接debug