Author:last0monster@MS509

配置渗透测试环境

由于微信客户端很多,android、ios、windows、mac等平台都有对应客户端,我们只需要选择支持小程序和公众号的客户端进行渗透测试即可。

配置抓包环境

由于微信小程序和公众号一般使用https加密通信,必须配置抓包软件(比如burp)的证书,使微信客户端信任burp证书。

  • windows、ios、mac系统配置证书只需要常规的将抓包软件证书安装为系统证书即可。

  • android系统就比较麻烦,配置证书参考Android 系统各个版本上https的抓包Android安装系统级证书

    默认情况下,来自所有应用的安全连接(使用 TLS 和 HTTPS 之类的协议)均信任预装的系统 CA,而面向 Android 6.0(API 级别 23)及更低版本的应用默认情况下还会信任用户添加的 CA 存储。应用可以使用 base-config(应用范围的自定义)或 domain-config(按域自定义)自定义自己的连接。

查看微信小程序更多资料

微信小程序的更多资料里面包含开发者、账号原始ID、AppID(微信小程序ID)、小程序服务端网址等对渗透测试十分有用的信息,可以根据这些信息扩展攻击面,如图所示:

查看更多资料的方式如下图:

抓包渗透测试小程序和公众号

  • android和ios按照常规方式设置代理,burp即可抓取到微信小程序和公众号的https流量

  • windows微信客户端对小程序和公众号的支持现在十分完善了。渗透微信小程序和公众号可以直接使用windows微信客户端。

抓包windows微信https流量

抓包windows微信https流量不要用微信自带的代理设置,如果使用windows微信自带的流量,微信默认认为代理不安全,会将http流量全流量加密,发往腾讯云服务器,再由腾讯云服务器解密发往小程序服务端。

我们可以使用SocksCap64或者Proxifier对任意不支持代理的软件进行抓包。使用这种方式,绕过windows微信的代理检测,抓取明文的http流量。

下面将以SocksCap64为例讲解如何配置

  1. 设置好SocksCap64的代理

  2. 将微信快捷方式拖进SocksCap64

  3. 双击SocksCap64中的微信图标启动微信,即可抓取到明文的http流量,常规web渗透即可

审计微信小程序源码

通过http流量抓包获取到的url不一定全面,一些需要校验身份权限的url等就不能抓取到,这需要我们解包微信小程序源码,进行代码审计,调试。

windows微信小程序源码一般位于用户家目录下的\Documents\WeChat Files\Applet。该目录下一般有很多个小程序,我们可以根据查看的微信小程序更多资料获取的AppID定位小程序文件
,当然也可以通过everything等文件搜索软件搜索AppID定位我们想要的小程序源文件。

然后使用https://github.com/qwerty472123/wxappUnpacker对小程序源码进行解包,由于该项目因为某些原因删除,可以使用https://github.com/search?q=wxappUnpacker进行替代,个人发现比较好用的一个fork是https://github.com/xuedingmiaojun/wxappUnpacker

通过windows微信获取到的小程序不能解包,可能是windows微信的小程序打包方式有变化。通过android系统获取到的小程序源码依旧可以解包。

android系统下微信小程序源码位于/data/data/com.tencent.mm/MicroMsg/微信号id文件夹/appbrand/pkg/目录下,该目录下应该有很多.wxapkg文件,目前没有很好的定位对应小程序文件的方式,不过可以根据小程序文件的创建时间来定位。

根据对应wxappUnpacker的使用说明,解包小程序源码,进行js的代码审计或者调试小程序,进行渗透测试,详情参考微信小程序官方文档

微信小程序解包和调试可以参考这篇文章谈下微信小程序的抓取和解包技巧