技术讨论 | 如何对经前端加密后的数据进行爆破
字数 1079 2025-08-18 11:37:37

前端加密数据爆破技术详解

前言

本文详细讲解如何对采用前端加密的登录系统进行爆破攻击,涵盖RSA和MD5两种加密方式的实战案例。通过本文,您将掌握前端加密分析、加密过程模拟以及自动化爆破的技术要点。

案例一:RSA本地加密爆破

系统分析

  1. 登录流程

    • 输入正确用户名密码后,系统向注册手机号发送验证码
    • 输入正确验证码完成登录
    • 关键漏洞:系统未限制验证码获取频率
  2. 加密方式

    • 使用RSA非对称加密
    • 前端调用jsencrypt.min.js进行加密
    • 公钥存储在cookie中并以URL编码形式存在

工具准备

  1. jsEncrypter插件

    • 下载地址:https://github.com/c0ny1/jsEncrypter/releases
    • 功能:在Burp Suite中模拟前端加密过程
  2. 加密分析

    • 定位加密代码:ui/lib/security/rsa_util.js
    • 分析加密调用逻辑
    • 注意公钥处理方式(URL解码和换行符替换)

实施步骤

  1. 编写加密模板

    // jsEncrypter_rsa.js示例
    var publicKey = decodeURIComponent(cookie中的公钥).replace(/\\n/g, '\n');
    var encrypt = new JSEncrypt();
    encrypt.setPublicKey(publicKey);
    
    function encrypt(data){
        return encrypt.encrypt(data);
    }
    
  2. 运行环境配置

    • 启动phantomJS
    • 在Burp Suite中加载jsEncrypter插件
    • 测试加密功能是否正常工作
  3. 爆破实施

    • 抓取登录请求包
    • 使用插件对用户名和密码字段进行加密
    • 加载字典实施爆破
    • 通过验证码发送情况判断成功与否

案例二:MD5本地加密爆破

系统分析

  1. 登录流程

    • 无验证码,可多次提交
    • 用户名密码在本地进行MD5加密
    • 需要先获取salt和cd值
  2. 加密方式

    • 三重MD5加密:密码 → 密码+salt → 上一步结果+cd
    • salt和cd通过单独接口获取

工具准备

  1. Python脚本
    • requests库:发送HTTP请求
    • hashlib库:进行MD5加密
    • json库:处理返回数据

实施步骤

  1. 爆破脚本编写

    import requests
    import hashlib
    import json
    
    def Brute_Force(username, password):
        session = requests.Session()
        # 获取salt和cd
        response = session.post("获取salt的URL", data={"username": username})
        salt_data = json.loads(response.content)
    
        # 三重MD5加密
        md5_pass = hashlib.md5(password.encode()).hexdigest() + salt_data['salt']
        md5_salt = hashlib.md5(md5_pass.encode()).hexdigest() + str(salt_data['cd'])
        md5_cd = hashlib.md5(md5_salt.encode()).hexdigest()
    
        # 发送登录请求
        login_data = {"username": username, "password": md5_cd}
        login_response = session.post("登录URL", data=login_data)
        return login_response.content
    
  2. 字典准备

    • 创建pass.txt文件
    • 每行一个密码候选
  3. 执行爆破

    • 遍历密码字典
    • 对每个密码进行加密处理
    • 分析返回数据判断是否成功

关键注意事项

  1. 编码问题

    • 注意URL编码与解码的一致性
    • 确保字符串编码统一(通常使用UTF-8)
  2. 加密细节

    • 准确还原前端加密逻辑
    • 特别注意salt和cd的拼接顺序
  3. 性能优化

    • 对固定值(如salt)进行缓存
    • 合理控制请求频率
  4. 合法性

    • 仅用于授权测试
    • 遵守相关法律法规

防御建议

  1. 服务端措施

    • 实施请求频率限制
    • 增加验证码机制
    • 服务端二次加密
  2. 前端改进

    • 动态获取加密密钥
    • 增加时间戳等动态参数
    • 混淆加密代码

通过本文的技术细节,安全人员可以更好地理解前端加密的潜在风险,并采取相应措施加强系统安全。

前端加密数据爆破技术详解 前言 本文详细讲解如何对采用前端加密的登录系统进行爆破攻击,涵盖RSA和MD5两种加密方式的实战案例。通过本文,您将掌握前端加密分析、加密过程模拟以及自动化爆破的技术要点。 案例一:RSA本地加密爆破 系统分析 登录流程 : 输入正确用户名密码后,系统向注册手机号发送验证码 输入正确验证码完成登录 关键漏洞:系统未限制验证码获取频率 加密方式 : 使用RSA非对称加密 前端调用jsencrypt.min.js进行加密 公钥存储在cookie中并以URL编码形式存在 工具准备 jsEncrypter插件 : 下载地址:https://github.com/c0ny1/jsEncrypter/releases 功能:在Burp Suite中模拟前端加密过程 加密分析 : 定位加密代码:ui/lib/security/rsa_ util.js 分析加密调用逻辑 注意公钥处理方式(URL解码和换行符替换) 实施步骤 编写加密模板 : 运行环境配置 : 启动phantomJS 在Burp Suite中加载jsEncrypter插件 测试加密功能是否正常工作 爆破实施 : 抓取登录请求包 使用插件对用户名和密码字段进行加密 加载字典实施爆破 通过验证码发送情况判断成功与否 案例二:MD5本地加密爆破 系统分析 登录流程 : 无验证码,可多次提交 用户名密码在本地进行MD5加密 需要先获取salt和cd值 加密方式 : 三重MD5加密:密码 → 密码+salt → 上一步结果+cd salt和cd通过单独接口获取 工具准备 Python脚本 : requests库:发送HTTP请求 hashlib库:进行MD5加密 json库:处理返回数据 实施步骤 爆破脚本编写 : 字典准备 : 创建pass.txt文件 每行一个密码候选 执行爆破 : 遍历密码字典 对每个密码进行加密处理 分析返回数据判断是否成功 关键注意事项 编码问题 : 注意URL编码与解码的一致性 确保字符串编码统一(通常使用UTF-8) 加密细节 : 准确还原前端加密逻辑 特别注意salt和cd的拼接顺序 性能优化 : 对固定值(如salt)进行缓存 合理控制请求频率 合法性 : 仅用于授权测试 遵守相关法律法规 防御建议 服务端措施 : 实施请求频率限制 增加验证码机制 服务端二次加密 前端改进 : 动态获取加密密钥 增加时间戳等动态参数 混淆加密代码 通过本文的技术细节,安全人员可以更好地理解前端加密的潜在风险,并采取相应措施加强系统安全。