重写一个burpJsEncrypter

Github:https://github.com/TheKingOfDuck/burpJsEncrypter

写在前面

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

-w814

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

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

代码编写

看看核心的实现方法:

F1C1AFDB-4EE7-4AB7-86BE-FB54A7462B33
49ADE7CC-F87A-4EFF-A6DD-3A7AD5916D6F

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

B43B9A52-8508-4CC2-B058-C06AB5D5B79D

是不是很简单...

再说说开发过程中遇到的最大的坑。

在代码中调试时使用System.getProperty("user.dir")获取当前路径时完全OK的,但是加载到内存后再获取就会变成:

/var/folders/tg/z5wcq7jx3s526hykwz0pz2v00000gp/T/burp8120677802571630018.tmp/22js/

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

如何使用

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

-w834

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

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

	var encryptedPayload;


	//===============加密开始=================

	encryptedPayload = hex_md5(rawPayload);

	//===============加密结束=================

	return encryptedPayload;
}

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

2.设置Payload处理:

08B84570-D584-4265-9505-27D7F5821E24
-w647

选完再开始爆破即可。

-w973

明文在哪儿看?

-w628

支持再Repeater中加密?

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

-w519

重要提醒

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

即兴开发,Enjoy it~~

一个热爱域渗透/WAF绕过/免杀/代码审计/工具开发的憨批