找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1132

积分

0

好友

164

主题
发表于 12 小时前 | 查看: 2| 回复: 0

渗透测试过程中,常会遇到需要破解前端JavaScript加密算法才能篡改数据包的情况。传统做法是使用Python的requests库手动构造请求,效率较低。RaindropEcho工具旨在将JS逆向成果与BurpSuite集成,实现数据包的自动加解密,从而提升测试效率。通过编写符合规范的JS模板并导入插件,即可让BurpSuite自动处理指定接口的加解密流程。

核心功能

  • 自定义JS模板:提供模板框架,支持用户编写针对特定域名和接口的加密/解密算法。
  • 多模板支持:可同时导入多个模板,应对不同接口的加密方案。
  • 自动化流程:拦截到的密文数据包会自动解密并送入重放器(Repeater);修改明文后发送时,插件会自动加密并发出。

环境准备

  1. 安装Jython,并在BurpSuite的Extender选项中配置其路径。
  2. 安装Node.js,并确保其可执行文件路径已添加到系统环境变量。

使用指南

1. 编写JS逆向模板

模板主要包含三部分:

  • encryptFunction(data)函数:在此处编写具体的加密逻辑。
  • config对象:配置该加密算法对应的目标域名(domain)和接口路径(path)。
  • default_json对象:定义逆向分析得到的原始数据结构。

以下是一个完整的模板示例:

const fs = require('fs');

// ---------- 用户编写区域开始 ----------
// 加密函数
function encryptFunction(data) {
    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);
}

2. 导入插件与模板

  1. 在BurpSuite中安装RaindropEcho插件。
  2. 在插件界面选择导入编写好的JS文件。
  3. 重要:确保JS文件的存放路径不包含中文字符。
  4. 导入成功后,插件列表中会显示该模板的配置信息。

3. 插件工作流演示

说明:以下演示使用公开测试网站的心跳包,不涉及敏感数据与攻击行为。

  1. 捕获与解密:在Proxy或任何其他模块中,右键点击目标数据包,选择发送到RaindropEcho插件。插件将自动调用JS模板中的解密函数,并将明文结果显示在界面中。
  2. 修改与重放:在插件界面修改解密后的明文数据,点击发送。插件会先调用加密函数处理修改后的数据,再将加密结果自动发送到目标服务器,完成一次自动化的加解密重放。

通过以上步骤,RaindropEcho成功桥接了JavaScript逆向分析与BurpSuite的渗透测试工作流,极大简化了对加密接口的测试难度。

项目开源地址:https://github.com/tingyusys/RaindropEcho




上一篇:C++未定义行为安全指南:5种常见陷阱与调试策略
下一篇:Redisson分布式锁核心原理与Java应用实战
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 16:02 , Processed in 0.117345 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表