如何解决Web渗透测试请求数据包加密(附脚本)
字数 931 2025-08-11 21:26:27

Web渗透测试中请求数据包加密的解决方案

概述

在Web渗透测试过程中,经常会遇到请求数据包被加密的情况。越来越多的Web站点使用JS加密库或自定义加密方式对请求数据包进行加密,这增加了渗透测试的难度和工作量。本文将详细介绍解决这一问题的完整方案。

加密请求交互原理

前后端数据加解密的请求交互过程如下:

  1. 前端JS对请求的参数进行加密后发送给后端
  2. 后端使用对应的解密方式解密参数,再进行业务处理

第一阶段解决方案:手动控制台加密

实现方式

  • 在浏览器console控制台中调用JS加密函数
  • 将加密结果复制到数据包中替换原参数值

缺点

  1. 需要在console和数据包之间频繁复制替换,效率低下
  2. 无法与sqlmap等自动化工具配合使用

第二阶段解决方案:自动化加密代理

模型架构

明文数据包 → 加密代理自动加密参数 → 转发给服务器

实现工具

  • BurpSuite:一级代理,修改request中的加密参数或删除response中加密JS
  • mitmproxy:二级代理,通过addon加载pyexecjs完成请求体加密编码

优势

  • 支持手动编辑明文请求
  • 兼容sqlmap等自动化工具
  • 提高测试效率

JsencryptKiller工具使用指南

安装依赖

pip3 install pyexecjs
pip3 install mitmproxy

工具运行

python JSencryptkiller.py -h  # 查看帮助

参数说明

按顺序填入以下参数:

  1. 加密JS文件路径
  2. 加密函数名
  3. 目标URL
  4. 需要加密的参数名(多个参数用逗号分隔)

本地测试示例

  1. 搭建本地测试环境(如phpstudy)
  2. 准备加密JS脚本(如login.js),其中包含加密函数enc
  3. 运行脚本:
    python JSencryptkiller.py login.js enc http://192.168.0.107 name,pwd
    
  4. 配置BurpSuite上游代理为脚本监听的8081端口
  5. 验证请求参数是否被正确加密

与sqlmap配合使用

  • 将sqlmap代理设置为JsencryptKiller的监听端口(默认8081)
  • 确保JsencryptKiller正常运行

关键点总结

  1. 加密原理理解:必须了解目标站点的加密方式和加密函数
  2. JS加密脚本准备:需要根据实际加密方式构造对应的JS加密函数
  3. 代理链配置:正确配置BurpSuite和mitmproxy的代理层级关系
  4. 参数识别:准确识别请求中需要加密的参数名
  5. 工具兼容性:方案支持手动测试和自动化工具集成

参考资源

Web渗透测试中请求数据包加密的解决方案 概述 在Web渗透测试过程中,经常会遇到请求数据包被加密的情况。越来越多的Web站点使用JS加密库或自定义加密方式对请求数据包进行加密,这增加了渗透测试的难度和工作量。本文将详细介绍解决这一问题的完整方案。 加密请求交互原理 前后端数据加解密的请求交互过程如下: 前端JS对请求的参数进行加密后发送给后端 后端使用对应的解密方式解密参数,再进行业务处理 第一阶段解决方案:手动控制台加密 实现方式 : 在浏览器console控制台中调用JS加密函数 将加密结果复制到数据包中替换原参数值 缺点 : 需要在console和数据包之间频繁复制替换,效率低下 无法与sqlmap等自动化工具配合使用 第二阶段解决方案:自动化加密代理 模型架构 : 实现工具 : BurpSuite:一级代理,修改request中的加密参数或删除response中加密JS mitmproxy:二级代理,通过addon加载pyexecjs完成请求体加密编码 优势 : 支持手动编辑明文请求 兼容sqlmap等自动化工具 提高测试效率 JsencryptKiller工具使用指南 安装依赖 工具运行 参数说明 按顺序填入以下参数: 加密JS文件路径 加密函数名 目标URL 需要加密的参数名(多个参数用逗号分隔) 本地测试示例 搭建本地测试环境(如phpstudy) 准备加密JS脚本(如login.js),其中包含加密函数 enc 运行脚本: 配置BurpSuite上游代理为脚本监听的8081端口 验证请求参数是否被正确加密 与sqlmap配合使用 将sqlmap代理设置为JsencryptKiller的监听端口(默认8081) 确保JsencryptKiller正常运行 关键点总结 加密原理理解 :必须了解目标站点的加密方式和加密函数 JS加密脚本准备 :需要根据实际加密方式构造对应的JS加密函数 代理链配置 :正确配置BurpSuite和mitmproxy的代理层级关系 参数识别 :准确识别请求中需要加密的参数名 工具兼容性 :方案支持手动测试和自动化工具集成 参考资源 工具下载链接: 百度网盘 参考文章: FreeBuf文章