不懂js遇到前端加密该如何进行js逆向
字数 1399 2025-08-18 17:33:11

前端加密JS逆向分析实战指南

前言

在Web安全测试中,前端加密和sign签名是常见的防护手段。本文针对不熟悉JavaScript的安全测试人员,提供一套完整的JS逆向分析方法,帮助定位和破解前端加密逻辑。

常见加密类型

  1. 对称加密:AES、DES
  2. 非对称加密:RSA
  3. 哈希算法:MD5
  4. 签名机制:sign(通常是对提交数据和时间戳的组合加密)

关键词定位法

常用搜索关键词

  • 加密相关:encryptdecryptCryptoAESDESRSAMD5
  • 密钥相关:ivkeysetPublicKeypubkeyHex
  • 编码相关:utf8.parsemode.CBCencode
  • 签名相关:sign

搜索技巧

  1. 使用全局搜索(Ctrl+Shift+F)或代码内搜索(Ctrl+F)
  2. 添加符号缩小范围:key=iv:sign'
  3. 注意大小写变体

Debug调试方法

调试按钮功能

  1. 执行到下一个端点:继续执行直到下一个断点
  2. 执行下一步(Step Over):执行当前行,不进入函数内部
  3. 进入函数(Step Into):进入当前行的函数内部
  4. 跳出函数(Step Out):执行完当前函数并跳出
  5. 一步步执行(Step):逐行执行,遇到函数则进入

行为Debug

  1. 定位登录按钮的点击事件
  2. 查看右侧click事件对应的处理函数

请求包调用栈分析

  1. 在Network面板查看加密数据包
  2. 右侧Initiator显示调用栈,执行顺序由上而下

XHR Debug技巧

适用于URL中加密参数全局搜索不到的情况。

  1. 在调试工具中匹配URL关键词
  2. 分析Call Stack调用栈(执行顺序从下往上)

XHR Debug实战案例

场景描述

一个带sign验签的网站,修改menuNo参数时发现sign验证。

分析步骤

  1. 复制提交网址到调试工具
  2. 执行查询操作,分析右侧调用堆栈
  3. 从下往上查看函数调用:
    • 查找function定义,观察参数是否已包含sign
    • 如果参数已有sign,说明加密过程在前面的函数
  4. 在可疑位置设置断点,重新执行操作
  5. 定位到加密函数特征:
    • 参数包含时间戳和提交数据
    • 返回结果类似sign值
  6. 清除其他断点,在加密函数处设置断点
  7. 在控制台操作:
    • 输出加密函数执行结果
    • 修改变量值重新加密测试

验证方法

  1. 在Burp中修改sign和时间戳进行验证
  2. 确认修改后的请求是否成功

深入分析加密过程

  1. 点击加密函数跳转到定义处
  2. 分析具体加密逻辑:
    • 参数处理
    • 加密算法实现
    • 结果生成
  3. 在JS调试环境中补全缺失的依赖

爆破工具推荐

BurpCrypto插件

GitHub地址:https://github.com/whwlsfb/BurpCrypto

功能特点

  1. 内置常见加密方式
  2. 支持自定义JS代码
  3. 可在Intruder模块直接调用

使用步骤

  1. 将扣取的加密代码粘贴到Exec Js部分
  2. 点击Add processor保存
  3. 在Intruder模块选择对应的加密处理器

总结

  1. 优先使用关键词定位快速找到加密函数
  2. 善用调用栈分析执行流程
  3. 合理设置断点进行动态调试
  4. 控制台验证和修改参数
  5. 使用工具辅助爆破测试

通过这套方法,即使不熟悉JavaScript也能有效分析前端加密逻辑,突破sign签名验证等安全机制。

前端加密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签名验证等安全机制。