JS逆向-安全辅助项目&接口联动&JSRpc进阶调用&BP插件autoDecode&JsEncrypter(下)
➢ JS逆向-项目-项目联动&自动接口&Burp发包
#JSRpc进阶
当我们遇到一些前端加密的时候,通常我们会去逆向JS,找到加密函数,然后使用burp插件或者python实现加密,这样我们还需要扣一些细节去补环境,下面介绍利用JSRPC的方法(只需要找到加密函数)实现加密JSRPC就是远程调用协议,简单来说就是我们可以本地编写代码去调用浏览器的JS加密函数,我们就不需要去考虑函数的具体逻辑了。
1、植入JSEnv并启动ws服务端
执行:resouces/JsEnv_Dev.js
执行:window_amd64.exe
2、本地替换加密函数JS文件
添加连接JSRPC和注册接口并调用加密
//连接JSRPC
var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=xiaodi&name=xiaodisec");
//注册接口并调用加密
demo.regAction("pass",function(resolve,param){
resolve(encrypt.encrypt(param));
})
****需要在控制台中添加JsEnv_Dev.js
3、访问注册接口测试加密
http://127.0.0.1:12080/go?group=xiaodi&name=xiaodisec&action=pass¶m=123456
#JSRpc+autoDecoder
1、正常完成上述JSRpc操作
2、autoDecoder配置接口
3、编写项目模版py监听接受
4、请求接口路由测试加解密
注意:data指向和jsrpc一致,debug模式确定开启
参考:https://forum.butian.net/share/2889
#JsEncrypter
1、下载phantomjs并设置环境变量
https://phantomjs.org/download.html
2、BurpSuite加载jsEncrypter插件
https://github.com/c0ny1/jsEncrypter/releases
3、对逆向的加密算法提取JS文件及代码
JSEncrypt.js
var r = new JSEncrypt, o = "xxxxxxxxx";
r.setPublicKey(o);
var s = r.encrypt(password)
return s
4、将代码写入到模版中(引用JS和调用加密)
var wasSuccessful = phantom.injectJs('JSEncrypt.js');
function encrypt(password){
var r = new JSEncrypt,
o = "xxxxxxxxx";
r.setPublicKey(o);
var s = r.encrypt(password)
return s
}
// 处理函数
function js_encrypt(payload){
/**********在这里编写调用加密函数进行加密的代码************/
var newpayload=encrypt(payload)
/**********************************************************/
return newpayload;
}
5、运行刚写入的模版文件后插件连接测试
phantomjs xxxxx.js
6、正常设置发包后选择引用插件选项