记一次前端加解密到sql注入过waf的实战
字数 1196 2025-08-10 08:28:27

前端加解密到SQL注入绕过WAF实战教学文档

1. 背景概述

本文记录了一次从前端加密参数分析到最终实现SQL注入绕过WAF的完整实战过程。攻击者通过分析前端JavaScript加密逻辑,构造特殊加密参数,成功绕过了网站的安全防护机制。

2. 关键知识点

2.1 前端加密分析

  1. 加密参数定位

    • 通过浏览器开发者工具(F12)的Network面板观察请求参数
    • 发现关键参数data被加密处理
  2. 加密逻辑逆向

    • 在Sources面板查找加密相关JavaScript代码
    • 定位到加密函数encryptData,使用AES加密算法
    • 加密前会对参数对象进行属性排序(关键点)

2.2 Node.js执行环境搭建

  1. 为什么需要Node.js

    • 直接复制JS代码可能缺失依赖函数
    • 需要完整执行环境还原加密逻辑
    • 特别是当存在对象属性排序等复杂操作时
  2. 操作步骤

    // 1. 从浏览器复制完整加密函数及相关依赖
    // 2. 创建Node.js脚本文件
    // 3. 补全缺失函数或模块
    // 4. 导出加密函数供外部调用
    

2.3 加密参数构造

  1. 参数排序逻辑

    • JavaScript对象属性按特定顺序排列
    • 必须确保Python与JS排序结果一致
    • 示例排序函数:
      function sortObject(obj) {
        return Object.keys(obj).sort().reduce((acc, key) => {
          acc[key] = obj[key];
          return acc;
        }, {});
      }
      
  2. 加密流程

    • 构造原始参数对象
    • 按规则排序属性
    • 进行AES加密
    • Base64编码输出

2.4 SQL注入构造

  1. WAF绕过技巧

    • 利用前端加密使WAF无法识别明文SQL语句
    • 通过加密参数传递恶意负载
    • 后端解密后直接拼接SQL导致注入
  2. 典型Payload

    {
      "id": "1' UNION SELECT username, password FROM users-- "
    }
    

3. 完整攻击流程

3.1 信息收集阶段

  1. 使用浏览器开发者工具分析请求
  2. 识别加密参数和加密逻辑
  3. 收集必要的JavaScript函数

3.2 加密环境搭建

  1. 安装Node.js环境
  2. 创建加密脚本文件
  3. 测试加密函数能否正确执行

3.3 注入测试

  1. 构造明文SQL注入语句
  2. 通过加密函数生成加密参数
  3. 发送恶意请求测试效果
  4. 根据响应调整Payload

4. 防御建议

  1. 前端加密

    • 不要依赖前端加密作为安全措施
    • 前端加密应仅用于传输保护
  2. 后端处理

    • 对解密后的参数进行严格验证
    • 使用参数化查询而非字符串拼接
    • 实施最小权限原则
  3. WAF配置

    • 在解密后对参数进行检测
    • 部署RASP进行运行时防护

5. 工具与资源

  1. HaE插件自定义规则

    • 可配置常见漏洞关键字如:
      • SQL注入: union select, sleep(, information_schema
      • XSS: alert(, <script>, onerror=
      • 文件包含: ../, file://, php://
  2. 其他工具

    • Burp Suite用于请求拦截和重放
    • Node.js用于执行前端加密逻辑
    • Python requests库构造恶意请求

6. 总结

本案例展示了从前端加密分析到最终绕过WAF实现SQL注入的完整链条。关键在于理解整个数据流和处理逻辑,特别是加密前后的数据处理过程。防御此类攻击需要前后端协同防护,不能仅依赖单一安全措施。

前端加解密到SQL注入绕过WAF实战教学文档 1. 背景概述 本文记录了一次从前端加密参数分析到最终实现SQL注入绕过WAF的完整实战过程。攻击者通过分析前端JavaScript加密逻辑,构造特殊加密参数,成功绕过了网站的安全防护机制。 2. 关键知识点 2.1 前端加密分析 加密参数定位 : 通过浏览器开发者工具(F12)的Network面板观察请求参数 发现关键参数 data 被加密处理 加密逻辑逆向 : 在Sources面板查找加密相关JavaScript代码 定位到加密函数 encryptData ,使用AES加密算法 加密前会对参数对象进行属性排序(关键点) 2.2 Node.js执行环境搭建 为什么需要Node.js : 直接复制JS代码可能缺失依赖函数 需要完整执行环境还原加密逻辑 特别是当存在对象属性排序等复杂操作时 操作步骤 : 2.3 加密参数构造 参数排序逻辑 : JavaScript对象属性按特定顺序排列 必须确保Python与JS排序结果一致 示例排序函数: 加密流程 : 构造原始参数对象 按规则排序属性 进行AES加密 Base64编码输出 2.4 SQL注入构造 WAF绕过技巧 : 利用前端加密使WAF无法识别明文SQL语句 通过加密参数传递恶意负载 后端解密后直接拼接SQL导致注入 典型Payload : 3. 完整攻击流程 3.1 信息收集阶段 使用浏览器开发者工具分析请求 识别加密参数和加密逻辑 收集必要的JavaScript函数 3.2 加密环境搭建 安装Node.js环境 创建加密脚本文件 测试加密函数能否正确执行 3.3 注入测试 构造明文SQL注入语句 通过加密函数生成加密参数 发送恶意请求测试效果 根据响应调整Payload 4. 防御建议 前端加密 : 不要依赖前端加密作为安全措施 前端加密应仅用于传输保护 后端处理 : 对解密后的参数进行严格验证 使用参数化查询而非字符串拼接 实施最小权限原则 WAF配置 : 在解密后对参数进行检测 部署RASP进行运行时防护 5. 工具与资源 HaE插件自定义规则 : 可配置常见漏洞关键字如: SQL注入: union select , sleep( , information_schema XSS: alert( , <script> , onerror= 文件包含: ../ , file:// , php:// 其他工具 : Burp Suite用于请求拦截和重放 Node.js用于执行前端加密逻辑 Python requests库构造恶意请求 6. 总结 本案例展示了从前端加密分析到最终绕过WAF实现SQL注入的完整链条。关键在于理解整个数据流和处理逻辑,特别是加密前后的数据处理过程。防御此类攻击需要前后端协同防护,不能仅依赖单一安全措施。