小程序渗透记录 通过细节挖掘漏洞的艺术
字数 1696 2025-08-29 08:29:58

小程序渗透测试:通过细节挖掘漏洞的艺术

前言

本文基于奇安信攻防社区的小程序渗透记录,总结了一套系统化的小程序渗透测试方法论,重点在于通过细节挖掘漏洞的技巧和思路。

一、小程序渗透测试基础

1.1 小程序架构分析

小程序通常采用以下架构:

  • 前端:基于微信/支付宝等平台的渲染引擎
  • 后端:与传统Web应用类似,提供API接口
  • 本地存储:包括缓存、数据库等

1.2 渗透测试前期准备

  1. 小程序包获取

    • 使用工具如wxapkg解包工具获取小程序源码
    • 安卓设备:/data/data/com.tencent.mm/MicroMsg/{userhash}/appbrand/pkg/
    • iOS设备:/var/mobile/Containers/Data/Application/{UUID}/Documents/{userhash}/WeApp/LocalCache/release/
  2. 反编译工具

    • PC端:使用wxappUnpacker等工具
    • 移动端:使用RE管理器等工具

二、渗透测试关键点

2.1 信息收集

  1. 接口枚举

    • 分析解包后的app-service.js文件
    • 查找所有API调用点
    • 关注wx.requestwx.uploadFile等网络请求方法
  2. 敏感信息泄露

    • 检查源码中的硬编码密钥、token等
    • 查找注释中的测试账号、密码
    • 分析配置文件中的敏感配置

2.2 接口安全测试

  1. 未授权访问

    • 直接调用API接口,不携带token/cookie
    • 修改请求头中的X-Requested-With字段测试
  2. 参数篡改

    • 修改用户ID、订单ID等参数测试越权
    • 测试批量操作接口的ID遍历漏洞
  3. 注入漏洞

    • SQL注入:测试所有带参数的接口
    • XSS:测试所有输出点
    • 命令注入:检查调用的系统命令

2.3 业务逻辑漏洞

  1. 支付逻辑漏洞

    • 测试价格篡改
    • 测试负数金额
    • 测试重复支付
  2. 优惠券/积分漏洞

    • 测试无限领取
    • 测试金额篡改
    • 测试过期时间绕过
  3. 短信轰炸

    • 测试短信接口频率限制
    • 测试同一手机号多次发送

2.4 本地存储安全

  1. 敏感数据存储

    • 检查wx.setStorage存储的内容
    • 测试wx.getStorage获取敏感信息
  2. 加密存储分析

    • 分析本地加密算法
    • 测试密钥硬编码问题

三、高级技巧

3.1 协议逆向分析

  1. 抓包分析

    • 使用Charles/Fiddler抓包
    • 注意HTTPS证书校验绕过
  2. 协议逆向

    • 分析加密算法
    • 重放加密请求

3.2 客户端安全

  1. 代码混淆分析

    • 使用AST工具分析混淆代码
    • 定位关键函数
  2. Native组件分析

    • 分析so文件安全性
    • 测试JNI接口安全性

3.3 小程序特有漏洞

  1. Webview漏洞

    • 测试web-view组件的URL可控性
    • 检查JSSDK调用安全性
  2. 插件漏洞

    • 分析第三方插件安全性
    • 测试插件间通信安全

四、实战案例

4.1 案例1:通过解包获取API接口

  1. 解包小程序获取app-service.js
  2. 搜索wx.request找到所有API接口
  3. 发现未授权访问的管理接口

4.2 案例2:支付逻辑漏洞

  1. 拦截支付请求
  2. 修改价格为0.01元
  3. 重放请求完成低价购买

4.3 案例3:本地存储敏感信息

  1. 使用wx.getStorage获取本地数据
  2. 发现存储的token未加密
  3. 使用该token伪造用户身份

五、防御建议

  1. 接口安全

    • 实施严格的权限控制
    • 使用签名机制防止篡改
  2. 数据安全

    • 避免本地存储敏感信息
    • 使用强加密算法
  3. 代码安全

    • 实施代码混淆
    • 定期安全审计
  4. 业务安全

    • 关键操作二次验证
    • 实施完善的日志监控

