vBulletin runMaths方法预认证RCE漏洞分析与处置建议

导语:SSD安全披露平台近日公开了vBulletin 6.2.1及之前版本中的一个高危漏洞。该漏洞位于模板引擎的runMaths()方法,攻击者可通过未充分过滤的用户输入在服务器上执行任意PHP代码。更值得关注的是,漏洞利用无需任何认证,建议使用vBulletin的企业立即采取处置措施。

来源:本文编译自SSD Secure Disclosure披露文章《vBulletin Runtime Template runMaths Preauth RCE》。


一、漏洞概述

vBulletin是全球广泛使用的论坛软件。近日,安全研究人员在vBulletin中发现了一个严重的预认证远程代码执行(RCE)漏洞。

漏洞基本信息

项目详情
CVE编号CVE-2026-61511
漏洞类型远程代码执行(RCE)
影响组件/includes/vb5/template/runtime.php 中的 vB5_Template_Runtime::runMaths() 方法
攻击复杂度低(无需认证)
影响版本vBulletin 6.2.1及之前版本、vBulletin 6.1.6及之前版本
修复版本vBulletin 6.2.2

二、技术根因分析

2.1 漏洞定位

问题出在vBulletin的模板运行时引擎中,具体为vB5_Template_Runtime::runMaths()方法。该方法负责处理模板中的数学运算表达式。

2.2 危险调用链

漏洞代码如下:

public static function runMaths($str)
{
    $str = preg_replace('#([^+-*=/()d^<>&|.]*)#', '', $str);
    
    if (empty($str)) {
        $str = '0';
    } else {
        try {
            $status = @eval("$str = $str;");
        } catch(Error $e) {
            $status = false;
        }
    }
}

问题所在

  1. 过滤不完善:虽然正则表达式过滤了一些危险字符,但仍允许数字运算符号、括号以及按位异或运算符^
  2. 危险函数调用:过滤后的字符串直接传入eval()执行
  3. 按位异或逃逸:利用XOR操作可以构造任意字符,攻击者可借助”phpfuck”技术通过数字和异或运算构造任意PHP函数调用

2.3 利用路径

攻击者可通过以下两条路径触发漏洞:

路径一:admin面板利用 攻击者登录后台,编辑模板/样式,插入恶意{vb:math}标签。

路径二(无需认证):利用ajax/render/pagenav路由

vBulletin的pagenav模板中存在以下代码:

<vb:if condition="$pagenav['currentpage'] != 1">
    <a class="js-pagenav-button" ... data-page="{vb:math {vb:var pagenav.currentpage} - 1}"

用户通过pagenav[pagenumber]参数传入的值会被赋值给pagenav.currentpage模板变量,最终流入runMaths()方法,造成代码执行。


三、攻击手法解析

根据披露的漏洞细节,攻击者利用phpfuck技术,将PHP函数名和参数拆解为数字运算表达式,再通过异或运算组合还原为完整函数调用。

system()函数为例,攻击者将system字符串的每个字符转换为ASCII码,再通过一系列数字和异或运算还原,最终实现任意命令执行。

// 攻击载荷构造示例(简化演示)
$pagenav[pagenumber] = makePayload("system", "whoami; echo _____");
// 通过数字异或构造 system("whoami") 并执行

四、MITRE ATT&CK 框架映射

ATT&CK战术技术ID技术名称
初始访问T1190利用公开应用漏洞
执行T1106原生API调用
命令与控制T1071.001应用层协议:Web协议
渗出T1041通过C2通道外传数据

五、蓝队检测方案

5.1 日志特征检测

监测以下异常请求模式:

# 检测 ajax/render/pagenav 的异常 pagenav[pagenumber] 参数
# 关键词:大量数字、括号、异或运算符号组合
grep -E "ajax/render/pagenav.*pagenav[pagenumber]" access.log | 
  grep -oE '[[0-9+-*/()^]+]' | sort | uniq -c | sort -rn | head -20

