微信小程序渗透
微信小程序渗透
本文章中的操作都是在mac操作系统下进行
一、小程序抓包
1、安装新版本微信
微信目前已经支持在电脑端打开小程序,下载支持打开小程序的版本
并非必须要下载图示版本,现版本都可以打开小程序
2、安装Burp证书
首先打开Burp,浏览器使用burp代理地址,选择右上角下载CA证书
下载证书后,打开证书,并验证身份,然后将弹出钥匙串访问
可以看到当前证书已经被添加到系统中,但是仍然是不被信任的。
双击添加的证书“PortSwigger CA”,然后为证书添加始终信任。
原本的证书上变成了蓝白色加号,此时我们的证书就安装完毕
3、设置Proxifier代理
下载Proxifier代理工具:下载地址
配置代理地址为BurpSuite代理地址
此时我们会发现BurpSuite
会抓到很多应用的包
这里在Proxifier
中选择Rules
添加规则,使仅代理微信小程序的流量
使用 ⌘+⇧+G 来选择目录
/Applications/WeChat.app/Contents/MacOS
进入以上的路径之后,选择Mini Program
,然后选择需要使用的代理地址
保存之后,将default
代理修改为Direct
,将其余的流量正常放行
此时我们的配置已经完成了
4、完成
接下来打开微信小程序
然后我们就可以在抓包工具中捕获到小程序的数据包了
可以在Proxifier右上角,将当前的配置文件保存下来,下次可以直接进行切换
二、小程序源码获取
1、安装环境
💡 需要将手机root或者越狱,才可以获取到小程序的源码
这里可以使用模拟器来进行
使用网易mumu安卓模拟器
下载微信
和RE文件管理器
首先使用微信打开指定的小程序
这一步的目的是为了让小程序完整的加载到本地去
2、获取小程序的包
在RE文件管理器
中,打开以下目录
/data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg
其中的{user}是一个很长很长的字符串,如果不能确定就点开看里面的目录,根据里面的目录来确定
如果无法确定是哪个小程序的包,可以根据文件的修改时间来判断
其中975在进行了多个小程序中都存在,所以可能是微信小程序公共的包?
将小程序的包文件复制出来
可以使用mumu的自带的共享文件夹来进行主机和模拟器之间的文件复制
3、解小程序包
使用解包工具进行解包
使用该工具需要安装
node.js
clone之后进入到wxappUnpacker文件夹中,安装依赖
然后执行node wuWxapkg.js [apkg_filepath]
,即可解包到当前目录的一个新文件夹中
执行脚本中可能会出现以下报错
报错信息如下
SyntaxError: Unexpected end of input
at new Script (node:vm:100:7)
at VMScript._compileVM (/Users/lrain/SecTools/wxappUnpacker/node_modules/vm2/lib/main.js:123:22)
at VM.run (/Users/lrain/SecTools/wxappUnpacker/node_modules/vm2/lib/main.js:288:10)
at /Users/lrain/SecTools/wxappUnpacker/wuWxss.js:243:27
at /Users/lrain/SecTools/wxappUnpacker/wuLib.js:95:14
at agent (/Users/lrain/SecTools/wxappUnpacker/wuLib.js:64:23)
at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3)
解决方案:
Step1:修改wuWxss.js
文件31
行
代码段如下,自行找准位置替换
function statistic(data) {
function addStat(id) {
// if (!importCnt[id]) importCnt[id] = 1, statistic(pureData[id]);
if(!importCnt[id]){
if(pureData){
importCnt[id]=1;
statistic(pureData[id]);
}
}
else ++importCnt[id];
}
Step2:修改wuWxss.js
文件243
行
代码段如下,自行找准位置替换
// pureData = vm.run(code + "\n_C");
pureData = vm.run(code + "}");
完成之后运行脚本将不再报错
解包之后,如下图所示
4、导入微信开发者工具
打开微信开发者工具
,首先使用微信进行登录
💡 若是先进行了导入,再登录微信,会发现该项目仍然是游客模式。解决方案就是在开发者工具中删除该项目,然后重新导入,选择测试号即可。
选择导入,然后选择解出的小程序包文件夹
AppID中选择使用测试号
💡 AppId和微信账号是绑定在一起的,这里不能使用小程序本身的AppID,所以选择使用测试号
进入之后,出现如下提示,表示无法打开非业务域名
在界面右上角选择,详情
→本地设置
→不校验合法域名......
然后就可以成功的打开小程序了
参考链接:
https://www.wangan.com/p/7fygfg20b4f55b0d
https://www.hackinn.com/index.php/archives/672/
https://github.com/xuedingmiaojun/wxappUnpacker/issues/30