一款JS逆向神器-RaindropEcho

admin 2025-12-22 04:22:37 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: RaindropEcho是一款JS逆向工具,用于在渗透测试中破解网站JS加密算法。它与BurpSuite集成,通过提供JS模板让用户编写加密逻辑,实现数据包的自动加解密,提高渗透测试效率。工具支持自定义编写、导入多个模板、自动解密数据包并放入重放器,以及自动拦截明文数据包进行加密后发出。文章详细介绍了工具的安装、配置和使用方法,包括JS模板的结构和导入步骤。 综合评分: 91 文章分类: 渗透测试,WEB安全,安全工具,漏洞分析,代码审计


cover_image

一款JS逆向神器-RaindropEcho

tingyusys

知微守望

2025年11月16日 10:46 浙江

一、工具概述

日常渗透过程中,经常会碰到一些网站需要破解其 JS 加密算法后,才能对数据包进行修改。我们将加密算法破解出来后,一般就是使用 python 的 requests 库,发送修改的数据包来进行渗透测试,导致效率低下,因此考虑将 JS 逆向的结果通过插件与 burp 结合,提高效率。在 JS 逆向结束之后,通过 RaindropEcho 提供的 JS 模版,导入到插件,就可以完成 burp 数据包的自动加解密。

📝 二、TODO

功能支持的更新

  • 提供 JS 逆向模版,支持自定义编写:指定域名下指定接口的加解密算法
  • 支持导入多个模版,同时破解多个接口的加密算法
  • 导入模板后,将数据包送到插件里,RaindropEcho 会自动解密,并将解密的数据包放入到重放器
  • 修改完数据后,发送数据包,RaindropEcho 会自动拦截明文数据包,进行加密后发出

🚨 三、准备工作

  • 安装 jython,burp 导入
  • 安装 nodjs,并添加环境变量

🐉 四、工具使用

JS 逆向模版使用

  • 在 encryptFunction 函数里写好加密逻辑
  • 在 config 里写好逆向代码对应的域名和接口
  • 在 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&nbsp;(process.argv.length&nbsp;<&nbsp;4) {&nbsp; &nbsp;&nbsp;console.error("Usage: node script.js [mode] [inputFile] [outputFile]");&nbsp; &nbsp; process.exit(1);}
const&nbsp;inputFile = process.argv[3];const&nbsp;outputFile = process.argv[4];
// 读取输入文件内容let&nbsp;inputData;try&nbsp;{&nbsp; &nbsp; inputData = fs.readFileSync(inputFile,&nbsp;'utf8');}&nbsp;catch&nbsp;(err) {&nbsp; &nbsp;&nbsp;console.error(`Error reading input file:&nbsp;${inputFile}`, err);&nbsp; &nbsp; process.exit(1);}
let&nbsp;outputData;
switch&nbsp;(mode) {&nbsp; &nbsp;&nbsp;case&nbsp;'encrypt':&nbsp; &nbsp; &nbsp; &nbsp; outputData =&nbsp;encryptFunction(inputData);&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;break;
&nbsp; &nbsp;&nbsp;default:&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;console.error(`Unknown mode:&nbsp;${mode}`);&nbsp; &nbsp; &nbsp; &nbsp; process.exit(1);}
// 将输出数据写入输出文件try&nbsp;{&nbsp; &nbsp; fs.writeFileSync(outputFile, outputData,&nbsp;'utf8');}&nbsp;catch&nbsp;(err) {&nbsp; &nbsp;&nbsp;console.error(`Error writing to output file:&nbsp;${outputFile}`, err);&nbsp; &nbsp; process.exit(1);}

导入插件

导入模版文件

step 1:选择 js 文件

step 2:测试 js 文件放置路径(注:js 文件路径一定不要有中文)

step 3:导入完成后

插件使用

注明:

  • 本次演示,选用网站心跳包测试,无任何敏感数据,对网站无任何影响

step 1:选择对应的数据包

step 2:发送到插件

step 3:修改数据包成功发送

参考链接

https://github.com/tingyusys/RaindropEcho

真心感觉自己要学习的知识好多,也有好多大神卧虎藏龙、开源分享。作为初学者,我们可能有差距,不论你之前是什么方向,是什么工作,是什么学历,是大学大专中专,亦或是高中初中,只要你喜欢安全,喜欢渗透,就朝着这个目标去努力吧!有差距不可怕,我们需要的是去缩小差距,去战斗,况且这个学习的历程真的很美,安全真的有意思。但切勿去做坏事,我们需要的是白帽子,是维护我们的网络,安全路上共勉。

本文版权归作者和微信公众号平台共有,重在学习交流,不以任何盈利为目的,欢迎转载。

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。公众号内容中部分攻防技巧等只允许在目标授权的情况下进行使用,大部分文章来自各大安全社区,个人博客,如有侵权请立即联系公众号进行删除。若不同意以上警告信息请立即退出浏览!!!

敲敲小黑板:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。


查看原文:《一款JS逆向神器-RaindropEcho》

评论:0   参与:  0