# 检测含有 phpinfo、system、exec、passthru 等函数调用的请求
grep -iE "pagenav[pagenumber].*(system|exec|passthru|shell_exec)" access.log

5.2 WAF规则示例

# ModSecurity规则示例
SecRule REQUEST_URI "@contains ajax/render/pagenav" 
    "msg:'vBulletin runMaths RCE Attempt',
    phase:2,
    id:9001,
    block,
    capture,
    t:none,t:urlDecode,t:lowercase,
    ctl:ruleRemoveById=99999"
    
SecRule ARGS:pagenav[pagenumber] "@rx [^()=]+" 
    "msg:'Suspicious runMaths payload detected',
    phase:2,
    id:9002,
    block,
    log,
    logdata:'Matched %{MATCHED_VAR}'"

5.3 SIEM检测规则(Splunk SPL)

index=weblogs sourcetype=vbulletin 
| search uri="*ajax/render/pagenav*"
| rex field=pagenav_pagenumber "(?<suspicious_chars>[^^s]*[^][^^s]*)+"
| where isnotnull(suspicious_chars) AND len(suspicious_chars) > 5
| stats count by src_ip, pagenav_pagenumber, _time
| where count > 3
| sort -count

5.4 网络层检测

在IDS/IPS规则中关注:

  • http.uri 包含 ajax/render/pagenav
  • http.request.body 包含 pagenav[pagenumber] 且参数值含有 ^ 异或运算符
  • 异常高频率的此类请求(单IP短时间内多次)

六、处置与缓解建议

6.1 首要措施(立即执行)

1. 升级至安全版本

vBulletin官方已发布修复版本,受影响用户应立即升级:

  • 下载地址:https://forum.vbulletin.com/forum/vbulletin-announcements/vbulletin-announcements_aa/4509404-vbulletin-6-2-2-is-available
  • 补丁直接链接:https://forum.vbulletin.com/forum/vbulletin-announcements/vbulletin-announcements_aa/4509358-security-patch-released-for-vbulletin-6-2-1-6-2-0-and-6-1-6

2. 临时缓解措施

若无法立即升级,可考虑以下临时措施:

  • 限制ajax路由访问:通过Web服务器配置,限制/ajax/render/*路由仅对已认证用户开放
  • 添加输入过滤:在Web应用层对pagenav[pagenumber]参数进行严格过滤,禁止^等特殊字符
# Apache配置示例
<LocationMatch "^/ajax/render/pagenav">
    # 仅允许已登录用户访问
    Require valid-user
</LocationMatch>

6.2 防御纵深建议

网络层

  • 在WAF上部署针对性规则,拦截含有异常数学运算符组合的请求
  • /ajax/render/*路由启用速率限制

应用层

  • 检查是否使用了问题版本的vBulletin
  • 审查自定义模板中是否存在可疑的{vb:math}标签
  • 启用应用日志,记录所有模板渲染请求

主机层

  • 确保Web服务器进程权限遵循最小权限原则
  • 限制Web服务用户对系统命令的调用能力
  • 部署文件完整性监控(HIDS)

监控响应

  • 检查是否存在可疑的Webshell或异常进程
  • 审查最近修改的系统文件和用户账户
  • 建议部署EDR解决方案以检测后续攻击行为

七、总结

CVE-2026-61511是vBulletin的一个严重预认证RCE漏洞,攻击者可利用模板引擎的runMaths()方法在服务器上执行任意PHP代码。该漏洞利用复杂度低,无需认证,对未修复系统构成重大威胁。

根据防御纵深原则,企业应:

  1. 立即:识别是否使用受影响版本的vBulletin,升级至6.2.2
  2. 短期:在WAF/IPS上部署检测规则,限制ajax路由访问
  3. 长期:建立自动化漏洞响应机制,加强主机层监控

参考资料

版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容