开源项目 | BurpSuite插件:重写一个burpJsEncrypter

  • A+
所属分类:安全工具

写在前面

先说说这个项目为什么会出现。c0ny1师傅写的jsEncrypter其实已经能满足日常需求,我本人也是因为这个项目成为c0ny1师傅的"粉丝"的。

开源项目 | BurpSuite插件:重写一个burpJsEncrypter

使用过的师傅都知道这个项目依赖于phantomjs,别人我不知道,我自己老是忘记phantomjs的二进制我放哪儿了,而且每次启动啥的都比较麻烦。

在学习Java的过程中了解到官方在JDK1.6添加了新的ScriptEngine类,允许用户直接执行js代码,也就是说调用phantomjs这件事可以,但是没必要。

代码编写

看看核心的实现方法:

开源项目 | BurpSuite插件:重写一个burpJsEncrypter

开源项目 | BurpSuite插件:重写一个burpJsEncrypter

调用了加载到内存中的burpJsEncrypter函数,代码如下:

开源项目 | BurpSuite插件:重写一个burpJsEncrypter

是不是很简单...
再说说开发过程中遇到的最大的坑。
在代码中调试时使用System.getProperty("user.dir")获取当前路径时完全OK的,但是加载到内存后再获取就会变成:
/var/folders/tg/z5wcq7jx3s526hykwz0pz2v00000gp/T/burp8120677802571630018.tmp/22js/

导致遍历js文件一致失败。

如何使用

1.将本项目的js目录下的js文件复制到用户目录下的/burp/jsFile目录:

开源项目 | BurpSuite插件:重写一个burpJsEncrypter

文件名咋命名完全无所谓,但是main.js中burpJsEncrypter函数一定要有,需要人工修改的加密逻辑也就是注释中间的内容:

//Java调用的主函数function burpJsEncrypter(rawPayload){
var encryptedPayload;

//===============加密开始=================
encryptedPayload = hex_md5(rawPayload);
//===============加密结束=================
return encryptedPayload;}

如上面的代码中的hex_md5函数是加载到内存中的其他js文件中的函数。实战中只需要把页面中所有涉及加密的js文件下载到这个目录即可。

2.设置Payload处理:

开源项目 | BurpSuite插件:重写一个burpJsEncrypter
开源项目 | BurpSuite插件:重写一个burpJsEncrypter

选完再开始爆破即可。

开源项目 | BurpSuite插件:重写一个burpJsEncrypter

明文在哪儿看?


开源项目 | BurpSuite插件:重写一个burpJsEncrypter

支持再Repeater中加密?

选中要加密的字段,右键选择burpJsEncrypter菜单即可。

开源项目 | BurpSuite插件:重写一个burpJsEncrypter

重要提醒

如果c0ny1师傅那个插件你不会耍的画这个插件你估计也不会耍的,最核心的问题都是找页面中的加密逻辑,然后复制出来运行而已。

即兴开发,Enjoy it~~

本文始发于微信公众号(米斯特安全团队):开源项目 | BurpSuite插件:重写一个burpJsEncrypter

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: