记一次安卓小程序sign的逆向
![image-20221204120030560](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041200806.png)
记一次安卓小程序sign的逆向
最近因为疫情原因居家办公了,而且任务量比较大,其余的时间也都在学习,这次记录一个前几天遇到的一个特殊的sign值的逆向,之前写的安卓测试技巧阅读量还可以,可以看出大家对安卓测试还是比较感兴趣,这次的sign逆向也跟安卓有关
1. 准备
微信公众号:小惜渗透,欢迎大佬一起交流进步
首先拿到的是一个小程序(不是微信小程序),小程序在app里面,并且目前没有上架,而且就算是测试环境也需要用到特定的手机卡放到卡槽1的位置才可以,这就无形中给了很多阻碍
- 模拟器不行,因为要检测卡槽
- 普通安卓设备也不行,因为无法解决安卓7以上的证书问题
- 苹果也不行,这个小程序也会检测
- 同时app还会检测root情况,如果是root手机,app会闪退
没办法只好拿出我祖传的小米,然后刷了第三方RCE--TWRP
,然后进行卡刷,刷入Magisk,安了个MT管理器(用来移动证书,如果不懂看我之前安卓测试的文章),至此,证书问题解决,但是因为app会检测root权限,所以用Magisk隐藏对该应用隐藏root
如下图所示,开启Zygisk,然后重启,然后在配置排除列表
中添加本次测试的app,即可,这样它就检测不到root了
![image-20221204110702413](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041107452.png)
2. 过程
在测试过程中,发现请求体为json,header中存在sign值,如果我改动请求体,会提示校验错误,看来sign值是根据请求体来进行加密的,那么我肯定要找到加密规则,不然的话基本上测不出来什么东西
so,查壳
![image-20221204111135641](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041111670.png)
没有,nice,直接将app拖入jadx,(下图为模拟图,真实app中没这么多东西),一看东西少之又少,然后简单搜索一下,没找到任何有用的东西
![image-20221204111307767](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041113796.png)
这就难办了,于是我转回去查了一下历史请求,发下一个可疑的请求
![image-20221204111530493](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041115533.png)
搞毛线,你请求zip干嘛?然后我就访问了这个地址拿到了这个zip文件,解压看看
![image-20221204111657361](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041116407.png)
后来我一想对啊,它是小程序啊,这个sign签名可能不是app给加的,而是这个小程序自己加的,小程序如果想要在前端加签名,那么一定要有js文件才对,那么这不就找到了
然后开始分析,直接搜索sign发现有41处,有点多,不过没有关系,因为sign是在header里面,而header一般定义的时候都是{aaa:bbb}
![image-20221204111838642](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041118669.png)
所以改变搜索方式,缩小范围
![image-20221204112018492](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041120534.png)
最后确定位置
![image-20221204112058108](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041120151.png)
接下来反推s
的值,就在上图的上方还存在一些代码,如下
![image-20221204112212017](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041122050.png)
可以推测,Object(n["a"])是一个函数,而它的参数就是e,最后执行的结果赋值给了s,而这个e在上方还能看到data: e
的字样,所以e应该为请求体,接下来只需要定位到Object(n["a"])这个函数即可
随便再往上翻翻
![image-20221204114317862](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041143909.png)
直接搜这个5a6e,这个就很像了
![image-20221204114404640](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041144702.png)
这里推荐一个网站,平时js逆向或者xss绕过的时候很有帮助https://jsrun.net/new,同样的我利用这个网站将其还原,其中我们不知道这个i.a
是什么,不过没有关系,直接百度
![image-20221204114604218](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041146267.png)
这回应该知道是什么了,就是CryptoJS,还原
![image-20221204115148592](https://mc-imgup.oss-cn-beijing.aliyuncs.com/202212041151625.png)