关键vBulletin论坛漏洞让攻击者执行远程代码

阅读量15893

发布时间 : 2025-05-27 12:41:54

x
译文声明

本文是翻译文章,文章原作者 古鲁 巴兰,文章来源:cybersecuritynews

原文地址:https://cybersecuritynews.com/vbulletin-forum-rce-vulnerability/

译文仅供参考,具体内容表达以及含义原文为准。

vBulletin世界上最受欢迎的论坛平台之一vBulletin的新发现漏洞使数千个在线社区面临未经身份验证的远程代码执行(RCE)的风险。

该漏洞存在于 PHP 8.1 或更高版本上的 vBulletin 5.x 和 6.x 版本中,允许攻击者调用受保护的内部方法,打破基本安全边界,并在无需身份验证的情况下实现完整的系统妥协。

此漏洞的核心是 vBulletin 依赖 PHP 的 Reflection API 来定制 Model-View-Controller (MVC) 框架和 API 系统。

反射 API 和动态路由

该平台的架构使用动态路由,其中API端点映射到基于传入HTTP请求的控制器方法。

例如,对 /ajax/api/user/fetchProfileInfo 的 AJAX 调用被路由到 vB_Api_User::fetchProfileInfo() 方法。

关键问题来自vBulletin如何使用ReflectionMethod::invoke()和ReflectionMethod::invokeArgs()函数。

从 PHP 8.1 开始,这些函数允许调用受保护和私有方法,而无需 setAccessible(true),这是对以前 PHP 版本的更改。

这种微妙的转变意味着,如果应用程序不执行可见性检查,则旨在成为内部助手的方法现在可以直接由远程用户调用。

简化的易受攻击代码模式包括:

向/api.php 请求的?method=protectedMethod 将直接在 PHP 8.1+ 上调用受保护方法,绕过预期的访问控制。

剥削 路径

虽然调用受保护方法的能力是危险的,但当其中一种方法可用于执行代码时,就会出现真正的威胁。

在 vBulletin 中,vB_Api_Ad::replaceAdTemplate() 方法是一个受保护的函数,旨在插入或更新广告模板。

攻击者发现,他们可以通过精心制作的HTTP POST请求调用此方法,将任意模板代码注入系统。

vBulletin 模板引擎支持使用 <vb:if> 标签的条件逻辑。由于模板解析器如何过滤输入存在单独的缺陷,攻击者可以绕过限制并使用变量函数调用注入PHP代码。例如:

此模板一旦注入,允许攻击者执行通过POST请求发送的系统命令,有效地在服务器上授予Webshell。

概念验证漏洞利用演示了攻击者如何获得shell访问,运行任意命令,并完全破坏底层系统,所有这些都无需身份验证。

 

此漏洞链已确认适用于在 PHP 8.1+ 上运行的 vBulletin 5.1.0、5.7.5、6.0.1 和 6.0.3。该漏洞被认为在6.0.4版本中进行了修补。

此漏洞对开发人员来说是一个警告:依靠方法可见性(公共,受保护,私有)作为安全边界从根本上是不安全的,特别是在使用动态调度和反射时。

在 PHP 8.1 中引入新行为,其中 ReflectionMethod 可以默认调用受保护和私有方法,这意味着应用程序必须在应用程序级别明确执行访问控制。

vBulletin RCE漏洞表明,底层编程语言的微妙变化会对Web应用程序安全产生灾难性后果。

它强调了明确访问控制的重要性,以及依靠语言级可见性在动态Web框架中的安全性的危险。

本文翻译自cybersecuritynews 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
安全客
分享到:微信

发表评论

Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全KER All Rights Reserved 京ICP备08010314号-66