H5页面漏洞挖掘之路(加密篇)
字数 1372 2025-08-15 21:33:10

H5页面加密漏洞挖掘实战指南

前言

H5移动应用作为现代生活和工作的重要组成部分,面临着多种安全风险,包括恶意攻击、篡改行为和钓鱼攻击等。本指南将详细介绍如何挖掘H5页面中的加密相关漏洞,特别是针对AES加密的实现缺陷。

AES加密模式详解

ECB模式(电子密码本模式)

特点

  • 每个明文分组独立加密成密文分组
  • 相同明文分组总是加密成相同密文分组
  • 直接使用加密算法对每个64位明文分组进行加密

优点

  • 实现简单
  • 支持并行计算

缺点

  • 安全性较低(相同明文产生相同密文)
  • 无法隐藏数据模式

CBC模式(密码分组链接模式)

特点

  • 引入初始向量(IV)
  • 第一个明文块与IV异或,后续每个明文块与前一个密文块异或
  • 防止相同明文块加密成相同密文块

优点

  • 隐藏明文数据模式
  • 防止数据篡改(重放、嵌入和删除等)
  • 安全性高于ECB

缺点

  • 不支持并行计算
  • 性能低于ECB
  • 存在错误传播问题

漏洞挖掘实战案例

1. 发现加密通信

  1. 访问H5页面登录接口
  2. 输入测试凭据(任意手机号和密码)
  3. 使用Burp Suite抓包
  4. 确认请求和响应数据全程加密

2. 破解加密算法

步骤

  1. 查看登录页面源代码
  2. 定位登录按钮调用的JavaScript方法(如onLoginBtnClick
  3. 跟踪请求数据(requestData)处理流程
  4. 全局搜索postData函数(通常在公共JS文件中)
  5. 查找加密函数(通常命名为encrypt/decrypt

关键点

  • 格式化混淆的JS代码以便分析
  • 识别加密算法(本例为AES/ECB/PKCS7Padding)
  • 查找硬编码的加密密钥

3. 处理防重放机制

常见防御

  • 请求头中包含唯一标识(如replayId
  • 服务器验证请求唯一性

破解方法

  1. 对比不同请求,识别变化参数
  2. 全局搜索关键字段(如replayId
  3. 定位生成函数(如guid函数)
  4. 使用Python的execjs执行JS代码生成合法值

4. 自动化攻击实现

暴力破解登录

  1. 确认无验证码保护
  2. 分析服务器响应模式(通过错误信息枚举用户)
  3. 确认密码复杂度(如6位纯数字)
  4. 准备高质量的手机号字典
  5. 编写Python脚本:
    • 实现加密/解密
    • 生成合法replayId
    • 自动化请求和响应处理

越权漏洞挖掘

  1. 修改请求参数(如mobilephone
  2. 测试能否访问其他用户数据
  3. 验证返回的敏感信息(如银行卡额度)

防御建议

  1. 避免硬编码密钥

    • 使用动态密钥或密钥派生机制
    • 考虑使用密钥管理服务
  2. 增强加密实现

    • 优先使用CBC模式而非ECB
    • 确保IV的随机性和唯一性
    • 实现完整的消息认证机制
  3. 防重放加强

    • 使用时间戳+随机数
    • 实现短期有效的请求令牌
    • 服务端记录已使用令牌
  4. 其他防护措施

    • 实施验证码机制
    • 监控异常登录尝试
    • 敏感操作二次认证

进阶工具开发

建议开发Burp Suite插件以便更高效地进行加密相关的漏洞挖掘:

  1. 自动识别加解密函数
  2. 集成JS执行环境
  3. 提供加解密交互界面
  4. 支持参数篡改和重放

总结

通过分析前端加密实现、破解防重放机制、自动化暴力破解和参数篡改,可以系统性地挖掘H5页面中的加密相关漏洞。关键在于深入分析JavaScript实现细节,理解加密流程,并能够将这些知识转化为自动化测试工具。

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实现细节,理解加密流程,并能够将这些知识转化为自动化测试工具。