目录

  1. 1. 前言
  2. 2. 前置知识
  3. 3. 环境
  4. 4. 小程序抓包
  5. 5. 反编译小程序
  6. 6. 调试模式

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

微信小程序渗透

2025/7/23 渗透
  |     |   总文章阅读量:

前言

参考:

https://cloud.tencent.com/developer/article/2327496

https://www.freebuf.com/articles/network/393276.html

https://sanshiok.com/archive/14.html#0x01%20%E5%89%8D%E7%BD%AE%E7%9F%A5%E8%AF%86-1

https://forum.butian.net/share/1227

https://blog.zgsec.cn/archives/278.html

https://www.cnblogs.com/mr-ryan/p/17680899.html

https://yaklang.com/Yaklab/WeChatAppEx/


前置知识

框架系统:

  • 逻辑层(App Service):基于 javascript,由 app.js、app.json、js 文件、json 配置文件等组成
  • 视图层(View):小程序端视图层描述语言 wxml 和 wxss

在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑

img

测试过程中主要的分析对象就是逻辑层的 js 和 json


环境

本人用的是 MacOS

微信版本 3.8.10

抓包:Proxifier + Yakit

反编译:wxappUnpacker


小程序抓包

使用 Proxifier 进行代理,Proxifier 可以在系统级别通过代理服务器强制 Web 请求,从而使来自不支持代理的应用程序的请求通过代理访问其预期网站

配置代理服务器为 yakit 的 mitm 代理地址

image-20250724163200473

配置规则,指定微信小程序走此代理,Mac 下小程序的路径在 /Applications/WeChat.app/Contents/MacOS/WeChatAppEx.app/Contents/Frameworks/WeChatAppEx Framework.framework/Helpers/WeChatAppEx Helper.app

或者直接复制 "WeChatAppEx Helper.app"; "WeChatAppEx Helper"; com.tencent.xinWeChat.WeChatAppEx.helper 到 Applications 中

image-20250724163344692

然后启动 yakit 劫持即可正常抓包了

注意 proxifier 容易与 clash 的代理起冲突,我这里关闭了 Advanced 中的 Infinite connection loop detection


反编译小程序

Mac 下小程序的源程序存储在 ~/Library/Containers/com.tencent.xinWeChat/Data/.wxapplet/packages/wx{appid}/{...}/__APP__.wxapkg

可删去 packages 下所有 wx{id} 的文件夹再启动小程序来定位我们的目标小程序

在手机上打开,查看小程序详情,可以看到这个小程序的 AppID,即这里的 wx 开头的 id

Android 下存储在 /data/data/com.tencent.mm/MicroMsg/{md5字符串命名的文件夹}/appbrand/pkg/{...}.wxapkg

(微信 8.0.61 版本位置疑似变成了 /data/data/com.tencent.mm/MicroMsg/appbrand/pkg/{...}.wxapkg

Windows 在 WeChat Files/Applet/wx{appid}/{...}/__APP__.wxapkg

cp 一份 .wxapkg 出来后使用 wxappUnpacker 进行反编译

image-20250724170239226

一般看 app.js 文件和 app.json 文件,js文件包含小程序调用的JS文件

json文件包含小程序的路径,一般可以用来测试未授权访问


调试模式

即在小程序中f12调开发者工具,这个方法需要 hook 微信,也就是说有封号风险,建议小号测试,我暂时还没有小号能测(