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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-39275 — CVE-2026-39275 - Cockpit CMS中的存储型XSS导致账户接管 | Kitploit
工具/GitHubGitHub/securify-ai/cve-2026-39275
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试学习与教育
GitHubsecurify-ai/cve-2026-39275

CVE-2026-39275

CVE-2026-39275 - Cockpit CMS中的存储型XSS导致账户接管

查看仓库
112个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-39275 - Cockpit CMS中的存储型XSS导致账户接管

CVE CWE-79 Severity CVSS

注意:在公开发布前已负责任地向Cockpit CMS维护者披露并已被修复。

CVE IDCVE-2026-39275
漏洞类型存储型跨站脚本 (XSS) → 账户接管
CWECWE-79
受影响版本Cockpit CMS <= 2.13.5
已修复版本d70dc50
CVSS 3.18.4 (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N)
报告者Rohith - SecurifyAI 安全顾问

摘要

内容集合列表视图中存在一个存储型XSS漏洞,允许任何具有内容写入权限的用户(API密钥或经过身份验证的编辑器会话)注入任意JavaScript代码,该代码会在查看受影响集合项目列表的任何管理员或编辑器的浏览器中执行。

Cockpit的会话令牌完全可以从JavaScript访问 - 会话cookie在设置时未使用HttpOnly标志,并且CSRF JWT暴露在全局变量App.csrf和<html>的data-csrf属性中。这使得注入的脚本能够读取这两个令牌并在外部重放它们,从而绕过CSRF保护,实现完全的会话劫持和账户接管。


根因

字段 render() 的输出被传递到Vue的 v-html 指令,而未进行输出编码。

文件行号

概念验证

1. 注入payload(低权限写入API密钥)

root@kitploit:~
curl -X POST "http://localhost:8080/api/content/item/posts" \
  -H "Content-Type: application/json" \
  -H "api-key: USR-<attacker-api-key>" \
  -d '{
    "data": {
      "title": "Innocent Looking Post",
      "tags": [
        "",
        ""
      ],
      "body": "Just a regular post.",
      "_state": 1
    }
  }'

2. 触发执行

管理员或编辑器导航到 /content/collection/items/posts。标签渲染器返回存储的字符串,v-html 将其解析为真实的 `` 元素,伪造的 src 失败,从而触发 onerror 处理程序。

3. 令牌窃取

现在两个令牌都可读——通过 document.cookie 读取会话cookie,通过 App.csrf / document.documentElement.getAttribute('data-csrf') 读取CSRF JWT。武器化的payload将两者外泄:

root@kitploit:~
图片

4. 会话重放

攻击者重放窃取的cookie和CSRF令牌,获得完全经过身份验证的管理员访问权限——然后可以创建管理员帐户、更改凭据或修改内容。


影响

低权限编辑器(或任何内容写入API密钥持有者)可以升级为完全管理员。payload被存储,并在每个查看列表的管理员/编辑器处触发,构成持久性、多受害者的沦陷。


修复方案

主要修复 - 在渲染输出到达 v-html 之前,使用现有的 App.utils.stripTags() 辅助函数进行清理。

field-tags.js:

root@kitploit:~
value = App.utils.stripTags(value); // sanitize before v-html

field-select.js:

root@kitploit:~
return App.utils.stripTags(value); // sanitize before v-html

纵深防御 - 强化会话cookie:

root@kitploit:~
ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 1);   // over HTTPS
ini_set('session.cookie_samesite', 'Strict');

仅使用 HttpOnly 是不够的——XSS仍然可以在受害者的已认证浏览器上下文中运行——因此输出编码是必要的修复措施。


披露时间线

日期事件
2026-03-29漏洞报告给Cockpit CMS维护者
2026-03-29维护者发布修复
2026-04-04请求CVE

本材料在协调披露后出于教育和防御目的发布。仅可用于您拥有的或明确授权测试的系统。

下载工具
角色
modules/App/assets/vue-components/fields/field-tags.js25 - 34标签渲染器 - 无编码
modules/App/assets/vue-components/fields/field-select.js26选择渲染器 - 无编码
modules/Content/views/collection/items.php149v-html 接收点
2026-06-23分配CVE-2026-39275
<pub date>公开发布