Revive Adserver 5.5.2反射型XSS漏洞分析

本文详细分析了Revive Adserver 5.5.2中存在的反射型跨站脚本漏洞,包括漏洞成因、攻击原理、影响范围及修复方案。漏洞位于admin-search.php文件的compact参数,攻击者可通过构造恶意URL执行任意JavaScript代码。

Revive Adserver | 报告 #3091390 - Revive Adserver 5.5.2中的反射型跨站脚本(XSS)漏洞

漏洞概述

在Revive Adserver版本5.5.2中发现了一个反射型跨站脚本(XSS)漏洞。该漏洞允许攻击者将恶意JavaScript代码注入到应用程序中,然后在受害者的浏览器上下文中执行。该漏洞存在于admin-search.php文件中,可通过compact参数进行利用。

漏洞成因

该漏洞是由于admin-search.php文件中compact参数的输入清理不足造成的。compact参数在没有适当转义的情况下直接嵌入到HTML输出中,使得攻击者能够注入任意JavaScript代码。

受影响的代码位于lib/templates/admin/layout/search.html:

1
<input type='hidden' name='compact' value='{$compact}'>

compact参数在www/admin/admin-search.php中未经适当清理就传递给模板:

1
2
3
4
5
6
7
phpAds_registerGlobalUnslashed('keyword', 'client', 'campaign', 'banner', 'zone', 'affiliate', 'compact');
...
if (!isset($compact)) {
    $compact = false;
}
...
$oTpl->assign('compact', $compact);

概念验证(POC)

攻击者可以通过在compact参数中包含JavaScript payload来构造恶意URL,从而利用此漏洞。当管理员访问此URL时,恶意脚本将在其浏览器中执行。

1
http://target-ip/www/admin/admin-search.php?affiliate=1&banner=1&campaign=1&client=1&compact=1'><script>alert(document.cookie)</script>&keyword=1&zone=1

影响范围

此漏洞的影响十分严重,因为它允许攻击者:

  • 窃取敏感信息,如会话cookies
  • 以受害者身份执行操作
  • 将受害者重定向到恶意网站
  • 篡改应用程序界面

任何能够诱骗受害者点击恶意链接的用户都可以利用此漏洞,这使其成为一个需要立即关注的关键安全问题。

时间线

  • 2025年4月14日 6:32 UTC - env_bak向Revive Adserver提交报告
  • 2025年4月14日 13:04 UTC - 漏洞被确认为"已分类",管理员会话cookie在最新版本中为httpOnly且无法被"窃取"
  • 2025年4月14日 13:59 UTC - 提供了修复补丁
  • 2025年4月15日 2:29 UTC - 确认修复方案有效
  • 2025年5月28日 - 报告状态改为"已解决"
  • 2025年7月3日 - 分配CVE编号CVE-2025-27208
  • 2025年10月22日 - 报告被公开披露

技术细节

漏洞的根本原因是compact参数直接从用户输入获取,而没有进行适当的类型验证和转义处理。修复方案是确保$compact变量始终为布尔值(true或false),而不是直接从用户输入获取的字符串。

严重程度

该漏洞的严重程度被评定为中等(4.3),虽然无法直接窃取cookie,但攻击者仍可通过XHR请求模拟敏感操作,如管理员添加用户等。

贡献者

报告人:Jiasheng He(https://github.com/hebing123) from Qihoo 360

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计