dharmstm/CVE-2026-30502-OpenKM-6.3.12-Reflected-XSS
GitHub: dharmstm/CVE-2026-30502-OpenKM-6.3.12-Reflected-XSS
记录并披露了 OpenKM v6.3.12 中 Content 参数的反射型 XSS 漏洞(CVE-2026-30502),包含完整的根因分析、PoC 复现步骤和修复建议。
Stars: 0 | Forks: 0
# 🛡️ CVE-2026-30502 — OpenKM v6.3.12 中的反射型 XSS 漏洞





**由 [Dharmendra Kumar](https://github.com/dharmstm) 发现并报告 — 安全研究员**
*网络安全 | 渗透测试 | 漏洞研究 | 负责任的披露*
## 📌 目录
- [概述](#-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-30502** 的负责任披露过程,这是一个在 **OpenKM v6.3.12** 中被发现的 **反射型跨站脚本攻击 (XSS)** 漏洞。OpenKM 是一个广泛部署的开源文档管理系统,被应用于企业和政府机构等环境中。
该漏洞存在于 `Content` 参数中,该参数在未经过适当清理或输出编码的情况下,将用户提供的输入直接返回给浏览器。攻击者可以构造一个包含嵌入式 JavaScript 的恶意 URL,并通过社会工程学诱使受害者点击,从而在受害者的浏览器会话中执行脚本。
## 📋 CVE 详情
| 字段 | 详情 |
|-------|---------|
| **CVE ID** | CVE-2026-30502 |
| **产品** | OpenKM |
| **受影响版本** | v6.3.12 |
| **漏洞类型** | 反射型跨站脚本攻击 (XSS) |
| **存在漏洞的参数** | `Content` |
| **CWE** | CWE-79: 网页生成过程中输入的不当中和 |
| **CVSS 向量** | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N |
| **严重程度** | 中高 |
| **发布者** | MITRE CVE Program |
| **研究员** | Dharmendra Kumar |
| **披露类型** | 负责任 / 协调披露 |
## 📦 受影响的产品
**OpenKM** 是一个免费的开源文档管理系统 (DMS),提供了一个用于管理、审计和分发商业文档的 Web 界面。它被全球的企业、政府机构和教育机构广泛使用。
- **产品名称:** OpenKM 文档管理系统
- **受影响版本:** `v6.3.12`
- **供应商网站:** https://www.openkm.com
- **类别:** 文档管理系统 (DMS)
- **语言 / 技术栈:** Java (JSP / Spring Framework)
## 🧨 漏洞描述
在 OpenKM v6.3.12 的 `Content` 参数中发现了一个 **反射型跨站脚本攻击 (XSS)** 漏洞。该应用程序在将用户提供的输入返回到 HTTP 响应体之前,未能对其进行验证或编码,从而允许注入并执行任意的 JavaScript。
与存储型 XSS 不同,反射型 XSS 的 Payload 不会持久化存储在数据库中——而是隐藏在精心构造的 URL 中。这种攻击依赖于诱使受害者点击恶意链接(通过电子邮件、社交媒体或钓鱼活动传递),随后 Payload 会在受害者的浏览器中利用其会话上下文静默执行。
### 攻击流程
```
Attacker crafts malicious URL
│
▼
Victim clicks the link (phishing / social engineering)
│
▼
Browser sends GET/POST request with payload in `Content` parameter
│
▼
OpenKM reflects unsanitized input directly into HTML response
│
▼
Browser parses & executes injected JavaScript
│
▼
Session hijacked / credentials harvested / account compromised
```
## 🔬 根本原因分析
该漏洞源于应用程序未能对 `Content` 参数实施输入输出安全控制:
| 缺陷 | 描述 |
|----------|-------------|
| ❌ **无输入验证** | `Content` 参数在没有限制或过滤的情况下接受了原始的 HTML/JavaScript 字符 |
| ❌ **无输出编码** | 反射值在写入 HTML 响应时未进行 HTML 实体编码 |
| ❌ **缺少 CSP 头** | 未强制执行内容安全策略 (Content Security Policy) 来阻止内联脚本的执行 |
| ❌ **无 HTTPOnly Cookie** | Session token 可通过 JavaScript 访问,导致 Cookie 可被直接窃取 |
```
User-Crafted URL ──► Content Parameter ──► [NO Validation]
──► Reflected in HTML Response ──► [NO Encoding]
──► Browser Executes Script ──► Account Compromised
```
## 💥 影响与风险评估
成功利用此漏洞可能导致:
| 风险 | 描述 |
|------|-------------|
| 🍪 **会话劫持** | 通过 `document.cookie` 窃取活动的会话 token 以冒充受害者 |
| 🔑 **凭据收集** | 注入虚假的登录覆盖层以捕获明文的用户名和密码 |
| 📤 **信息泄露** | 窃取敏感的文档内容、用户数据或内部配置 |
| 🎣 **钓鱼攻击** | 在受信任的 OpenKM 域内提供令人信服的伪造页面 |
| 👤 **账户接管** | 代表受害者执行任意已认证的操作 |
| ⚙️ **未经授权的操作** | 在 DMS 中修改、删除或外发文档 |
| 🖥️ **恶意软件分发** | 将受害者重定向到托管恶意下载的攻击者控制站点 |
## 🧪 概念验证
### Payload 示例(通用)
```
// Basic execution proof
// Session cookie exfiltration
// Credential phishing overlay
```
### 构造的恶意 URL 结构
```
https://target-openkm-instance/[vulnerable-endpoint]?Content=
```
### 复现步骤
1. 找出 OpenKM v6.3.12 中反射 `Content` 参数的脆弱端点
2. 构造一个在 `Content` 参数后附加 XSS Payload 的 URL
3. 如有必要,对 Payload 进行 URL 编码
4. 通过电子邮件、聊天或任何社会工程学途径将构造好的链接发送给受害者
5. 当受害者在已认证的浏览器会话中打开该链接时,Payload 将被执行
6. 观察 JavaScript 执行、Cookie 窃取或重定向行为
## 🛠️ 修复与建议
### 面向开发者 / 供应商
| 建议 | 实施方案 |
|---------------|----------------|
| ✅ **输入验证** | 拒绝或剥离所有用户可控参数中的 HTML 特殊字符(`<`、`>`、`"`、`'`、`;`) |
| ✅ **输出编码** | 在渲染反射数据之前,使用如 OWASP Java Encoder 等库应用上下文感知的 HTML 编码 |
| ✅ **内容安全策略** | 部署严格的 CSP 头:`Content-Security-Policy: default-src 'self'; script-src 'self'` |
| ✅ **HTTPOnly Cookie** | 在所有 Session Cookie 上设置 `HttpOnly` 和 `Secure` 标志,以阻止 JavaScript 访问 |
| ✅ **安全库** | 集成 OWASP AntiSamy 或 DOMPurify 以进行稳健的清理 |
| ✅ **升级** | 立即应用供应商发布的最新安全补丁 |
### 面向系统管理员
- 🔒 通过防火墙规则将 OpenKM 的访问限制在内部/受信任的网络中
- 🛡️ 部署带有 XSS 检测特征的 Web 应用程序防火墙 (WAF) 作为补偿控制
- 📊 监控 Web 服务器访问日志,查找查询字符串中意外的脚本标签或编码过的 Payload
- 🔄 保持 OpenKM 安装更新至最新的安全版本
- 📧 培训用户对点击来历不明的指向 DMS 的链接保持谨慎
## 📅 披露时间线
| 日期 | 事件 |
|------|-------|
| 🔍 **发现** | 在对 OpenKM v6.3.12 进行安全评估期间发现了该漏洞 |
| 📧 **通知供应商** | 向 OpenKM 安全团队提交了负责任的披露报告 |
| 🤝 **供应商确认** | OpenKM 团队确认了该漏洞报告 |
| 📝 **CVE 分配** | 通过 MITRE CVE Program 分配了 CVE-2026-30502 |
| 🌐 **公开披露** | 在修复期后进行了协调的公开披露 |
## 📚 参考链接
- 🔗 [MITRE CVE 条目 — CVE-2026-30502](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-30502)
- 🔗 [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/)
- 🔗 [OWASP Java Encoder](https://owasp.org/www-project-java-encoder/)
## 👨💻 关于研究员
### Dharmendra Kumar
**安全研究员 | 渗透测试员 | 漏洞猎人 | CVE 贡献者**
Dharmendra Kumar 是一名独立的网络安全研究员,专攻 Web 应用程序安全、渗透测试和负责任的漏洞披露。他的研究重点是识别并负责任地报告广泛使用的软件中的真实安全缺陷——为全球用户提供更安全的应用程序做出贡献。
**专业领域:**
- 🌐 Web 应用程序渗透测试
- 🐛 漏洞赏金狩猎与 CVE 研究
- 🔍 漏洞发现与安全公告
- 📋 负责任披露与协调的 CVE 报告
**联系我:**
[](https://github.com/dharmstm)
[](https://linkedin.com/in/dharmstm)
[](https://twitter.com/dharmstm)
[](https://instagram.com/dharmstm)
[](https://medium.com/p/dharmstm)
## ⚖️ 法律免责声明
## 🙏 致谢
特别感谢:
- **OpenKM 开发团队** 在协调披露期间的配合与积极响应
- **MITRE CVE Program** 分配和管理 CVE 标识符
- 全球的**安全研究与漏洞赏金社区** 不断提升应用程序安全的门槛
**⭐ 如果这项研究对您有所帮助,请考虑为本仓库加星。**
*公开分享安全研究,为了让每个人的网络环境更安全。*
*© 2026 Dharmendra Kumar — 保留所有权利*
标签:CVE-2026-30502, Go语言工具, JS文件枚举, OpenKM, PoC, Web安全, 企业安全, 反射型XSS, 多模态安全, 教育, 数据可视化, 文档管理系统, 暴力破解, 漏洞分析, 漏洞披露, 网络安全, 网络资产管理, 蓝队分析, 跨站脚本攻击, 路径探测, 输入验证绕过, 隐私保护