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





**发现者及报告人 [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 漏洞
**联系方式:**
[](https://linkedin.com/dharmstm)
[](https://github.com/dharmstm)
[](https://twitter.com/dharmstm)
## ⚖️ 法律声明
## 🙏 致谢
特别感谢:
- **OpenKM 开发团队** 在负责任的披露过程中的配合
- **CVE 项目 / MITRE 公司** 分配和协调 CVE 标识符
- 广大的**安全研究社区** 为使软件对每个人都更安全而付出的不懈努力
**⭐ 如果这项研究对您有帮助,请考虑为本仓库加星。**
*© 2026 Dharmendra Kumar — 保留所有权利*

标签:CISA项目, CVE-2026-30503, JavaScript安全, JS文件枚举, OpenKM, OWASP Top 10, PoC, Web安全, 企业安全, 多模态安全, 存储型XSS, 安全研究员, 情报收集, 数据可视化, 数据展示, 文档管理系统, 暴力破解, 漏洞披露, 漏洞研究, 红队, 网络安全, 网络资产管理, 蓝队分析, 负责任的披露, 跨站脚本攻击, 隐私保护