Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cakephp-cookie-suffix — CakePHP 5.4.2 - 高危 - 远程 - Cookie - Http Client cookie jar 将域名作为正则后缀进行匹配 | Kitploit
工具/GitHubGitHub/abraxas/cakephp-cookie-suffix
漏洞分析漏洞利用Web应用程序漏洞利用信息收集Web安全论文与研究
GitHubabraxas/cakephp-cookie-suffix

cakephp-cookie-suffix

CakePHP 5.4.2 - 高危 - 远程 - Cookie - Http Client cookie jar 将域名作为正则后缀进行匹配

查看仓库
74天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Abraxas Labs - cakephp-cookie-suffix

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  cakephp-cookie-suffix

cakephp-cookie-suffix

类别: Cookie 泄露 / 植入 可达性: 远程

CakePHP 5.4.2 (887b641) - Cake Software Foundation

CookieCollection::findMatchingCookies 使用了 preg_match('/' . preg_quote($domain) . '$/', $host)。这是字符串后缀匹配,而非 RFC 6265 的域名匹配。为 api.partner.com 设置的 Cookie 会被发送到 evilapi.partner.com。为 bank.com 设置的 Cookie 会被发送到 notbank.com。

Cookie::createFromHeaderString() 还会复制 Set-Cookie 的 Domain=,且不检查响应主机。来自 attacker.test 的 addFromResponse 携带 Domain=victim.internal 会存储该 Cookie,并在之后将其附加到 victim.internal。

一个使用 Cake\Http\Client 且默认 Cookie jar 跨多个主机的应用,可能会将合作伙伴的会话 Cookie 泄露给后缀混淆的同级域名,或在获取攻击者 URL 后将 Cookie 植入内部主机。 other.com 不匹配。这不是浏览器 Cookie 漏洞。原版 cakephp/app 自身不会调用第二个主机。

ID暂无 CVE
类别Cookie 泄露 / 植入(正则后缀域名匹配)
可达性远程(应用跨主机使用 Http Client jar)
CWECWE-565, CWE-201
CVSS高危:8.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
产品CakePHP
受影响版本5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
认证应用跨主机使用 Cake\Http\Client 且采用默认 Cookie jar
许可证GNU Affero GPL v3.0
实验环境仅限 127.0.0.1

攻击者能做什么

需要一个在多个主机之间保留 Cake\Http\Client Cookie 的应用程序(OAuth、webhook、用户提供的 URL、第二个 API)。

权限方法 / 汇聚点实验验证或推断
将存储的 Cookie 泄露给后缀混淆的同级域名在存在域为 api.partner.com 的 Cookie 后,对 https://evilapi.partner.com/ 调用 CookieCollection::addToRequest实验验证。请求的 Cookie 为 sid=SECRET。RFC 6265 不会匹配
对可注册后缀的相同泄露Cookie 域为 bank.com,请求主机为 notbank.com实验验证。请求的 Cookie 为 sid=SECRET
阴性对照请求主机 other.com实验验证。无 Cookie 头
为内部主机植入 Cookie从 https://attacker.test/ 对 Set-Cookie: sid=x; Domain=victim.internal 调用 addFromResponse实验验证。存储的域为 victim.internal;下一次对该主机的请求会发送 sid=x
在下一次 Client 调用中实施会话固定 / 窃取合作伙伴会话将植入或泄露的 sid 用作 API 会话推断。实验止步于 Cookie 头预言机
同主机发送仍然有效Cookie 域为 api.partner.com,主机为 api.partner.com实验验证。符合预期,并非漏洞

已排除的遗留问题:other.com 不匹配。浏览器 Cookie jar 不存在此漏洞。无 shell。并非对骨架应用的未认证 RCE。

我是如何发现的

在 GHSA-2qh5、GHSA-fxf7、GHSA-vjqc 以及 5.4.2 的 filename= 说明之后,我锁定了 cakephp/cakephp 5.4.2。Http Client 的 Cookie 匹配是一个正则后缀:

$pattern = '/' . preg_quote($domain, '/') . '$/';
if (!preg_match($pattern, $host)) {
    continue;
}

addFromResponse 仅将请求主机作为默认值传入。来自 Set-Cookie 的 Domain= 属性会覆盖它并被存储。

已记录的弯路:将此视为浏览器 Cookie 漏洞;声称 other.com 也会匹配;在没有跨主机使用 jar 的应用的情况下,将 Cookie 头预言机夸大为账户接管。作秀:反弹 shell。

实验环境

python3 cakephp-cookie-suffix-Abraxas-Labs.py

或

cd lab
./run.sh

在 PHP 8.3 中 Git clone 标签 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)。回环预言机 HTTP 位于 127.0.0.1:19420。无需额外的 HTTP 源;预言机运行锁定版本的 CookieCollection。

  1. 添加 sid=SECRET 域 api.partner.com。对 https://evilapi.partner.com/ 调用 addToRequest -> Cookie: sid=SECRET。
  2. 对照 https://other.com/ -> 无 Cookie 头。
  3. 同主机 https://api.partner.com/ 仍发送 sid=SECRET。
  4. 额外后缀 bank.com -> https://notbank.com/ 发送 sid=SECRET。
  5. 从 https://attacker.test/ 对 Set-Cookie: sid=x; Domain=victim.internal; Path=/ 调用 addFromResponse。下一次 https://victim.internal/ 发送 sid=x。
SUCCESS cakephp-cookie-suffix suffix-leak=yes control-other=yes plant-domain=yes how=cakephp-5.4.2 CAKEPHP-COOKIE-SUFFIX-WITNESS

修复方案

RFC 6265 域名匹配(host === domain || str_ends_with($host, '.' . $domain))。当省略 Domain 时使用仅主机 Cookie。拒绝与请求主机不域名匹配的 Domain。拒绝公共后缀。

参考资料

  • github.com/cakephp/cakephp 标签 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • src/Http/Cookie/CookieCollection.php · src/Http/Cookie/Cookie.php
  • RFC 6265 域名匹配
  • CWE-565 · CWE-201

许可证

GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境。无担保。

下载工具