Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-44906 — CVE-2021-44906的概念验证,演示了通过Function.prototype绕过在minimist中的原型污染,包含可运行的示例以及漏洞利用链的详细技术分析。 | Kitploit
工具/GitHubGitHub/nevermoe/cve-2021-44906
漏洞分析代码分析漏洞利用Web应用程序漏洞利用学习与教育
GitHubnevermoe/cve-2021-44906

CVE-2021-44906

CVE-2021-44906的概念验证,演示了通过Function.prototype绕过在minimist中的原型污染,包含可运行的示例以及漏洞利用链的详细技术分析。

查看仓库
2年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-44906

原出处:https://github.com/Marynk/JavaScript-vulnerability-detection/blob/main/minimist%20PoC.zip

运行

root@kitploit:~
npm run hack

然后你会看到任意函数的 done 属性被改为 true。 命令行 node index.js --_.concat.constructor.prototype.done true 的解释:

  • -- 是命令行参数中常用的连字符标记。
  • _ 是 minimist 中的内置键:https://github.com/minimistjs/minimist/blob/v1.2.5/index.js#L37
  • .concat.constructor.prototype.done true 会将 _.concat.constructor.prototype.done 设置为 true。 因为 _.concat.constructor 是 Function 类型,所有 Function 的原型都会被添加一个名为 done 的属性。

原型链之所以这么长,是因为在之前的修复中,开发者禁止了 __proto__、Arrary.prototype、Object.prototype、Number.prototype 和 String.prototype。因此我们必须使用拥有 prototype 属性且未被列入黑名单的 constructor。

另一个例子:

root@kitploit:~
npm run hack2

然而,在上述两个例子中,我们只能篡改值,而不能篡改函数的定义。

原因

在针对 CVE-2020-7598(1.2.2 版本)的修复中,以及 1.2.3 版本中,开发者通过检查 __proto__、Arrary.prototype、Object.prototype、Number.prototype、String.prototype 修复了一些漏洞, 但他们忘记检查 Function.prototype。这就是为什么这个漏洞只能影响 Function 的属性。 针对此 CVE 的修复中,开发者同时检查了 Function.prototype 和 constructor:https://github.com/minimistjs/minimist/blob/v1.2.6/index.js#L73

下载工具