小程序安全 | 对某次渗透项目加密密文进行解密
字数 816 2025-08-06 18:08:01

小程序AES加密参数分析与解密实战

1. 背景概述

在渗透测试项目中,小程序往往比主站资产站点更少受到关注,维护程度可能不及核心站点,因此容易存在较多安全问题。当发现小程序参数被加密时,需要通过反编译获取前端代码,分析加密逻辑。

2. 反编译小程序

2.1 获取前端代码

  • 使用反编译工具获取小程序前端代码
  • 主要关注app.js文件,它包含小程序核心功能代码
  • 其他js文件多为第三方库

2.2 定位加密函数

在反编译后的代码中搜索常见加密关键字:

  • encrypt
  • decrypt
  • crypto
  • AES

3. 加密算法分析

3.1 加密函数定位

A6F17FD27F6C38AFC09717D525323F76.js文件中找到加密函数:

r.encrypt = function(t, e, i) {
    return function(t, e, i) {
        var n = r.enc.Utf8.parse(t);
        return r.AES.encrypt(n, e, {
            iv: i,
            mode: r.mode.CBC,
            padding: r.pad.Pkcs7
        }).ciphertext.toString().toUpperCase();
    }(t, e, i);
}

3.2 解密函数定位

同文件中找到解密函数:

r.decrypt = function(t, e, i) {
    return function(t, e, i) {
        var n = r.enc.Hex.parse(t),
            s = r.enc.Base64.stringify(n);
        return r.AES.decrypt(s, e, {
            iv: i,
            mode: r.mode.CBC,
            padding: r.pad.Pkcs7
        }).toString(r.enc.Utf8).toString();
    }(t, e, i);
}

3.3 加密参数分析

  • 加密算法:AES
  • 加密模式:CBC
  • 填充方式:PKCS7
  • 参数说明:
    • t:明文数据
    • e:密钥
    • i:初始化向量(IV)

4. 密钥与IV获取

4.1 查找密钥

  • 1F03AD467F6C38AF7965C541D7123F76.js文件中查找key关键字
  • 定位到实际的密钥和IV值

4.2 关键点

  • 密钥和IV通常硬编码在JS文件中
  • 可能通过字符串拼接或简单变换处理
  • 需要完整跟踪变量赋值过程

5. 解密实战

5.1 解密流程

  1. 获取加密参数(从抓包数据)
  2. 使用找到的密钥和IV
  3. 调用解密函数或自行实现解密逻辑

5.2 解密实现

可以使用以下方法之一:

  1. 直接调用小程序解密函数
  2. 使用Python实现相同逻辑:
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import base64

def decrypt(ciphertext, key, iv):
    cipher = AES.new(key, AES.MODE_CBC, iv)
    decrypted = cipher.decrypt(base64.b64decode(ciphertext))
    return unpad(decrypted, AES.block_size).decode('utf-8')

6. 后续渗透测试

成功解密参数后,可以:

  1. 分析参数结构和含义
  2. 尝试参数篡改和注入
  3. 进行常规的Web渗透测试

7. 防御建议

对于小程序开发者:

  • 避免在前端硬编码密钥
  • 使用更安全的通信方案
  • 定期更新和检查安全措施

对于安全测试人员:

  • 关注小程序与主站的差异
  • 重视反编译和静态分析
  • 完整跟踪加密解密流程
小程序AES加密参数分析与解密实战 1. 背景概述 在渗透测试项目中,小程序往往比主站资产站点更少受到关注,维护程度可能不及核心站点,因此容易存在较多安全问题。当发现小程序参数被加密时,需要通过反编译获取前端代码,分析加密逻辑。 2. 反编译小程序 2.1 获取前端代码 使用反编译工具获取小程序前端代码 主要关注 app.js 文件,它包含小程序核心功能代码 其他js文件多为第三方库 2.2 定位加密函数 在反编译后的代码中搜索常见加密关键字: encrypt decrypt crypto AES 3. 加密算法分析 3.1 加密函数定位 在 A6F17FD27F6C38AFC09717D525323F76.js 文件中找到加密函数: 3.2 解密函数定位 同文件中找到解密函数: 3.3 加密参数分析 加密算法:AES 加密模式:CBC 填充方式:PKCS7 参数说明: t :明文数据 e :密钥 i :初始化向量(IV) 4. 密钥与IV获取 4.1 查找密钥 在 1F03AD467F6C38AF7965C541D7123F76.js 文件中查找 key 关键字 定位到实际的密钥和IV值 4.2 关键点 密钥和IV通常硬编码在JS文件中 可能通过字符串拼接或简单变换处理 需要完整跟踪变量赋值过程 5. 解密实战 5.1 解密流程 获取加密参数(从抓包数据) 使用找到的密钥和IV 调用解密函数或自行实现解密逻辑 5.2 解密实现 可以使用以下方法之一: 直接调用小程序解密函数 使用Python实现相同逻辑: 6. 后续渗透测试 成功解密参数后,可以: 分析参数结构和含义 尝试参数篡改和注入 进行常规的Web渗透测试 7. 防御建议 对于小程序开发者: 避免在前端硬编码密钥 使用更安全的通信方案 定期更新和检查安全措施 对于安全测试人员: 关注小程序与主站的差异 重视反编译和静态分析 完整跟踪加密解密流程