不懂js遇到前端加密该如何进行js逆向
字数 1399 2025-08-18 17:33:11
前端加密JS逆向分析实战指南
前言
在Web安全测试中,前端加密和sign签名是常见的防护手段。本文针对不熟悉JavaScript的安全测试人员,提供一套完整的JS逆向分析方法,帮助定位和破解前端加密逻辑。
常见加密类型
- 对称加密:AES、DES
- 非对称加密:RSA
- 哈希算法:MD5
- 签名机制:sign(通常是对提交数据和时间戳的组合加密)
关键词定位法
常用搜索关键词
- 加密相关:
encrypt、decrypt、Crypto、AES、DES、RSA、MD5 - 密钥相关:
iv、key、setPublicKey、pubkeyHex - 编码相关:
utf8.parse、mode.CBC、encode - 签名相关:
sign
搜索技巧
- 使用全局搜索(Ctrl+Shift+F)或代码内搜索(Ctrl+F)
- 添加符号缩小范围:
key=、iv:、sign'等 - 注意大小写变体
Debug调试方法
调试按钮功能
- 执行到下一个端点:继续执行直到下一个断点
- 执行下一步(Step Over):执行当前行,不进入函数内部
- 进入函数(Step Into):进入当前行的函数内部
- 跳出函数(Step Out):执行完当前函数并跳出
- 一步步执行(Step):逐行执行,遇到函数则进入
行为Debug
- 定位登录按钮的点击事件
- 查看右侧
click事件对应的处理函数
请求包调用栈分析
- 在Network面板查看加密数据包
- 右侧
Initiator显示调用栈,执行顺序由上而下
XHR Debug技巧
适用于URL中加密参数全局搜索不到的情况。
- 在调试工具中匹配URL关键词
- 分析
Call Stack调用栈(执行顺序从下往上)
XHR Debug实战案例
场景描述
一个带sign验签的网站,修改menuNo参数时发现sign验证。
分析步骤
- 复制提交网址到调试工具
- 执行查询操作,分析右侧调用堆栈
- 从下往上查看函数调用:
- 查找
function定义,观察参数是否已包含sign - 如果参数已有sign,说明加密过程在前面的函数
- 查找
- 在可疑位置设置断点,重新执行操作
- 定位到加密函数特征:
- 参数包含时间戳和提交数据
- 返回结果类似sign值
- 清除其他断点,在加密函数处设置断点
- 在控制台操作:
- 输出加密函数执行结果
- 修改变量值重新加密测试
验证方法
- 在Burp中修改sign和时间戳进行验证
- 确认修改后的请求是否成功
深入分析加密过程
- 点击加密函数跳转到定义处
- 分析具体加密逻辑:
- 参数处理
- 加密算法实现
- 结果生成
- 在JS调试环境中补全缺失的依赖
爆破工具推荐
BurpCrypto插件
GitHub地址:https://github.com/whwlsfb/BurpCrypto
功能特点
- 内置常见加密方式
- 支持自定义JS代码
- 可在Intruder模块直接调用
使用步骤
- 将扣取的加密代码粘贴到
Exec Js部分 - 点击
Add processor保存 - 在Intruder模块选择对应的加密处理器
总结
- 优先使用关键词定位快速找到加密函数
- 善用调用栈分析执行流程
- 合理设置断点进行动态调试
- 控制台验证和修改参数
- 使用工具辅助爆破测试
通过这套方法,即使不熟悉JavaScript也能有效分析前端加密逻辑,突破sign签名验证等安全机制。