重写一个burpJsEncrypter
Github:https://github.com/TheKingOfDuck/burpJsEncrypter
写在前面
先说说这个项目为什么会出现。
c0ny1师傅写的jsEncrypter其实已经能满足日常需求,我本人也是因为这个项目成为c0ny1师傅的"粉丝"的。
使用过的师傅都知道这个项目依赖于phantomjs
,别人我不知道,我自己老是忘记phantomjs
的二进制我放哪儿了,而且每次启动啥的都比较麻烦。
在学习Java的过程中了解到官方在JDK1.6
添加了新的ScriptEngine
类,允许用户直接执行js
代码,也就是说调用phantomjs
这件事可以,但是没必要。
代码编写
看看核心的实现方法:
调用了加载到内存中的burpJsEncrypter
函数,代码如下:
是不是很简单...
再说说开发过程中遇到的最大的坑。
在代码中调试时使用System.getProperty("user.dir")
获取当前路径时完全OK的,但是加载到内存后再获取就会变成:
/var/folders/tg/z5wcq7jx3s526hykwz0pz2v00000gp/T/burp8120677802571630018.tmp/22js/
导致遍历js
文件一致失败。
如何使用
1.将本项目的js目录下的js
文件复制到用户目录下的/burp/jsFile
目录:
文件名咋命名完全无所谓,但是main.js中burpJsEncrypter
函数一定要有,需要人工修改的加密逻辑也就是注释中间的内容:
//Java调用的主函数
function burpJsEncrypter(rawPayload){
var encryptedPayload;
//===============加密开始=================
encryptedPayload = hex_md5(rawPayload);
//===============加密结束=================
return encryptedPayload;
}
如上面的代码中的hex_md5函数是加载到内存中的其他js文件中的函数。实战中只需要把页面中所有涉及加密的js文件下载到这个目录即可。
2.设置Payload处理:
选完再开始爆破即可。
明文在哪儿看?
支持再Repeater中加密?
选中要加密的字段,右键选择burpJsEncrypter
菜单即可。
重要提醒
如果c0ny1师傅那个插件你不会耍的画这个插件你估计也不会耍的,最核心的问题都是找页面中的加密逻辑,然后复制出来运行而已。
即兴开发,Enjoy it~~
也无风雨也无晴