一、工具概述
日常渗透过程中,经常会碰到一些网站需要破解其 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'); // 上面自己编写加密函数 // 写加密函数的加载方式 functionencryptFunction(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); }
五、项目地址
https://github.com/tingyusys/RaindropEcho
(仅分享学习研究,如侵权请联系删除。)
文章来源:HACK之道
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END













暂无评论内容