0x00 前言
最近在对某个客户系统进行测试时,偶然发现系统通过AES算法对用户名和密码进行了加密。
众所周知,前端是使用js对用户名和密码进行的加密然后后端再对其进行解密,js就是JavaScript语言,可以说是目前互联网上最流行的脚本语言。js的用途之广也会带了一些问题,js泄露敏感信息,例如后台路径、管理员信息、手机号、邮箱等等。相信很多人在测试过程中碰到登录界面第一反应是爆破,没有加密的还好,如果碰到了AES或者DES加密就很头疼。今天我们的主题就是通过js获取其中的加密算法并且逐渐实现自动化。
0x01 常见的加密方式
1、线性散列算法MD5 SHA1。
2、对称性加密算法 AES DES。
3、非对称性加密算法 RSA。
在加密方式上一般选择前两种的比较多,很少有使用非对称加密,所以我们一般遇到的加密方式为前两种。
0x02 寻找加密算法
在测试过程中,查看源码时其发现加密算法为AES,如下图:
不单单是知道了其加密算法为AES,还发现了加密用的密码和偏移量,这样我们就可以自己进行加密。
0x03 加密插件
到这里第一想法是用python写个脚本对字典进行加密然后使用burp suite进行爆破,但是就在这个时候我看到了 c0ny1 大佬的加密传输爆破插件jsEncrypter,链接在最下方。
这里小伙伴们可以自行下载编译,然后把插件加载到burp suite中,如下图:
0x04 增加AES
这里加载成功后,使用phantomjs.exe运行然后连接就可实现快速加密,但是美中不足的是c0ny1 大佬并没有写AES的加密算法所以这里需要自己动手进行操作,这里c0ny1 大佬给了我们一个固定的模板
/**
* author: c0ny1
* date: 2017-12-16
* last update: 2020-03-03
*/
var fs = require('fs');
var webserver = require('webserver');
server = webserver.create();
var logfile = 'jsEncrypter.log';
var host = '127.0.0.1';
var port = '1664';
/* 1.在这引入实现加密所有js文件,注意引入顺序和网页一致 */
//var wasSuccessful = phantom.injectJs('crypto-js.js');/* 引入实现加密的js文件*/
// loadScript("script-2.js");
// loadScript("script-n.js");
/**********************************************/
function loadScript(scriptName) {
var isSuccess = phantom.injectJs(scriptName);
if(isSuccess){
console.log("[*] load " + scriptName + " successful")
}else{
console.log("[!] load " + scriptName + " fail")
console.log("[*] phantomjs server exit");
phantom.exit();
}
}
// var key = CryptoJS.enc.Utf8.parse("PBLUREBUWNXCXHRQ"); //16位
// var iv = CryptoJS.enc.Utf8.parse("1234567812345678");
function jsEncrypt(burp_payload){
var new_payload;
/* 2.在这里编写调用加密函数进行加密的代码,并把结果赋值给new_payload */
// 编辑 加密函数的位置
/*********************************************************/
return new_payload;
}
这里展示一小部分
其中主要的内容在于加密函数的代码,和引入加密的js文件。而且我们上面在js文件中找到了AES的密码和偏移量所以我们可以直接进行修改
var wasSuccessful = phantom.injectJs('crypto-js.js');
引用的加密文件这里是通用的(从sha512加密的文件中借用一下"crypto-js.js")。
function jsEncrypt(burp_payload){`
`var new_payload;`
`/* 2.在这里编写调用加密函数进行加密的代码,并把结果赋值给new_payload */`
`// 编辑 加密函数的位置`
`const key = CryptoJS.enc.Utf8.parse("ihaierForTodoKey"); //16位`
`const iv = CryptoJS.enc.Utf8.parse("ihaierForTodo_Iv");`
`const srcs = CryptoJS.enc.Utf8.parse(burp_payload);`
`encrypted = CryptoJS.AES.encrypt(srcs, key, {`
`iv: iv,`
`mode: CryptoJS.mode.CBC,`
`padding: CryptoJS.pad.Pkcs7`
`});`
new_payload =decodeURIComponent(CryptoJS.enc.Base64.stringify(encrypted.ciphertext));
/*********************************************************/
return new_payload;
`}`
这里多加了base64加密,需要hex的话可以去掉base64。
当然其他的加密算法通用,如下:
base 64:
var wasSuccessful = phantom.injectJs('base64.js');/*引入实现加密的js文件*/
// 处理函数
function js_encrypt(payload){
var newpayload;
/**********在这里编写调用加密函数进行加密的代码************/
var b = new Base64();
newpayload = b.encode(payload);
/**********************************************************/
return newpayload;
}
DES:
var wasSuccessful = phantom.injectJs('des.js');/*引入实现加密的js文件*/
// 处理函数
function js_encrypt(payload){
var newpayload;
/**********在这里编写调用加密函数进行加密的代码************/
//var b = new Base64();
newpayload = strEnc(payload,"key","para0","para1");
/**********************************************************/
return newpayload;
}
sha512:
var wasSuccessful = phantom.injectJs('crypto-js.js');/*引入实现加密的js文件*/
// 处理函数
function js_encrypt(payload){
var newpayload;
/**********在这里编写调用加密函数进行加密的代码************/
newpayload = CryptoJS.SHA512(payload);
/**********************************************************/
return newpayload;
}
0x05 加密测试
然后进行测试,效果如下:
成功进行加密。
当然在爆破的过程中我们还可以采用更有效率方法,在使用phantomjs.exe运行js且确保burp suite和它连接上时,我们可以选择intruder模块中的加密方式为Invoke Burp extension(插件外援),如下图:
0x06 自动化加密
然后进行爆破。如下图:
最终实现全自动化。
0x07 结语
AES的加密一共有五种模式分别为CBC、ECB、CFB、OFB、CTR,本次js中AES的加密的工作模式为CBC,其他的工作模式也可用相同方式进行解密。如果有小伙伴们遇到类似情况可以去翻一翻JS说不定有意想不到的惊喜,细心点总会有收获。最后文中所有工具和插件都已打包,关注公众号回复“AES”获取下载地址。
0x08 参考链接
https://github.com/c0ny1/jsEncrypter
E
N
D
关
于
我
们
Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室,近三年来在网络安全技术方面开展研发项目60余项,获得各类自主知识产权30余项,省市级科技项目立项20余项,研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。对安全感兴趣的小伙伴可以加入或关注我们。
我知道你在看哟
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论