IPBUF安全漏洞报告
English
CVE-2025-52667 CVSS 5.4 中危

CVE-2025-52667: Revive Adserver 存储型XSS漏洞

披露日期: 2025-11-20

漏洞信息

漏洞编号
CVE-2025-52667
漏洞类型
存储型XSS
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Revive Adserver

相关标签

存储型XSSRevive AdserverContent-Type头缺失CVE-2025-52667跨站脚本HackerOne中等严重漏洞

漏洞概述

CVE-2025-52667是Revive Adserver中的一个存储型跨站脚本(XSS)漏洞。该漏洞存在于6.0.1和5.5.2及更早版本中,由于某个脚本缺少JSON Content-Type头,导致已登录的管理员用户可能受到存储型XSS攻击。攻击者可以通过在受影响的功能点注入恶意JavaScript代码,当其他管理员用户访问包含恶意代码的页面时,攻击脚本将自动执行,从而窃取会话Cookie、劫持用户会话、进行权限提升或执行其他恶意操作。该漏洞的CVSS评分为5.4,属于中等严重程度,攻击向量为网络,攻击复杂度低,需要低权限用户参与,且需要用户交互才能成功利用。漏洞的完整性影响和机密性影响均为低级别,对系统可用性无影响。

技术细节

该漏洞的根本原因是Revive Adserver中的某个脚本在返回JSON响应时未正确设置Content-Type头为application/json。当浏览器收到缺少正确Content-Type头的响应时,浏览器可能会根据响应内容尝试猜测内容类型,如果响应包含HTML或JavaScript内容,浏览器可能会将其作为HTML解析执行,从而触发XSS漏洞。攻击者需要具备低权限(Manager用户级别)即可在系统中注入恶意代码。由于是存储型XSS,恶意代码会被永久保存在服务器端,所有访问受影响页面的用户都会执行该恶意脚本。攻击者通常利用此漏洞窃取管理员会话Cookie,进而获取系统完全控制权。修复方案是在所有返回JSON的端点明确设置Content-Type: application/json头,并进行严格的输入验证和输出编码。

攻击链分析

STEP 1
步骤1
攻击者获取Revive Adserver的低权限Manager账户凭据
STEP 2
步骤2
攻击者访问存在漏洞的脚本端点,该端点缺少JSON Content-Type头设置
STEP 3
步骤3
攻击者通过POST请求注入包含恶意JavaScript代码的XSS payload
STEP 4
步骤4
恶意代码被存储在数据库中,当其他管理员用户访问相关页面时触发执行
STEP 5
步骤5
攻击者通过XSS窃取受害者的会话Cookie或执行其他恶意操作
STEP 6
步骤6
攻击者利用窃取的会话进行横向移动或权限提升

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-52667 PoC - Stored XSS in Revive Adserver # Target: Revive Adserver <= 6.0.1, <= 5.5.2 TARGET = "http://target-revive-adserver.com" USERNAME = "manager_user" PASSWORD = "manager_password" session = requests.Session() # Step 1: Login to get authenticated session login_url = f"{TARGET}/www/admin/login.php" login_data = { "username": USERNAME, "password": PASSWORD } response = session.post(login_url, data=login_data) # Step 2: Inject stored XSS payload via vulnerable endpoint # The vulnerability exists because the endpoint doesn't set proper JSON Content-Type vulnerable_url = f"{TARGET}/www/admin/plugins/.../ajax.php" xss_payload = '<script>alert(document.cookie)</script>' payload_data = { "action": "save", "name": xss_payload, "description": xss_payload } response = session.post(vulnerable_url, data=payload_data, headers={ "Content-Type": "application/x-www-form-urlencoded" }) # Step 3: Trigger the XSS when admin visits the affected page trigger_url = f"{TARGET}/www/admin/plugins/.../index.php" response = session.get(trigger_url) print("PoC executed - Stored XSS payload injected")

影响范围

Revive Adserver < 5.5.3
Revive Adserver < 6.0.2

防御指南

临时缓解措施
临时缓解措施:1) 在Web服务器层面配置所有JSON响应必须包含Content-Type: application/json头;2) 禁用受影响的脚本功能直到完成升级;3) 加强对Manager级别用户的访问控制,限制其权限范围;4) 监控日志中的异常请求模式;5) 考虑暂时禁用非必要的插件功能。

参考链接

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