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

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

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

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

工具目录

分类

查看所有分类
Loading categories
SealSecurityAssignment — 研究漏洞 CVE-2023-26136 | Kitploit
工具/GitHubGitHub/cucumberanorsncompany/sealsecurityassignment
静态分析漏洞分析代码分析漏洞利用Web安全学习与教育
GitHubcucumberanorsncompany/sealsecurityassignment

SealSecurityAssignment

研究漏洞 CVE-2023-26136

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
12年前尚未审核

SealSecurityAssignment

研究漏洞 CVE-2023-26136

漏洞研究:CVE-2023-26136

描述:

tough-cookie 包在 4.1.3 之前的所有版本存在原型污染漏洞,原因是在使用 CookieJar 的 rejectPublicSuffixes=false 模式时对 Cookie 处理不当。该问题源于对象初始化方式。

https://nvd.nist.gov/vuln/detail/CVE-2023-26136

引言:

什么是原型污染?

JavaScript 中有对象的概念,类似于字典。对象可以包含一组不同类型的变量(如字符串、布尔值、整数等),变量名是键,其值是值,如果沿用字典和对象的类比。更准确地说,对象本身类似于字典数据结构,每个变量类似于键值对。对象还有一个关键字 __proto__,它允许通过修改对象的原型来向对象添加额外的变量。原型污染是一种攻击,攻击者通过 __proto__ 关键字向对象添加额外变量来污染其对象。下面与浏览器控制台的交互展示了该攻击。

图像

正如所见,我们有两个用户:admin1 和 user1。admin1 对象有一个布尔变量 "isAdmin",设置为 true。User1 根本没有这个变量。在第 7 行,我们将 isAdmin 变量添加到 user1 的原型中,尽管从第 10 行可以看出该变量并未被添加到 user1 对象本身,但当我们检查 user1.isAdmin 的值时,控制台这次给出了肯定的响应。这是因为 user1 继承了其原型的属性。

图像

另外值得一提的是,原型本身也是一个对象,它反过来从其原型继承属性和方法,从而形成原型链。该链以 null 原型结束,因此防止原型污染的一个合理方法是使我们正在操作的对象显式继承自 null 原型。

什么是 Cookie?

Cookie(通常称为互联网 cookie)是带有少量数据(如用户名和密码)的文本文件,用于在网络上标识您的计算机。特定的 cookie 用于识别特定用户并改善他们的网页浏览体验。

感谢卡巴斯基提供:https://www.kaspersky.com/resource-center/definitions/cookies

什么是 CookieJar?

CookieJar 是用于存储 cookie 的对象。

任务:

漏洞:

根据漏洞描述,该问题源于 Tough-Cookie 初始化 Cookie 的方式。由于 Cookie 是对象,理论上它们至少容易受到原型污染攻击。

风险:

通过能够篡改对象,特别是通过对象原型篡改 cookie,攻击者可能未经授权访问数据、执行远程代码、造成拒绝服务、如果网站依赖 cookie 管理会话则劫持会话,并提取 cookie 本身中的敏感数据。

补丁:

补丁 在文件 memstore.js 中完成。根据 问题跟踪 以及在 4.1.3 版本中引入的补丁,为了修补该漏洞,我们需要将 cookie 存储在映射中或创建 this.idx 对象。通过使用 this.idx = Object.create(null); 而不是 this.idx = {} 来创建 this.idx,我们实践了我在引言中关于如何防止原型污染的建议,即继承自 null 原型,并切断原型链。

测试漏洞(index.js):

Snyk 已经发布了针对所讨论漏洞的概念验证(PoC)。我在此基础上构建了 index.js。用 try-catch 逻辑封装以捕获可能出现的异常,添加了额外输出来跟踪测试进度,并最终得到了所需的输出(例如 "EXPLOITED SUCCESSFULLY" 或 "EXPLOITED FAILED")。 当运行命令: npm install [email protected] && node index.js 我们得到以下输出:

图像

当运行命令: npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js 我们得到以下输出:

图像

在两种场景下(运行已发布的 2.5.0 版本和运行我修补的版本),我们都成功设置了普通 cookie 以及被利用的 cookie,但在修补版本中,我们无法访问被利用的 cookie。

总结:

在此任务中,我了解了原型污染攻击,学习了 JavaScript 对象,并接触到了 Tough-Cookie 包。

下载工具