前端加密对抗常见场景突破
字数 1374 2025-08-22 12:23:19

前端加密对抗常见场景突破技术详解

前言

前端加密是现代网站常见的安全措施,相对于明文传输,加密数据增加了渗透测试的难度。本文将详细分析三种常见的前端加密场景及其突破方法:AES固定密钥加密、AES服务端获取密钥加密和RSA非对称加密。

一、AES固定密钥加密

1. AES加密基础

AES(Advanced Encryption Standard)是一种对称加密算法,特点如下:

  • 加密和解密使用相同的密钥
  • 常见的加密模式包括CBC、ECB等
  • 需要初始化向量(IV)来增加安全性(在CBC模式下)

2. 实际案例分析

前端加密代码示例

const jsonData = JSON.stringify(formData);
const key = CryptoJS.enc.Utf8.parse("1234567890123456");
const iv = CryptoJS.enc.Utf8.parse("1234567890123456");
const encrypted = CryptoJS.AES.encrypt(jsonData, key, {
  iv: iv,
  mode: CryptoJS.mode.CBC,
  padding: CryptoJS.pad.Pkcs7
}).toString();

请求示例

POST /encrypt/aes.php HTTP/1.1
Host: qianduan:7952
Content-Type: application/x-www-form-urlencoded; charset=utf-8

encryptedData=nArXfVdnoe67UzojAPP2X%2B6qSiznLMBAI3a5Bi%2BzlNxdbZ%2FOS8HQ6QCw6cm3stZk

3. 突破方法

  1. 识别加密方式:通过前端代码分析确定使用AES加密
  2. 获取密钥和IV:从代码中提取固定密钥("1234567890123456")
  3. 使用工具解密
    • 配置AutoDecoder等工具
    • 设置相同的密钥和IV
    • 选择正确的加密模式(CBC)和填充方式(PKCS7)
  4. 爆破测试
    • 解密请求数据验证加密逻辑
    • 构造明文字典进行加密
    • 发送加密后的数据进行爆破

二、AES服务端获取密钥加密

1. 特点分析

  • 密钥和IV从服务端动态获取
  • 但通常密钥在会话期间保持不变
  • 增加了静态分析的难度

2. 实际案例分析

前端代码关键部分

async function fetchAndSendDataAes(url) {
  let aesKey, aesIv;
  try {
    const response = await fetch("encrypt/server_generate_key.php");
    const data = await response.json();
    aesKey = CryptoJS.enc.Base64.parse(data.aes_key);
    aesIv = CryptoJS.enc.Base64.parse(data.aes_iv);
  } catch (error) {
    console.error("获取 AES 密钥失败:", error);
    return;
  }
  // 后续加密逻辑...
}

3. 突破方法

  1. 拦截密钥请求

    • 捕获server_generate_key.php的响应
    • 提取Base64编码的aes_key和aes_iv
  2. 工具配置

    • 修改正则表达式匹配加密数据字段
    • 设置从服务端获取的密钥和IV
  3. 验证解密

    • 使用获取的密钥解密样本请求
    • 确认加密模式(CBC)和填充方式(PKCS7)
  4. 爆破流程

    • 与固定密钥AES相同
    • 注意保持会话以使用相同密钥

三、RSA非对称加密

1. RSA加密基础

  • 使用公钥加密,私钥解密
  • 公钥可以公开,私钥保密
  • 常用于保护传输中的数据

2. 实际案例分析

前端代码示例

