jsEncrypter插件+phantomjs自动加密爆破实战
目录
安装
下载好之后解压,把phantomjs的地址设置在环境变量中:
- 系统——高级系统设置——环境变量——系统变量——双击Path——新建填入地址
然后在Win + R输入cmd打开命令行,输入phantomjs,弹出如下界面说明设置成功:
打开burpsuite,在extensions模块添加jsEncrypter插件:
实操使用
打开上海交通大学交我算平台 https://account.hpc.sjtu.edu.cn/#/login
账号密码输入123456,可以看到密码被加密了:
打开调用栈可以看见:
一连串(因为栈的特性)从下往上执行,我们需要找到它加密的地方。
这时候你会问了,同学同学这么多你怎么找到加密的在哪里啊?一个一个找吗?当然不是了!
这个时候需要了解客户端处理数据的顺序:
它需要接收数据,然后数据加密,最后发送到服务端,服务端解密,然后判断逻辑。
选中中间那个打上断点,发现:
上面就是我们的账号和密码。解读一下代码:
i = n.emailInput.value;
a = n.pwdInput.value;获取我们的账号和密码,这个时候显示的还是没加密的,说明加密就在下面,一步步下去:
var r = new JSEncrypt, o = C.RSACODE;
r.setPublicKey(o);
var s = r.encrypt(a);设置个变量r,new一个对象,r为设置的公钥,s就是加密后的a也就是密码。变成了Rsv一串就是加密后的密码。
测试一下:
能正常加密,我们需要找到它加密算法实现的地方。追踪加密对象,找到它是在这实现的:
我们把全部代码复制下来,然后加上它调用的那样我们自己写个调用,运行试一下:
正常运行。
然后我们需要配置一下jsEncrypter,把这个加密算法文件放在该目录下:
打开server编辑如下:
解释一下这段代码:传一个payload,把这个payload加密后赋值给newpayload,然后返回newpayload。
启动与爆破
启动:
打开burpsuite:
成功生成。
这时候我们抓个包,发送到intruder爆破模块,选好参数然后和字典就可以实行爆破了:
可以看到我们的payload都是加密之后的,这样发到服务端能正常解密不会不符合逻辑。(可以用来已知用户进行爆破密码,这里演示一下所以用123456)
爆破流程总结
- 安装phantomjs并配置环境变量
- 安装jsEncrypter插件
- 分析目标前端加密逻辑,提取加密算法
- 配置jsEncrypter服务,放置加密算法
- burpsuite中添加插件,抓包并爆破
- 爆破payload自动加密,服务端可正常识别
---


















12
@12122 : qw
123
@12122 : 牛
合理