手把手js逆向断点调试&js逆向前端加密对抗&企业SRC实战分享
字数 2084 2025-09-01 11:25:53
JS逆向断点调试与前端加密对抗实战指南
0x1 前言
本文全面介绍JS逆向断点调试技术、前端加密对抗方法以及企业SRC实战案例。内容涵盖基础调试技巧、加密算法识别、靶场搭建、常用工具使用以及微信小程序常见的AES、RSA和Sign签名校验绕过技术。
0x2 加密算法定位方法
浏览器调试工具核心功能
-
作用域(Scope)
- 全局作用域:函数和代码块之外声明的变量
- 函数作用域:函数内部声明的变量
- 块级作用域:{}中用let/const声明的变量
-
调用堆栈(Call Stack)
- JavaScript管理函数调用的数据结构
- 后进先出原则
- 示例调用流程:a()→b()→c()→c出栈→b出栈→a出栈
-
XHR断点
- 用于在发送AJAX请求时暂停代码执行
- 主要应用场景:
- 调试接口请求参数
- 查看请求发送时机
- 分析请求拦截/修改逻辑
加密流程分析
- 用户输入账号密码
- 浏览器接收输入
- JS代码进行加密处理
- 发送加密数据到服务器
- 服务器解密并验证数据
- 返回验证结果
0x3 实战断点调试技巧
调试工具栏功能
| 按钮 | 功能描述 |
|---|---|
| 1 | 继续执行到下一个断点 |
| 2 | 跳过下一个函数调用 |
| 3 | 进入下一个函数上下文 |
| 4 | 跳出当前函数调用 |
| 5 | 单步调试 |
| 6 | 停用/激活全部断点 |
案例一:接口关键字搜索法
- 搜索"Vip/LoginResult"等接口关键字
- 在top文件中查找登录相关代码
- 设置多个断点进行分段调试
- 在控制台输入变量名查看加密数据
案例二:加密关键字搜索法
- 查找"publickey"等加密相关关键字
- 随机设置断点
- 触发登录操作
- 在控制台输入"dataJson.password"查看加密过程
案例三:标签断点法
- 在元素面板选中登录按钮
- 右键选择"子树修改"和"属性修改"
- 触发登录操作中断JS执行
0x4 JS逆向靶场搭建
encrypt-labs靶场安装
- 下载地址:https://github.com/SwagXz/encrypt-labs
- 解压到phpstudy的www目录
- 修改数据库配置为root/root
- PHP版本需≥7.3.4
- 创建encryptDB数据库并导入SQL
- 默认账号:admin/123456
0x5 常用解密工具
1. autoDecoder
- 下载:https://github.com/f0ng/autoDecoder
- BurpSuite插件,支持自动解密
- 配置要点:设置正确的关键字和方法
2. Js-Forward
- 下载:https://github.com/G-Security-Team/JS-Forward
- 解决WEB参数加密问题
3. JsRpc
- 下载:https://github.com/jxhczhl/JsRpc
- 实现JS代码远程调用
4. ctool浏览器插件
- 下载:https://github.com/baiy/Ctool
- 浏览器内置加解密工具
0x6 AES对称加密对抗
AES特点
- 微信小程序常用加密算法
- 加密解密使用相同密钥
- 关键词搜索:
- encryptedData
- AES.decrypt
- CryptoJS.AES
固定Key破解
- 搜索"encryptedData"定位算法
- 分析固定key和iv
- 直接还原明文数据
服务端Key获取
- 使用autoDecoder配置解密方法
- 设置关键字如"password"
- 进行爆破尝试
0x7 RSA非对称加密对抗
RSA识别方法
- 输入超长数值测试是否报错
- 搜索关键词:
- setpublickey
- RSA.encrypt
- JSEncrypt
破解步骤
- 搜索setpublickey找到公钥
- 断点调试获取原始数据
- 使用autoDecoder配置解密
0x8 Sign签名校验绕过
签名流程分析
- 参数组成:username、password、nonce、timestamp、signature
- 签名生成:
- 拼接参数为dataToSign
- 使用HmacSHA256加密(密钥:be56e057f20f883e)
- 后台验证签名一致性
绕过方法
- 搜索"signature"定位代码
- 断点调试获取签名算法
- 重新计算有效签名替换原值
0x9 企业SRC实战案例
商城优惠券并发漏洞
- 发现优惠券领取功能
- 抓包获取优惠券ID参数
- 使用并发插件爆破(建议20并发)
- 横向测试不同金额优惠券ID
- 验证优惠券可叠加使用
漏洞利用
- 普通用户只能领取100元券
- 通过并发可获取200元等高价值券
- 支付时可叠加使用多张优惠券
0x10 总结
本文系统介绍了JS逆向调试和前端加密对抗的全套技术,从基础调试到实战案例,涵盖了常见加密算法的识别和破解方法。关键点包括:
- 掌握浏览器调试工具的核心功能
- 熟练使用多种断点调试技巧
- 搭建本地靶场进行练习
- 合理运用自动化解密工具
- 理解不同加密算法的特点和对抗方法
- 将技术应用于实际漏洞挖掘
通过系统学习和实践,可以有效提升前端安全分析和漏洞挖掘能力。