const publicKey = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRvA7giwinEkaTYllDYCkzujvi
NH+up0XAKXQot8RixKGpB7nr8AdidEvuo+wVCxZwDK3hlcRGrrqt0Gxqwc11btlM
DSj92Mr3xSaJcshZU8kfj325L8DRh9jpruphHBfh955ihvbednGAvOHOrz3Qy3Cb
ocDbsNeCwNpRxwjIdQIDAQAB
-----END PUBLIC KEY-----`;

const encryptor = new JSEncrypt();
encryptor.setPublicKey(publicKey);
const encryptedData = encryptor.encrypt(dataString);

3. 突破方法

  1. 获取公钥:从前端代码中提取公钥

  2. 理解加密结构

    • 数据通常被转换为JSON格式后加密
    • 例如:{"username":"admin","password":"123456"}
  3. 工具配置

    • 在AutoDecoder中设置RSA公钥
    • 配置加密前的明文格式
  4. 爆破流程

    • 使用公钥加密构造的明文数据
    • 发送加密后的请求进行爆破
    • 注意无法解密响应,只能通过结果判断

四、通用突破流程

  1. 前端代码分析

    • 查找加密相关函数(CryptoJS, JSEncrypt等)
    • 确定加密算法、密钥获取方式
  2. 请求/响应分析

    • 捕获加密前后的数据
    • 分析加密数据格式和传输方式
  3. 工具配置

    • 根据加密类型选择适当工具
    • 精确配置密钥、IV、加密模式等参数
  4. 验证与爆破

    • 先验证加解密流程是否正确
    • 然后进行自动化爆破测试

五、防御建议

  1. 避免使用固定密钥
  2. 为每个会话使用不同的密钥
  3. 结合多种加密方式
  4. 对关键操作增加二次验证
  5. 定期更新加密密钥

六、工具推荐

  1. AutoDecoder:自动化加解密工具
  2. Burp Suite:拦截和修改请求
  3. Chrome DevTools:前端代码分析
  4. CryptoJS/JSEncrypt:理解加密逻辑

通过以上方法,可以有效分析和突破常见的前端加密场景,但请注意这些技术应仅用于合法的安全测试目的。

前端加密对抗常见场景突破技术详解 前言 前端加密是现代网站常见的安全措施,相对于明文传输,加密数据增加了渗透测试的难度。本文将详细分析三种常见的前端加密场景及其突破方法:AES固定密钥加密、AES服务端获取密钥加密和RSA非对称加密。 一、AES固定密钥加密 1. AES加密基础 AES(Advanced Encryption Standard)是一种对称加密算法,特点如下: 加密和解密使用相同的密钥 常见的加密模式包括CBC、ECB等 需要初始化向量(IV)来增加安全性(在CBC模式下) 2. 实际案例分析 前端加密代码示例 : 请求示例 : 3. 突破方法 识别加密方式 :通过前端代码分析确定使用AES加密 获取密钥和IV :从代码中提取固定密钥("1234567890123456") 使用工具解密 : 配置AutoDecoder等工具 设置相同的密钥和IV 选择正确的加密模式(CBC)和填充方式(PKCS7) 爆破测试 : 解密请求数据验证加密逻辑 构造明文字典进行加密 发送加密后的数据进行爆破 二、AES服务端获取密钥加密 1. 特点分析 密钥和IV从服务端动态获取 但通常密钥在会话期间保持不变 增加了静态分析的难度 2. 实际案例分析 前端代码关键部分 : 3. 突破方法 拦截密钥请求 : 捕获 server_generate_key.php 的响应 提取Base64编码的aes_ key和aes_ iv 工具配置 : 修改正则表达式匹配加密数据字段 设置从服务端获取的密钥和IV 验证解密 : 使用获取的密钥解密样本请求 确认加密模式(CBC)和填充方式(PKCS7) 爆破流程 : 与固定密钥AES相同 注意保持会话以使用相同密钥 三、RSA非对称加密 1. RSA加密基础 使用公钥加密,私钥解密 公钥可以公开,私钥保密 常用于保护传输中的数据 2. 实际案例分析 前端代码示例 : 3. 突破方法 获取公钥 :从前端代码中提取公钥 理解加密结构 : 数据通常被转换为JSON格式后加密 例如: {"username":"admin","password":"123456"} 工具配置 : 在AutoDecoder中设置RSA公钥 配置加密前的明文格式 爆破流程 : 使用公钥加密构造的明文数据 发送加密后的请求进行爆破 注意无法解密响应,只能通过结果判断 四、通用突破流程 前端代码分析 : 查找加密相关函数(CryptoJS, JSEncrypt等) 确定加密算法、密钥获取方式 请求/响应分析 : 捕获加密前后的数据 分析加密数据格式和传输方式 工具配置 : 根据加密类型选择适当工具 精确配置密钥、IV、加密模式等参数 验证与爆破 : 先验证加解密流程是否正确 然后进行自动化爆破测试 五、防御建议 避免使用固定密钥 为每个会话使用不同的密钥 结合多种加密方式 对关键操作增加二次验证 定期更新加密密钥 六、工具推荐 AutoDecoder :自动化加解密工具 Burp Suite :拦截和修改请求 Chrome DevTools :前端代码分析 CryptoJS/JSEncrypt :理解加密逻辑 通过以上方法,可以有效分析和突破常见的前端加密场景,但请注意这些技术应仅用于合法的安全测试目的。