dharmstm/CVE-2026-30503-OpenKM-6.3.12-Stored-XSS

GitHub: dharmstm/CVE-2026-30503-OpenKM-6.3.12-Stored-XSS

记录了 OpenKM v6.3.12 中存储型跨站脚本漏洞(CVE-2026-30503)的完整披露流程、根因分析与概念验证代码。

Stars: 0 | Forks: 0

# 🛡️ CVE-2026-30503 — OpenKM v6.3.12 中的存储型 XSS
![CVE 徽章](https://img.shields.io/badge/CVE-2026--30503-critical?style=for-the-badge&color=CC0000&logo=security&logoColor=white) ![OpenKM](https://img.shields.io/badge/Product-OpenKM%20v6.3.12-blue?style=for-the-badge) ![类型](https://img.shields.io/badge/Type-Stored%20XSS-orange?style=for-the-badge) ![披露](https://img.shields.io/badge/Disclosure-Responsible-green?style=for-the-badge) ![状态](https://img.shields.io/badge/Status-Published-brightgreen?style=for-the-badge) **发现者及报告人 [Dharmendra Kumar](https://github.com/) — 安全研究员** *网络安全 | 渗透测试 | 漏洞研究 | 负责任的披露*
## 📌 目录 - [概述](#-overview) - [CVE 详情](#-cve-details) - [受影响的产品](#-affected-product) - [漏洞描述](#-vulnerability-description) - [根本原因分析](#-root-cause-analysis) - [影响与风险评估](#-impact--risk-assessment) - [概念验证](#-proof-of-concept-poc) - [修复与建议](#-remediation--recommendations) - [披露时间线](#-disclosure-timeline) - [参考文献](#-references) - [关于研究员](#-about-the-researcher) ## 🔍 概述 本仓库记录了 **CVE-2026-30503** 的负责任的披露过程,这是一个在 **OpenKM v6.3.12** 中被发现的**存储型跨站脚本攻击 (XSS)** 漏洞。OpenKM 是一个在企业环境中广泛使用的开源文档管理系统。 该漏洞允许经过身份验证的攻击者将持久的恶意 JavaScript 注入到应用程序中,当任何用户(包括管理员)随后查看受影响的内容时,这些恶意代码就会在其浏览器上下文中执行。 ## 📋 CVE 详情 | 字段 | 详情 | |-------|---------| | **CVE ID** | CVE-2026-30503 | | **产品** | OpenKM | | **受影响版本** | v6.3.12 | | **漏洞类型** | 存储型跨站脚本攻击 (XSS) | | **CWE** | CWE-79:网页生成过程中输入的不当中和 | | **CVSS 向量** | CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N | | **研究员** | Dharmendra Kumar | | **披露类型** | 负责任的 / 协调的 | ## 📦 受影响的产品 **OpenKM** 是一个免费的开源文档管理系统 (DMS),提供一个用于管理、审计和分发商业文档的 Web 界面。它被全球的企业、政府机构和教育机构广泛使用。 - **产品名称:** OpenKM 文档管理系统 - **受影响版本:** `v6.3.12` - **供应商网站:** https://www.openkm.com - **类别:** 文档管理系统 (DMS) - **语言/技术栈:** Java (JSP/Spring) ## 🧨 漏洞描述 在 OpenKM v6.3.12 中发现了多个**存储型跨站脚本攻击 (XSS)** 漏洞。拥有低权限认证访问权限的攻击者可以将任意 JavaScript payload 注入到一个或多个输入字段中。这些 payload 会被**永久存储**在应用程序的后端,并在任何用户(包括管理员)访问受影响的页面或组件时**自动执行**。 与需要受害者点击特制链接的反射型 XSS 不同,存储型 XSS 的 payload 是**嵌入在应用程序本身中的**,这使其危险性更高且更具持久性。 ### 受影响的端点 - 文档元数据、备注或命名字段中由用户控制的输入字段 - 应用程序在将数据渲染回浏览器之前,未能对用户输入进行清理或编码 ## 🔬 根本原因分析 该漏洞源于应用程序输入处理管道中的三个复合弱点: ``` User Input ──► [NO Validation] ──► Stored in DB ──► [NO Output Encoding] ──► Rendered in Browser ──► XSS Executed ``` | 弱点 | 描述 | |----------|-------------| | ❌ **缺少输入验证** | 应用程序未对用户提供的字段中的特殊字符(`<`, `>`, `"`, `'`, `;`)进行限制或清理 | | ❌ **缺少输出编码** | 存储的值在未经 HTML 实体编码的情况下直接渲染到 HTML 中 | | ❌ **不安全的 DOM 渲染** | 用户提供的未经 CSP(内容安全策略)或清理控制的数据被嵌入到 DOM 上下文中 | ## 💥 影响与风险评估 成功利用此漏洞可能导致: | 风险 | 描述 | |------|-------------| | 🍪 **会话劫持** | 通过 `document.cookie` 窃取经过身份验证的会话 token | | 👤 **账户接管** | 危及受害者账户,包括管理员账户 | | 🔐 **凭据窃取** | 注入钓鱼表单以捕获登录凭据 | | 📤 **数据泄露** | 静默提取 DMS 中的敏感文档或元数据 | | ⚙️ **未授权操作** | 冒充受害者执行特权操作(删除/修改文档) | | 🎯 **定向攻击管理员** | 当管理员查看内容时,payload 会在管理面板中执行 | | 🔄 **蠕虫传播** | 自我复制的 XSS payload 可以在用户之间传播 | ## 🧪 概念验证 ### Payload 示例(通用) ``` // Basic PoC — demonstrates script execution // Session token exfiltration // Keylogger injection ``` ### 复现步骤 1. 使用一个低权限认证账户登录 OpenKM v6.3.12 2. 导航到易受攻击的输入字段(例如,文档元数据/备注/标题字段) 3. 注入 XSS payload,例如 `` 4. 保存/提交该条目 5. 以其他用户(或管理员)身份登录并导航到受影响的资源 6. 观察 JavaScript payload 在受害者的浏览器上下文中执行 ## 🛠️ 修复与建议 ### 致开发者 / 供应商 | 建议 | 实施方案 | |---------------|----------------| | ✅ **输入验证** | 将允许的字符列入白名单;拒绝或剥离所有用户输入中的 HTML 特殊字符 | | ✅ **输出编码** | 在将数据渲染为 HTML 之前,使用上下文相关的 HTML 编码(例如 OWASP Java Encoder) | | ✅ **内容安全策略 (CSP)** | 实施严格的 CSP 头:`Content-Security-Policy: script-src 'self'` | | ✅ **HTTPOnly 和 Secure Cookie** | 在所有会话 cookie 上设置 `HttpOnly` 和 `Secure` 标志,以防止 JS 访问 | | ✅ **使用安全库** | 集成 OWASP AntiSamy 或 DOMPurify 进行 HTML 清理 | | ✅ **安全代码审查** | 审计所有渲染路径中未清理的用户控制数据 | | ✅ **升级** | 应用供应商提供的最新补丁或升级到已修复的版本 | ### 致系统管理员 - 🔒 仅将 OpenKM 实例的访问权限限制在受信任的网络中 - 📊 监控应用程序日志,查找输入字段中的异常活动或意外脚本标签 - 🔄 保持应用程序更新至最新的修补版本 - 🧩 部署带有 XSS 检测规则的 Web 应用程序防火墙 (WAF) 作为补偿控制 ## 📅 披露时间线 | 日期 | 事件 | |------|-------| | 🔍 **发现** | 在对 OpenKM v6.3.12 进行安全评估期间发现了漏洞 | | 📧 **通知供应商** | 向 OpenKM 安全团队提交了初步披露报告 | | 🤝 **供应商确认** | OpenKM 团队确认收到报告 | | 📝 **分配 CVE** | CVE-2026-30503 由 CVE 项目分配 | | 🌐 **公开发布** | 在修复期后协调公开发布 | ## 📚 参考文献 - 🔗 [ Github] (https://github.com/dharmstm/OpenKM-6.3-Stored-XSS-Report/). - 🔗 [MITRE CVE 条目 — CVE-2026-30503](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-30503) - 🔗 [NVD — 国家漏洞数据库](https://nvd.nist.gov/) - 🔗 [OpenKM 官方网站](https://www.openkm.com) - 🔗 [OWASP XSS 预防速查表](https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html) - 🔗 [CWE-79:跨站脚本攻击](https://cwe.mitre.org/data/definitions/79.html) - 🔗 [OWASP Top 10 — A03:2021 注入](https://owasp.org/Top10/A03_2021-Injection/) ## 👨‍💻 关于研究员
### Dharmendra Kumar **安全研究员 | 渗透测试员 | 漏洞猎人**
Dharmendra Kumar 是一名独立的网络安全研究员,专攻 Web 应用程序安全、渗透测试和负责任的漏洞披露。他专注于识别广泛使用的软件中的现实安全缺陷,其工作有助于提高全球范围内应用程序的安全态势。 **专业领域:** - 🌐 Web 应用程序渗透测试 - 🐛 漏洞赏金猎杀 - 🔍 漏洞研究与 CVE 报告 - 📋 负责任的披露与安全公告 - 🛡️ OWASP Top 10 漏洞 **联系方式:** [![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-0A66C2?style=flat-square&logo=linkedin)](https://linkedin.com/dharmstm) [![GitHub](https://img.shields.io/badge/GitHub-Follow-181717?style=flat-square&logo=github)](https://github.com/dharmstm) [![Twitter](https://img.shields.io/badge/Twitter-Follow-1DA1F2?style=flat-square&logo=twitter)](https://twitter.com/dharmstm) ## ⚖️ 法律声明 ## 🙏 致谢 特别感谢: - **OpenKM 开发团队** 在负责任的披露过程中的配合 - **CVE 项目 / MITRE 公司** 分配和协调 CVE 标识符 - 广大的**安全研究社区** 为使软件对每个人都更安全而付出的不懈努力
**⭐ 如果这项研究对您有帮助,请考虑为本仓库加星。** *© 2026 Dharmendra Kumar — 保留所有权利* ![访问者](https://visitor-badge.laobi.icu/badge?page_id=CVE-2026-30503)
标签:CISA项目, CVE-2026-30503, JavaScript安全, JS文件枚举, OpenKM, OWASP Top 10, PoC, Web安全, 企业安全, 多模态安全, 存储型XSS, 安全研究员, 情报收集, 数据可视化, 数据展示, 文档管理系统, 暴力破解, 漏洞披露, 漏洞研究, 红队, 网络安全, 网络资产管理, 蓝队分析, 负责任的披露, 跨站脚本攻击, 隐私保护