H5页面漏洞挖掘之路(加密篇)
字数 1372 2025-08-15 21:33:10
H5页面加密漏洞挖掘实战指南
前言
H5移动应用作为现代生活和工作的重要组成部分,面临着多种安全风险,包括恶意攻击、篡改行为和钓鱼攻击等。本指南将详细介绍如何挖掘H5页面中的加密相关漏洞,特别是针对AES加密的实现缺陷。
AES加密模式详解
ECB模式(电子密码本模式)
特点:
- 每个明文分组独立加密成密文分组
- 相同明文分组总是加密成相同密文分组
- 直接使用加密算法对每个64位明文分组进行加密
优点:
- 实现简单
- 支持并行计算
缺点:
- 安全性较低(相同明文产生相同密文)
- 无法隐藏数据模式
CBC模式(密码分组链接模式)
特点:
- 引入初始向量(IV)
- 第一个明文块与IV异或,后续每个明文块与前一个密文块异或
- 防止相同明文块加密成相同密文块
优点:
- 隐藏明文数据模式
- 防止数据篡改(重放、嵌入和删除等)
- 安全性高于ECB
缺点:
- 不支持并行计算
- 性能低于ECB
- 存在错误传播问题
漏洞挖掘实战案例
1. 发现加密通信
- 访问H5页面登录接口
- 输入测试凭据(任意手机号和密码)
- 使用Burp Suite抓包
- 确认请求和响应数据全程加密
2. 破解加密算法
步骤:
- 查看登录页面源代码
- 定位登录按钮调用的JavaScript方法(如
onLoginBtnClick) - 跟踪请求数据(
requestData)处理流程 - 全局搜索
postData函数(通常在公共JS文件中) - 查找加密函数(通常命名为
encrypt/decrypt)
关键点:
- 格式化混淆的JS代码以便分析
- 识别加密算法(本例为AES/ECB/PKCS7Padding)
- 查找硬编码的加密密钥
3. 处理防重放机制
常见防御:
- 请求头中包含唯一标识(如
replayId) - 服务器验证请求唯一性
破解方法:
- 对比不同请求,识别变化参数
- 全局搜索关键字段(如
replayId) - 定位生成函数(如
guid函数) - 使用Python的
execjs执行JS代码生成合法值
4. 自动化攻击实现
暴力破解登录:
- 确认无验证码保护
- 分析服务器响应模式(通过错误信息枚举用户)
- 确认密码复杂度(如6位纯数字)
- 准备高质量的手机号字典
- 编写Python脚本:
- 实现加密/解密
- 生成合法
replayId - 自动化请求和响应处理
越权漏洞挖掘:
- 修改请求参数(如
mobilephone) - 测试能否访问其他用户数据
- 验证返回的敏感信息(如银行卡额度)
防御建议
-
避免硬编码密钥:
- 使用动态密钥或密钥派生机制
- 考虑使用密钥管理服务
-
增强加密实现:
- 优先使用CBC模式而非ECB
- 确保IV的随机性和唯一性
- 实现完整的消息认证机制
-
防重放加强:
- 使用时间戳+随机数
- 实现短期有效的请求令牌
- 服务端记录已使用令牌
-
其他防护措施:
- 实施验证码机制
- 监控异常登录尝试
- 敏感操作二次认证
进阶工具开发
建议开发Burp Suite插件以便更高效地进行加密相关的漏洞挖掘:
- 自动识别加解密函数
- 集成JS执行环境
- 提供加解密交互界面
- 支持参数篡改和重放
总结
通过分析前端加密实现、破解防重放机制、自动化暴力破解和参数篡改,可以系统性地挖掘H5页面中的加密相关漏洞。关键在于深入分析JavaScript实现细节,理解加密流程,并能够将这些知识转化为自动化测试工具。