1 ►
工具介绍
日常渗透过程中,经常会碰到一些网站需要破解其 JS 加密算法后,才能对数据包进行修改。我们将加密算法破解出来后,一般就是使用 python 的 requests 库,发送修改的数据包来进行渗透测试,导致效率低下,因此考虑将 JS 逆向的结果通过插件与 burp 结合,提高效率。在 JS 逆向结束之后,通过 RaindropEcho 提供的 JS 模版,导入到插件,就可以完成 burp 数据包的自动加解密。
2 ►
工具使用
JS 逆向模版使用
1、在 encryptFunction 函数里写好加密逻辑
2、在 config 里写好逆向代码对应的域名和接口
3、在 default_json 里写好逆向出来的初始原数据
JS 逆向模版如下:
const fs = require('fs');
// 上面自己编写加密函数
// 写加密函数的加载方式
function encryptFunction(data) {
// 使用 JSON.parse 将字符串转换为 JSON 对象
const json_data = JSON.parse(data);
// 原来数据包时什么格式,就要返回什么格式
return `data=${jeimit(json_data.data)}&crc=${json_data.crc}`
}
// 编写域名和接口
const config = {
domain: "xxx.com",
path: "/v3/xxx"
};
// 编写逆向出来的原数据
const default_json = {
}
// 下面代码不要动---------------------------------------------------------------
// 检查传递的参数数量
const mode = process.argv[2];
if (mode === 'config') {
console.log(JSON.stringify(config));
process.exit(0);
}
if (mode === 'default') {
console.log(JSON.stringify(default_json));
process.exit(0);
}
if (process.argv.length < 4) {
console.error("Usage: node script.js [mode] [inputFile] [outputFile]");
process.exit(1);
}
const inputFile = process.argv[3];
const outputFile = process.argv[4];
// 读取输入文件内容
let inputData;
try {
inputData = fs.readFileSync(inputFile, 'utf8');
} catch (err) {
console.error(`Error reading input file: ${inputFile}`, err);
process.exit(1);
}
let outputData;
switch (mode) {
case 'encrypt':
outputData = encryptFunction(inputData);
break;
default:
console.error(`Unknown mode: ${mode}`);
process.exit(1);
}
// 将输出数据写入输出文件
try {
fs.writeFileSync(outputFile, outputData, 'utf8');
} catch (err) {
console.error(`Error writing to output file: ${outputFile}`, err);
process.exit(1);
}
导入插件
导入模板文件
step 1:选择 js 文件
step 2:测试 js 文件放置路径(注:js 文件路径一定不要有中文)
step 3:导入完成后
插件使用
注明:
-
本次演示,选用网站心跳包测试,无任何敏感数据,对网站无任何影响
step 1:选择对应的数据包
step 2:发送到插件
step 3:修改数据包成功发送
3 ►
TODO
4 ►
工具获取
https://github.com/tingyusys/RaindropEcho
转自李白你好
如有侵权,请联系删除
推荐阅读
查看更多精彩内容,还请关注 橘猫学安全
每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“ **再看
”**