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