声明:该公众号大部分文章来自作者日常学习笔记,未经授权,严禁转载,如需转载,联系洪椒攻防实验室公众号。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。
一、前言
-
新的一年开始了,带着不一样的心情,开始一年的奋斗,祝大家心想事成。 -
在漏洞挖掘中,Web网站打不动换个思路,试试小程序,方法除了抓包,还可以逆向。本文主要介绍一下我测试小程序的一个方法。
二、正文
1、抓包测试
-
我习惯用PC端微信测试,方法很简单。
-
在此之前还需要在电脑上安装
BurpSuite
的SSL证书,这个应该都安装过。 -
然后安装
Proxifier
,如何安装激活网上教程很多,自行安装。 -
然后打开微信,随便打开一个小程序。可以看到进程中出现如下名称。
-
然后打开
Proxifier
添加上级代理。也就是填写BurpSuite
的监听端口,类型选择HTTPS。 -
再添加代理规则。填入
WeChatAppEx.exe;
,选择刚刚填入的代理服务器。然后勾选上就OK了。 -
刷新,就能在
BurpSuite
中看到小程序的包,以腾讯文档为例。 -
接下来就是点点点,和正常的渗透一样了。
2、逆向测试
-
有两个步骤,解密和逆向。Github上有很多这类项目,就写我成功复现的,分别需要如下三个工具,解密逆向原项目已经删库跑路了。
-
解密:UnpackMiniApp(GitHub上能找到备份仓库) -
逆向:wxappUnpacker(GitHub上能找到备份仓库) -
模拟运行:微信小程序开发者工具(官网能下) -
首先找到小程序包的存储位置,在设置中可以看到根目录,然后找到这个目录下的
Applet
目录。 -
可以看到有很多。以wx命名开头的文件夹,就是每个小程序包所在目录。
-
这里存在只有
__APP__.wxapkg
和除此之外还有其它包的情况,就是主包和可能存在的分包。 -
然后对小程序包进行解密,用到刚刚提到的UnpackMiniApp工具。,先在
UnpackMiniApp.exe
同目录下创建一个wxpack
文件夹选择加密小程序包为__APP__.wxapkg
,有分包一样选择对应的分包。 -
就可以看到解密后的小程序包。
-
解密后再逆向,首先先安装
node.js
环境,这个自行安装,然后再安装项目所需依赖。如果还提示缺依赖再另外安装就行了(我实际运行还安装了escodegen
)。npm install esprima css-tree cssbeautify vm2 uglify-es js-beautify
-
使用工具逆向,包选择刚刚解密过后的包,效果如下。
node ./wuWxapkg.js 主包路径
node ./wuWxapkg.js 分包路径 -s=主包路径 -
解密完就可以看到对应的源码。
-
再打开微信小程序开发者工具,导入
-
就可以看到小程序的界面了。可以翻翻接口配置文件什么的。因为很多小程序不登录什么都看不见。这时候逆向就能看到接口。
三、最后
-
微信小程序很烦的就是很多都要获取用户信息,登录后才能打开。为了防止溯源,建议小程序渗透用自己不常用的微信,可以百度PC端微信双开,双开用小号测试。
原文始发于微信公众号(洪椒攻防实验室):浅谈微信小程序测试技巧