微信小程序渗透——反编译小程序
作者:骁隆,转载于作者博客来源:https://www.onctf.com/
1、介绍
微信小程序渗透时,因为小程序没有网页端页面,所以不能直接访问抓包分析,如果需要抓包分析,一般就是要么用电脑上的安卓模拟器登录微信利用burp抓包,要么就是用burp抓手机的包,要么就是从手机上直接抓包。具体步骤网上很多,我一般简单的抓包就是ios上用“Stream”这个软件,很方便的就抓包了。
本文主要讲的重点是微信小程序的反编译,因为反编译出来可以看到小程序的前端源码,可以渗透出更多的东西。
2、使用电脑版微信获取小程序的源码
这里直接打开微信存储文件的文件夹
这里的两个wx开头的文件就代表两个小程序,如果之前用电脑版微信打开过小程序,每打开一个小程序,就会创建一个小程序的文件夹,如果你这里有很多的文件夹,你分不清哪个是哪个小程序,那就直接都删掉,然后你去每新打开一个小程序,就会自动生成一个文件夹
我们进入文件夹里面,其实里面就是一个文件,这就是我们小程序的源码,但是是加密的,我们需要对其解密
网上有很多的方法和工具解密,但是我这里演示的是我测试通过的方法和工具
3、使用工具解密源码
解密工具:https://github.com/superBiuBiuMan/wechatMiniAppReverse
这个工具是解密+反编译,所以很方便
工具自带使用方法,但使用方法不全,所以我演示一下
进入1.first文件夹
看到这里用使用方法和一个exe文件
我们用命令行进入这个文件夹,然后输入以下命令(不要直接复制,要改成自己的)
pc_wxapkg_decrypt.exe -wxid wx001680b1e33d561c -in C:\Users\long\Desktop\1.wxapkg -out C:\Users\long\Desktop\11.wxapkg
这段命令先是制定了这个文件夹下的exe文件,然后需要输入微信小程序的wxid,这个直接就是复制刚刚那个小程序文件夹的名称即可。然后指定输入文件和输出文件,我这里把刚刚那个加密的小程序复制到了桌面并改成1.wxapkg名字了,这样方便一点。输出文件的路径和名字自己随便取。
提示解密成功就解密好了
4、配置nodejs环境
解密后的源码依然是wxapkg格式,就和压缩包一样,是打包的,所以需要解包
解包需要nodejs支持,如果电脑没有安装nodejs,或者版本比较旧,就需要安装最新版的nodejs
https://nodejs.org/en
官网下载安装即可(安装好会自动配置好环境变量)
如果是默认安装路径的话,应该和我这个路径一样,进入这个路径
把nodejs文件夹下面的所有文件复制出来,然后粘贴到刚刚那个工具的2.second文件夹下的nodejs文件夹下
如果提示文件相同冲突,一律选择“替换”
5、使用工具解包
命令行进入如下图这个文件夹,输入
npm install uglify-es
再安装一个
npm install cheerio
提示报错
node:internal/modules/cjs/loader:1078
throw err;
这个问题我在网上找了好久,后来发现要使用cnpm安装而不是npm
这个cnpm其实就是淘宝提供的一个镜像服务器,是国内的,比npm国外的稳定
npm config set registry https://registry.npmmirror.com
npm install -g cnpm --registry=https://registry.npmmirror.com
然后输入cnpm -v看看是否成功配置
然后再输入
cnpm install cheerio
这个时候依然有报错,但是看最下面
这个cheerio已经成功安装了
接下来就可以运行工具解包了(需要进入2.second的nodejs文件夹)(提前将解密过的wxapkg文件移动到nodejs文件夹内)
node .\wuWxapkg.js C:\Users\long\Desktop\wechatMiniAppReverse-main\wechatMiniAppReverse-main\2.second\nodejs\123.wxapkg
解包完成后,就可以在当前目录下看到解包后的文件夹了