微信小程序渗透——反编译小程序

1、介绍

微信小程序渗透时,因为小程序没有网页端页面,所以不能直接访问抓包分析,如果需要抓包分析,一般就是要么用电脑上的安卓模拟器登录微信利用burp抓包,要么就是用burp抓手机的包,要么就是从手机上直接抓包。具体步骤网上很多,我一般简单的抓包就是ios上用“Stream”这个软件,很方便的就抓包了。

image-20230509090803614

本文主要讲的重点是微信小程序的反编译,因为反编译出来可以看到小程序的前端源码,可以渗透出更多的东西。

2、使用电脑版微信获取小程序的源码

image-20230509091242655

这里直接打开微信存储文件的文件夹

这里的两个wx开头的文件就代表两个小程序,如果之前用电脑版微信打开过小程序,每打开一个小程序,就会创建一个小程序的文件夹,如果你这里有很多的文件夹,你分不清哪个是哪个小程序,那就直接都删掉,然后你去每新打开一个小程序,就会自动生成一个文件夹

我们进入文件夹里面,其实里面就是一个文件,这就是我们小程序的源码,但是是加密的,我们需要对其解密

网上有很多的方法和工具解密,但是我这里演示的是我测试通过的方法和工具

2、使用工具解密源码

解密工具:https://github.com/superBiuBiuMan/wechatMiniAppReverse

这个工具是解密+反编译,所以很方便

工具自带使用方法,但使用方法不全,所以我演示一下

进入1.first文件夹

看到这里有使用方法和一个exe文件

我们用命令行进入这个文件夹,然后输入以下命令(不要直接复制,要改成自己的)

1
pc_wxapkg_decrypt.exe -wxid wx001680b1e33d561c -in C:\Users\long\Desktop\1.wxapkg -out C:\Users\long\Desktop\11.wxapkg

这段命令先是制定了这个文件夹下的exe文件,然后需要输入微信小程序的wxid,这个直接就是复制刚刚那个小程序文件夹的名称即可。然后指定输入文件和输出文件,我这里把刚刚那个加密的小程序复制到了桌面并改成1.wxapkg名字了,这样方便一点。输出文件的路径和名字自己随便取。

提示解密成功就解密好了

3、配置nodejs环境

解密后的源码依然是wxapkg格式,就和压缩包一样,是打包的,所以需要解包

解包需要nodejs支持,如果电脑没有安装nodejs,或者版本比较旧,就需要安装最新版的nodejs

https://nodejs.org/en

官网下载安装即可(安装好会自动配置好环境变量)

如果是默认安装路径的话,应该和我这个路径一样,进入这个路径

把nodejs文件夹下面的所有文件复制出来,然后粘贴到刚刚那个工具的2.second文件夹下的nodejs文件夹下

image-20230509100824391

如果提示文件相同冲突,一律选择“替换”

4、使用工具解包

命令行进入如下图这个文件夹,输入

1
npm install uglify-es

再安装一个

1
npm install cheerio

提示报错

node:internal/modules/cjs/loader:1078
throw err;

这个问题我在网上找了好久,后来发现要使用cnpm安装而不是npm

这个cnpm其实就是淘宝提供的一个镜像服务器,是国内的,比npm国外的稳定

1
npm config set registry https://registry.npmmirror.com
1
npm install -g cnpm --registry=https://registry.npmmirror.com

然后输入cnpm -v看看是否成功配置

然后再输入

1
cnpm install cheerio

这个时候依然有报错,但是看最下面

这个cheerio已经成功安装了

接下来就可以运行工具解包了(需要进入2.second的nodejs文件夹)(提前将解密过的wxapkg文件移动到nodejs文件夹内)

1
node .\wuWxapkg.js C:\Users\long\Desktop\wechatMiniAppReverse-main\wechatMiniAppReverse-main\2.second\nodejs\11.wxapkg

解包完成后,就可以在当前目录下看到解包后的文件夹了

image-20230509104805385 image-20230509104825544

我们可以用vscode打开这个文件夹,然后审计代码了