六、工具推荐

  1. 解包工具

    • wxappUnpacker
    • WeChatAppUnpacker
  2. 抓包工具

    • Charles
    • Fiddler
    • Burp Suite
  3. 逆向工具

    • IDA Pro
    • JADX
    • Frida

结语

小程序渗透测试需要结合传统Web安全和移动安全的测试方法,同时关注小程序特有的安全风险。通过细致的分析和耐心的测试,往往能够发现隐藏的漏洞。

小程序渗透测试:通过细节挖掘漏洞的艺术 前言 本文基于奇安信攻防社区的小程序渗透记录,总结了一套系统化的小程序渗透测试方法论,重点在于通过细节挖掘漏洞的技巧和思路。 一、小程序渗透测试基础 1.1 小程序架构分析 小程序通常采用以下架构: 前端:基于微信/支付宝等平台的渲染引擎 后端:与传统Web应用类似,提供API接口 本地存储:包括缓存、数据库等 1.2 渗透测试前期准备 小程序包获取 : 使用工具如 wxapkg 解包工具获取小程序源码 安卓设备: /data/data/com.tencent.mm/MicroMsg/{userhash}/appbrand/pkg/ iOS设备: /var/mobile/Containers/Data/Application/{UUID}/Documents/{userhash}/WeApp/LocalCache/release/ 反编译工具 : PC端:使用 wxappUnpacker 等工具 移动端:使用 RE管理器 等工具 二、渗透测试关键点 2.1 信息收集 接口枚举 : 分析解包后的 app-service.js 文件 查找所有API调用点 关注 wx.request 、 wx.uploadFile 等网络请求方法 敏感信息泄露 : 检查源码中的硬编码密钥、token等 查找注释中的测试账号、密码 分析配置文件中的敏感配置 2.2 接口安全测试 未授权访问 : 直接调用API接口,不携带token/cookie 修改请求头中的 X-Requested-With 字段测试 参数篡改 : 修改用户ID、订单ID等参数测试越权 测试批量操作接口的ID遍历漏洞 注入漏洞 : SQL注入:测试所有带参数的接口 XSS:测试所有输出点 命令注入:检查调用的系统命令 2.3 业务逻辑漏洞 支付逻辑漏洞 : 测试价格篡改 测试负数金额 测试重复支付 优惠券/积分漏洞 : 测试无限领取 测试金额篡改 测试过期时间绕过 短信轰炸 : 测试短信接口频率限制 测试同一手机号多次发送 2.4 本地存储安全 敏感数据存储 : 检查 wx.setStorage 存储的内容 测试 wx.getStorage 获取敏感信息 加密存储分析 : 分析本地加密算法 测试密钥硬编码问题 三、高级技巧 3.1 协议逆向分析 抓包分析 : 使用Charles/Fiddler抓包 注意HTTPS证书校验绕过 协议逆向 : 分析加密算法 重放加密请求 3.2 客户端安全 代码混淆分析 : 使用AST工具分析混淆代码 定位关键函数 Native组件分析 : 分析so文件安全性 测试JNI接口安全性 3.3 小程序特有漏洞 Webview漏洞 : 测试 web-view 组件的URL可控性 检查 JSSDK 调用安全性 插件漏洞 : 分析第三方插件安全性 测试插件间通信安全 四、实战案例 4.1 案例1:通过解包获取API接口 解包小程序获取 app-service.js 搜索 wx.request 找到所有API接口 发现未授权访问的管理接口 4.2 案例2:支付逻辑漏洞 拦截支付请求 修改价格为0.01元 重放请求完成低价购买 4.3 案例3:本地存储敏感信息 使用 wx.getStorage 获取本地数据 发现存储的token未加密 使用该token伪造用户身份 五、防御建议 接口安全 : 实施严格的权限控制 使用签名机制防止篡改 数据安全 : 避免本地存储敏感信息 使用强加密算法 代码安全 : 实施代码混淆 定期安全审计 业务安全 : 关键操作二次验证 实施完善的日志监控 六、工具推荐 解包工具 : wxappUnpacker WeChatAppUnpacker 抓包工具 : Charles Fiddler Burp Suite 逆向工具 : IDA Pro JADX Frida 结语 小程序渗透测试需要结合传统Web安全和移动安全的测试方法,同时关注小程序特有的安全风险。通过细致的分析和耐心的测试,往往能够发现隐藏的漏洞。