实战-搞定小程序加解密通过遍历导致信息泄露
字数 683 2025-08-22 22:47:30

小程序加解密漏洞分析与利用实战

漏洞概述

本文详细分析了一种通过遍历ID导致的小程序信息泄露漏洞,涉及加密算法的逆向与解密过程。攻击者通过分析小程序加密机制,绕过签名校验,实现敏感数据的批量获取。

漏洞发现过程

  1. 初始探测:常规渗透测试中发现接口请求和返回数据都做了加密处理
  2. 防护机制
    • 请求体签名一次性校验
    • 无法直接改包和重放请求

加密机制分析

通过对小程序反编译,发现加密逻辑如下:

密钥生成算法

  1. 定义两个常量值
  2. 实现一个简单混淆算法处理这两个常量
  3. 将混淆结果转为hex格式
  4. 取hex的前16位作为AES密钥

加密细节

  • 加密模式:ECB
  • 填充方式:PKCS7
  • 密文处理:
    • 加密数据编码为base64
    • 替换特殊字符:
      • +-
      • /_

签名计算

签名算法为:md5(json数据 + 时间戳)

漏洞利用

漏洞点

接口http://xxx/xxid_info中的id参数存在以下问题:

  • 非随机生成
  • 可通过遍历获取他人信息

解密步骤

  1. 还原真正的base64:
    • -替换回+
    • _替换回/
  2. 使用逆向得到的AES密钥解密数据

批量获取脚本

编写自动化脚本实现:

  1. 遍历有效ID范围
  2. 构造合法请求
  3. 解密返回数据

防御建议

  1. 使用随机生成的ID而非可遍历的ID
  2. 加强签名机制,防止请求伪造
  3. 考虑更复杂的密钥生成算法
  4. 使用更安全的加密模式(如CBC而非ECB)
  5. 增加请求频率限制

技术总结

该漏洞展示了即使有加密保护,如果实现不当(如可遍历ID、简单密钥生成算法),仍然可能导致信息泄露。安全开发需要全面考虑各种攻击场景,不能仅依赖单一防护措施。

小程序加解密漏洞分析与利用实战 漏洞概述 本文详细分析了一种通过遍历ID导致的小程序信息泄露漏洞,涉及加密算法的逆向与解密过程。攻击者通过分析小程序加密机制,绕过签名校验,实现敏感数据的批量获取。 漏洞发现过程 初始探测 :常规渗透测试中发现接口请求和返回数据都做了加密处理 防护机制 : 请求体签名一次性校验 无法直接改包和重放请求 加密机制分析 通过对小程序反编译,发现加密逻辑如下: 密钥生成算法 定义两个常量值 实现一个简单混淆算法处理这两个常量 将混淆结果转为hex格式 取hex的前16位作为AES密钥 加密细节 加密模式:ECB 填充方式:PKCS7 密文处理: 加密数据编码为base64 替换特殊字符: + → - / → _ 签名计算 签名算法为: md5(json数据 + 时间戳) 漏洞利用 漏洞点 接口 http://xxx/xxid_info 中的id参数存在以下问题: 非随机生成 可通过遍历获取他人信息 解密步骤 还原真正的base64: 将 - 替换回 + 将 _ 替换回 / 使用逆向得到的AES密钥解密数据 批量获取脚本 编写自动化脚本实现: 遍历有效ID范围 构造合法请求 解密返回数据 防御建议 使用随机生成的ID而非可遍历的ID 加强签名机制,防止请求伪造 考虑更复杂的密钥生成算法 使用更安全的加密模式(如CBC而非ECB) 增加请求频率限制 技术总结 该漏洞展示了即使有加密保护,如果实现不当(如可遍历ID、简单密钥生成算法),仍然可能导致信息泄露。安全开发需要全面考虑各种攻击场景,不能仅依赖单一防护措施。