这是针对 CVE-2021-21315 的概念验证,该漏洞影响 Node.JS 的系统信息库(npm 包 "systeminformation")。npmjs.com/systeminformation
"务必检查或清理传递给 si.inetLatency()、si.inetChecksite()、si.services()、si.processLoad() 等服务参数……仅允许字符串,拒绝任何数组。字符串清理如预期正常工作。"
由于该漏洞说明不够清晰(依我之见),我决定基于有漏洞版本的 systeminformation 编写一个小应用。 PoC 包含:
复现步骤:


这将会失败,因为字符串清理:

正如 CVE 详情所述:"清理如预期正常工作,拒绝任何数组 [...]"
这次,如果你查看 "name" 的值,它没有被清理——成功!看看命令是否被执行了
成功!我们的命令被执行了。 当然没人会在意 "pwn.txt",但潜在的攻击者可以:
"命令注入"听起来无伤大雅,但在某些条件下可能会造成巨大影响
该问题在 "systeminformation" 的 5.3.1 版本中已修复 致谢 https://www.huntr.dev/users/EffectRenan (他发现了该漏洞,但依我之见,他的 "PoC" 并未展示实际世界的影响)
此外,欢迎在 CTF 中使用此 PoC,但如果能注明漏洞发现者 EffectRean 和 PoC 创建者(我),那就太好了,干杯!
本项目仅可用于教育目的。未经授权对目标系统使用本软件是违法的,因滥用本软件造成的任何损失,作者概不负责。