深度解析微信小程序漏洞挖掘
字数 1652 2025-08-29 08:30:19

微信小程序漏洞挖掘深度解析

概述

微信小程序渗透在护网、SRC挖掘、攻防演练中都可以成为突破口。与普通网页渗透相比,微信小程序渗透有以下不同点:

  1. 抓包方式不同,不能直接进行抓包
  2. 不能直接进行调试,遇到加密传输时较为棘手
  3. 有自己特有的漏洞类型
  4. 某些小程序会进行特殊限制,增加测试难度

本文将分为四个章节详细解析:抓包篇、逆向篇、漏洞篇、技巧篇。

抓包篇

方法一:ProxyPin + Burpsuite

ProxyPin优势

  • 开源免费,支持全平台
  • 支持JavaScript脚本处理请求/响应
  • 支持请求重写、重定向和报文替换
  • 支持根据URL屏蔽请求

操作步骤

  1. 安装证书到"受信任的根证书颁发机构"
  2. 成功抓包后将流量转发到Burpsuite
  3. 将不想被抓包的域名添加到代理域名黑名单,减少Burpsuite处理的数据量

方法二:Proxifier + Burpsuite

操作步骤

  1. 添加代理服务器(端口与Burpsuite保持一致)
  2. 创建规则
  3. 成功抓包

注意:如配置后无法抓包,尝试退出微信重新登录

逆向篇

一、微信小程序开启DevTools

使用WeChatOpenDevTools工具一键开启DevTools(建议使用小号避免封号)

操作步骤

  1. 安装依赖库
  2. 运行命令开启微信小程序中的F12(DevTools)
  3. 打开目标小程序或重新进入小程序自动hook开启DevTools

踩坑经验

  1. Python版本问题:建议使用Python3.10,低版本可能缺少frida依赖库
  2. 微信版本问题:新版微信可能无法开启,需完全卸载后安装特定旧版本
  3. 开启浏览器DevTools时需先退出所有微信实例

二、微信小程序反编译

操作步骤

  1. 使用wxapkg.exe scan命令扫描所有小程序(需联网)
  2. 获取小程序名称、路径、wxid等信息
  3. 使用键盘上下键选中目标小程序,按Enter执行解密+解包
  4. 如未发现目标小程序,可先添加到自己的小程序再重新查看

反编译结果

  • 成功后会生成反编译后的文件目录
  • 包含小程序源码等可分析内容

漏洞篇

一、敏感信息泄露

检测方法

  1. 筛选反编译后的js文件(可使用Everything工具)
  2. 使用查询语句筛选出所有js文件
  3. 将js文件集中到一个目录
  4. 使用脚本自动查找敏感信息(accesskey、身份证、手机号、密码等)

二、任意用户登录

漏洞原理
小程序采用开发者后台校验与解密开放数据时,若泄露session key和iv,可导致任意用户登录

检测步骤

  1. 使用Burpsuite的HAE插件规则匹配数据包中的sessionKey
  2. 获取sessionKey和iv后,使用AppletPentester插件对数据包进行加解密
  3. 可修改用户手机号等信息实现任意用户登录

技巧篇

一、解决功能点无法加载问题

现象

  • 手机端正常但电脑端一直加载
  • 某些功能点点击无反应

