微信小程序渗透

微信小程序渗透

本文章中的操作都是在mac操作系统下进行

一、小程序抓包

1、安装新版本微信

微信目前已经支持在电脑端打开小程序,下载支持打开小程序的版本

并非必须要下载图示版本,现版本都可以打开小程序

2、安装Burp证书

首先打开Burp,浏览器使用burp代理地址,选择右上角下载CA证书

image

下载证书后,打开证书,并验证身份,然后将弹出钥匙串访问

image

可以看到当前证书已经被添加到系统中,但是仍然是不被信任的。

双击添加的证书“PortSwigger CA”,然后为证书添加始终信任。

image

原本的证书上变成了蓝白色加号,此时我们的证书就安装完毕

3、设置Proxifier代理

下载Proxifier代理工具:下载地址

配置代理地址为BurpSuite代理地址

image

此时我们会发现BurpSuite会抓到很多应用的包
这里在Proxifier中选择Rules添加规则,使仅代理微信小程序的流量
使用 ⌘+⇧+G 来选择目录

/Applications/WeChat.app/Contents/MacOS

image

进入以上的路径之后,选择Mini Program,然后选择需要使用的代理地址

image

保存之后,将default代理修改为Direct ,将其余的流量正常放行

image

此时我们的配置已经完成了

4、完成

接下来打开微信小程序
然后我们就可以在抓包工具中捕获到小程序的数据包了

image

可以在Proxifier右上角,将当前的配置文件保存下来,下次可以直接进行切换

二、小程序源码获取

1、安装环境

💡 需要将手机root或者越狱,才可以获取到小程序的源码

这里可以使用模拟器来进行

使用网易mumu安卓模拟器下载微信RE文件管理器

image

首先使用微信打开指定的小程序

这一步的目的是为了让小程序完整的加载到本地去

2、获取小程序的包

RE文件管理器中,打开以下目录

/data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg

其中的{user}是一个很长很长的字符串,如果不能确定就点开看里面的目录,根据里面的目录来确定

image

如果无法确定是哪个小程序的包,可以根据文件的修改时间来判断

其中975在进行了多个小程序中都存在,所以可能是微信小程序公共的包?

将小程序的包文件复制出来
可以使用mumu的自带的共享文件夹来进行主机和模拟器之间的文件复制

3、解小程序包

使用解包工具进行解包

使用该工具需要安装node.js

wxappUnpacker

clone之后进入到wxappUnpacker文件夹中,安装依赖
然后执行node wuWxapkg.js [apkg_filepath],即可解包到当前目录的一个新文件夹中
image

执行脚本中可能会出现以下报错

image

报错信息如下

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

image

代码段如下,自行找准位置替换

			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

image

代码段如下,自行找准位置替换

						// pureData = vm.run(code + "\n_C");
            pureData = vm.run(code + "}");

完成之后运行脚本将不再报错

该解决方案来自于此

解包之后,如下图所示

image

4、导入微信开发者工具

打开微信开发者工具,首先使用微信进行登录

image

💡 若是先进行了导入,再登录微信,会发现该项目仍然是游客模式。解决方案就是在开发者工具中删除该项目,然后重新导入,选择测试号即可。

选择导入,然后选择解出的小程序包文件夹

image

AppID中选择使用测试号

💡 AppId和微信账号是绑定在一起的,这里不能使用小程序本身的AppID,所以选择使用测试号

进入之后,出现如下提示,表示无法打开非业务域名

image

在界面右上角选择,详情本地设置不校验合法域名......

然后就可以成功的打开小程序了


参考链接:
https://www.wangan.com/p/7fygfg20b4f55b0d
https://www.hackinn.com/index.php/archives/672/
https://github.com/xuedingmiaojun/wxappUnpacker/issues/30

posted @ 2022-08-17 18:43  Lrain.*  阅读(1762)  评论(0编辑  收藏  举报