小程序渗透记录 通过细节挖掘漏洞的艺术
字数 1696 2025-08-29 08:29:58
小程序渗透测试:通过细节挖掘漏洞的艺术
前言
本文基于奇安信攻防社区的小程序渗透记录,总结了一套系统化的小程序渗透测试方法论,重点在于通过细节挖掘漏洞的技巧和思路。
一、小程序渗透测试基础
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管理器等工具
- PC端:使用
二、渗透测试关键点
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安全和移动安全的测试方法,同时关注小程序特有的安全风险。通过细致的分析和耐心的测试,往往能够发现隐藏的漏洞。