实战SRC挖掘|微信小程序渗透漏洞复盘
字数 1399 2025-08-29 22:41:24
微信小程序渗透漏洞实战教学文档
0x01 前言
本教学文档基于真实微信小程序渗透案例,详细讲解从信息收集到漏洞利用的全过程,包含多个高危漏洞的发现与利用方法。案例中涉及敏感信息泄露、文件上传漏洞、越权漏洞等多种安全风险。
0x02 渗透测试流程
一、微信一键登录安全风险
漏洞原理:
- 微信小程序一键登录功能可能泄露SessionKey、iv及加密字段三要素
- 攻击者可利用Wx_SessionKey_crypt工具解密获取用户手机号
- 通过逆向修改手机号并重新加密,可实现账户劫持
利用步骤:
- 使用BurpSuite拦截微信一键登录数据包
- 分析数据包中是否包含SessionKey、iv和加密字段
- 使用解密工具解密获取真实手机号
- 修改手机号后重新加密并替换原数据包
二、数据包分析与敏感信息泄露
Jeecg框架识别特征:
- URL路径包含/jeecg、/sys、/system等关键字
- 特定返回头或错误信息
敏感信息泄露漏洞:
- 通过用户ID参数(queryById)可查询身份证、姓名、手机号等敏感信息
- 发现list接口可获取大量用户ID
- 尝试遍历ID获取敏感信息时遇到X-Access-Token校验
JWT伪造尝试:
- 尝试爆破JWT密钥但未成功
- 推荐工具:无影JWT爆破工具
- 参考文章:《一次完整的Jwt伪造漏洞实战案例》
绕过限制方法:
- 分析原始数据包路径结构
- 删除queryById参数
- 添加list参数实现未授权访问
- 构造list?pageNo=1&pageSize=7802获取全部用户数据
三、身份证照片泄露
利用方法:
- 发现idPhotoF和idPhotoZ参数(身份证正反面)
- 直接拼接域名访问失败(Spring-Boot报错)
- 通过文件下载功能点获取真实存储路径
- 拼接/download路径成功访问照片
自动化脚本:
# Python脚本示例:批量获取身份证照片
import requests
base_url = "https://target.com/download/"
photo_urls = [...] # 从数据包中提取的7806个照片路径
for path in photo_urls:
full_url = base_url + path
response = requests.get(full_url)
# 保存照片逻辑...
四、文件上传漏洞
测试步骤:
- 测试实名认证功能中的文件上传点
- 先尝试XSS payload测试过滤机制
- 确认无过滤后尝试上传Webshell
绕过技巧:
- 识别网站为PHP环境
- 尝试.php扩展名被过滤
- 使用.phtml扩展名绕过并成功解析
- 上传phpinfo()页面验证漏洞
五、越权漏洞
水平越权:
- 使用收集的用户数据替换登录数据包
- 成功登录其他用户账户
- 访问受限功能
垂直越权:
- 在用户数据中查找admin权限账户
- 替换数据包为管理员凭证
- 成功获取管理员权限
0x03 防御建议
-
微信登录安全:
- 避免在前端暴露SessionKey等敏感信息
- 实现完善的会话管理机制
-
敏感信息保护:
- 严格校验访问权限
- 实现最小权限原则
- 对敏感接口添加强认证
-
文件上传安全:
- 实施文件类型白名单
- 重命名上传文件
- 限制可执行文件上传
-
越权防护:
- 实施完善的权限校验
- 使用不可预测的会话令牌
- 关键操作添加二次验证
-
其他建议:
- 定期安全审计
- 实施WAF防护
- 敏感数据加密存储
0x04 总结
本案例展示了微信小程序常见的安全风险链:
- 从信息泄露漏洞开始
- 利用泄露信息进行越权攻击
- 通过功能点测试发现文件上传漏洞
- 最终获取系统控制权限
渗透测试关键点:
- 仔细分析每个数据包的结构和参数
- 尝试多种参数组合绕过限制
- 保持对框架特征的敏感性
- 自动化工具可提高效率
注意:所有渗透测试必须获得授权,未经授权的测试属于违法行为。本教学仅用于网络安全技术研究。