解决方法

  1. 在手机上点击目标功能点
  2. 复制链接(形式如#小程序://中国电信App/8zsyCcxJscGz0QA
  3. 在电脑端通过链接访问

二、绕过"仅限手机打开"限制

解决方法

  1. 先在手机端打开目标小程序
  2. 此时电脑端会显示最近打开的小程序
  3. 从电脑端入口进入即可绕过限制

三、便捷真机测试方法

推荐工具:QtScrcpy手机投屏

操作步骤

  1. USB连接手机和电脑
  2. 使用一键wifi连接功能
  3. 连接成功后拔掉USB
  4. 直接在电脑上进行真机测试

优势

  • 避免双屏切换不便
  • 适用于有真机检测的APP

相关工具

所有工具打包下载:
https://pan.quark.cn/s/d4d10bb0d3ee

特定微信版本下载:
https://github.com/tom-snow/wechat-windows-versions/releases/download/v3.9.10.27/WeChatSetup-3.9.10.27.exe

WeChatOpenDevTools工具:
[工具链接]

微信小程序漏洞挖掘深度解析 概述 微信小程序渗透在护网、SRC挖掘、攻防演练中都可以成为突破口。与普通网页渗透相比,微信小程序渗透有以下不同点: 抓包方式不同,不能直接进行抓包 不能直接进行调试,遇到加密传输时较为棘手 有自己特有的漏洞类型 某些小程序会进行特殊限制,增加测试难度 本文将分为四个章节详细解析:抓包篇、逆向篇、漏洞篇、技巧篇。 抓包篇 方法一:ProxyPin + Burpsuite ProxyPin优势 : 开源免费,支持全平台 支持JavaScript脚本处理请求/响应 支持请求重写、重定向和报文替换 支持根据URL屏蔽请求 操作步骤 : 安装证书到"受信任的根证书颁发机构" 成功抓包后将流量转发到Burpsuite 将不想被抓包的域名添加到代理域名黑名单,减少Burpsuite处理的数据量 方法二:Proxifier + Burpsuite 操作步骤 : 添加代理服务器(端口与Burpsuite保持一致) 创建规则 成功抓包 注意 :如配置后无法抓包,尝试退出微信重新登录 逆向篇 一、微信小程序开启DevTools 使用WeChatOpenDevTools工具一键开启DevTools(建议使用小号避免封号) 操作步骤 : 安装依赖库 运行命令开启微信小程序中的F12(DevTools) 打开目标小程序或重新进入小程序自动hook开启DevTools 踩坑经验 : Python版本问题:建议使用Python3.10,低版本可能缺少frida依赖库 微信版本问题:新版微信可能无法开启,需完全卸载后安装特定旧版本 开启浏览器DevTools时需先退出所有微信实例 二、微信小程序反编译 操作步骤 : 使用 wxapkg.exe scan 命令扫描所有小程序(需联网) 获取小程序名称、路径、wxid等信息 使用键盘上下键选中目标小程序,按Enter执行解密+解包 如未发现目标小程序,可先添加到自己的小程序再重新查看 反编译结果 : 成功后会生成反编译后的文件目录 包含小程序源码等可分析内容 漏洞篇 一、敏感信息泄露 检测方法 : 筛选反编译后的js文件(可使用Everything工具) 使用查询语句筛选出所有js文件 将js文件集中到一个目录 使用脚本自动查找敏感信息(accesskey、身份证、手机号、密码等) 二、任意用户登录 漏洞原理 : 小程序采用开发者后台校验与解密开放数据时,若泄露session key和iv,可导致任意用户登录 检测步骤 : 使用Burpsuite的HAE插件规则匹配数据包中的sessionKey 获取sessionKey和iv后,使用AppletPentester插件对数据包进行加解密 可修改用户手机号等信息实现任意用户登录 技巧篇 一、解决功能点无法加载问题 现象 : 手机端正常但电脑端一直加载 某些功能点点击无反应 解决方法 : 在手机上点击目标功能点 复制链接(形式如 #小程序://中国电信App/8zsyCcxJscGz0QA ) 在电脑端通过链接访问 二、绕过"仅限手机打开"限制 解决方法 : 先在手机端打开目标小程序 此时电脑端会显示最近打开的小程序 从电脑端入口进入即可绕过限制 三、便捷真机测试方法 推荐工具 :QtScrcpy手机投屏 操作步骤 : USB连接手机和电脑 使用一键wifi连接功能 连接成功后拔掉USB 直接在电脑上进行真机测试 优势 : 避免双屏切换不便 适用于有真机检测的APP 相关工具 所有工具打包下载: https://pan.quark.cn/s/d4d10bb0d3ee 特定微信版本下载: https://github.com/tom-snow/wechat-windows-versions/releases/download/v3.9.10.27/WeChatSetup-3.9.10.27.exe WeChatOpenDevTools工具: [ 工具链接 ]