jsEncrypter的Node.js版server脚本

admin 2021年4月2日20:38:00评论41 views字数 2583阅读8分36秒阅读模式

最近在公众号发现有小伙伴在使用nodejs调用加密脚本对密码进行加密暴力破解。于是打算给Burp插件jsEncrypter添加nodejs版本的server脚本。目前已经更新该脚本到项目中,感兴趣的小伙伴可以去试试效果。

Node.js版server脚本代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/**
* author: c0ny1
* date: 2018-4-14
* file: nodejs_server.js
*/

var http = require('http');
var querystring = require('querystring');

var host = '127.0.0.1'; //地址
var port = '1664'; //端口

//require('your_encrypte_script.js'); /*引入实现加密的js文件*/

require('./sha384.js');

// 处理函数
function js_encrypt(payload){
var newpayload;
/**********在这里编写调用加密函数进行加密的代码************/
var pwdhash=CryptoJS.SHA384(payload);
newpayload = pwdhash.toString();
/**********************************************************/
return newpayload;
}


var server = http.createServer(function(request,response){

if(request.method === 'POST'){
var postData = '';
request.on('data',function(params){
postData += params;
});

request.on('end',function(){
var dataString = postData.toString();
var dataObj = querystring.parse(dataString);
var payload = dataObj.payload;
var encrypt_payload = js_encrypt(payload);
console.log('[+] ' + payload + ':' + encrypt_payload);

response.statusCode = 200;
response.write(encrypt_payload);
response.end();
});
}else{
response.statusCode = 200;
response.write("^_^nrhello jsEncrypter!");
response.end();
}
});

server.listen(port, host, function () {
console.log("[!] ^_^");
console.log("[*] nodejs server start!");
console.log("[+] address: http://"+host+":"+port);
});

nodejs版server脚本使用

nodejs版本的server脚本和phantomjs版本基本一样,不过nodejs版本的使用需要多一个步骤。下面我们搭建起jsEncrypter项目自带的实验环境,并通过演示md5加密传输来说明脚本如何使用。

1.修改调用需要调用的加密脚本

在加密脚本的末尾加入两行代码。代码格式如下:

1
2
global.function = function //将需要调用的函数或对象编程全局
exports.function = function //使用export来暴露接口,不然nodejs无法找到我们的加密方法

我们查看例子中的页面源码,可知前端引入md5.js实现对数据的加密,所以我们把md5.js保存到本地。然后再看看前端调用加密函数的代码是什么?

所以我们在md5.js结尾加入这两行代码。

2.编写调用脚本

在nodejs_server.js中引入加密脚本,并在js_encrypt方法中编写调用加密函数进行加密。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
......
......
......
require('./md5.js'); /*引入实现加密的js文件*/

// 处理函数
function js_encrypt(payload){
var newpayload;
/**********在这里编写调用加密函数进行加密的代码************/
newpayload = hex_md5(payload);
/**********************************************************/
return newpayload;
}
......
......
......

3.执行脚本

1
node nodejs_server.js

最后补充一点,测试环境中sha384加密例子有点特殊。sha384前端调用加密函数的代码为

1
en_password = CryptoJS.SHA384(password);

所以在sha384.js结尾应加入这两行代码

1
2
global.CryptoJS = CryptoJS;
exports.CryptoJS = CryptoJS;

而不是

1
2
global.CryptoJS = SHA384;
exports.CryptoJS = SHA384;

总结

nodejs版本的server在使用过程需要修改原加密脚本,比phantomjs版本号稍微繁琐一点。大家看自己的习惯吧,萝卜青菜各有所爱!

文章来源于gv7.me:jsEncrypter的Node.js版server脚本

相关推荐: 那些值得我们去研究的工具

当下网络安全的工具层出不穷,质量参差不齐。大没必要到处收集。那些经得住时间考验的工具都是流传的经典。把它们用熟了,自然以一当百。它们当中的一些开源的,最好去阅读一下源码。那些设计,那些编码都体现着hack编程精华。吾等自当研习工具中的一招一式! firefox…

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月2日20:38:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   jsEncrypter的Node.js版server脚本https://cn-sec.com/archives/318040.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息