针对前端加密爆破的方法及实战案例
字数 1517 2025-08-20 18:17:47
前端加密爆破方法及实战案例详解
一、概述
现代Web应用系统普遍在后台登录界面使用JavaScript对密码进行加密处理,有些系统还会同时对用户名和密码进行加密。针对这种前端加密场景,我们可以采用以下两种主要方法进行爆破:
- 使用Burp插件直接调用加密函数在本地加密后进行爆破
- 使用工具模拟浏览器登录界面进行爆破
二、工具介绍
1. Blasting(图形化爆破工具)
优点:
- 自动化进行爆破和验证码识别
- 无视加密方法
- 调试难度较低
缺点:
- 结果仅包含title和响应长度
- 爆破结果可能存在误报
下载方式:
https://github.com/gubeihc/blasting
2. jsEncrypter(Burp前端加密Fuzz插件)
优点:
- 作为Burp插件安装使用
- 爆破速度快
- 准确率高
- 结果查看方便
缺点:
- 需要下载加密JS到本地
- 需要手动查找加密函数的调用方法
下载方式:
https://github.com/c0ny1/jsEncrypter
3. BurpCrypto(Burp插件)
优点:
- 无需下载JS文件
- 直接在Burp中进行加解密操作
缺点:
- 需要手动查找加密参数
- 目前仅支持AES/DES加密、RSA公钥加密
下载方式:
在Burp扩展商店搜索"BurpCrypto"安装
三、实战案例:通过BurpCrypto进行爆破(前缀+AES加密)
1. 加密方法查找步骤
-
初始测试:
- 输入测试用户名:123
- 输入测试密码:456
- 使用抓包工具拦截请求
-
观察加密参数:
- 确认用户名和密码都被加密
- 记录加密参数名:loginName和loginPwd
-
浏览器开发者工具分析:
- 打开F12开发者工具
- 搜索"loginName"关键词
-
设置断点调试:
- 在疑似加密函数调用的位置设置断点
- 观察发现用户名添加了前缀"undefined#"
- 继续向上追踪调用栈
-
分析前缀来源:
- 发现loginName = orgid + "#" + loginName1
- 形成最终格式:undefind#123
-
识别加密算法:
- 单步执行发现使用AES加密
- 记录AES的key和iv参数
-
确认加密细节:
- 加密模式:CBC
- 填充方式:Pkcs7
- 编码格式:base64
-
验证加密结果:
- 使用解密工具验证加密参数
- 确认用户名和密码能成功解密
2. BurpCrypto配置及使用方法
-
插件配置:
- 打开Burp,选择BurpCrypto插件
- 配置以下参数:
- 加密算法:AES
- 加密模式:CBC
- 填充方式:PKCS7Padding
- 密钥(Key):填写获取的key
- 初始向量(IV):填写获取的iv
- 输出编码:Base64
- 点击"Add Processor"并命名
-
发送到爆破模块:
- 将捕获的登录包发送到Intruder模块
- 标记用户名和密码参数为爆破点
-
配置处理规则:
- 用户名处理:
- 添加前缀"undefined#"
- 添加BurpCrypto扩展调用
- 密码处理:
- 直接添加BurpCrypto扩展调用
- 用户名处理:
-
执行爆破:
- 点击开始攻击进行爆破
-
解密功能:
- 完整选中密文内容
- 右键选择BurpCrypto菜单
- 使用"Get PlainText"功能解密
四、总结
前端加密爆破的关键在于:
- 准确识别加密算法和参数
- 合理选择爆破工具
- 正确配置爆破参数
- 验证加密/解密过程的有效性
BurpCrypto插件特别适合处理AES/DES/RSA等标准加密的前端加密场景,而jsEncrypter则更适合处理自定义加密逻辑的情况。Blasting工具则提供了无视加密方法的自动化爆破能力,适合快速测试但精度要求不高的场景。