1. 漏洞概述
-
漏洞名称: WordPress Kubio AI Page Builder 插件 本地文件包含 (LFI) 漏洞 -
CVE ID: CVE-2025-2294 -
影响范围: Kubio AI Page Builder 插件 2.5.1 之前的所有版本 (<= 2.5.0) -
漏洞类型: 本地文件包含 (Local File Inclusion - LFI) -> 可能导致远程代码执行 (RCE) -
CVSS 评分: 9.8 (Critical) - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H -
攻击复杂度: 低 (Low) - 无需身份验证,利用简单 -
影响程度: 严重 (Critical) -
漏洞简述: Kubio AI Page Builder 插件在特定条件下,允许未经身份验证的攻击者通过操纵 HTTP 请求参数,控制插件加载模板文件的路径。由于路径过滤不严,攻击者可以包含服务器上的任意文件(如 PHP、配置文件、日志等)。如果成功包含一个包含 PHP 代码的文件(例如 Web 日志、上传的图片马、或服务器上的其他 PHP 脚本),则会导致任意 PHP 代码执行。 -
核心危害: -
远程代码执行 (RCE): 攻击者完全控制服务器,可执行任意命令。 -
敏感信息泄露: 读取 /etc/passwd
,wp-config.php
(数据库凭证),.env
文件, 日志文件等。 -
权限提升: 绕过网站安全控制,获取更高权限。 -
网站篡改/破坏: 植入后门、篡改内容、删除数据。 -
服务器沦陷: 作为跳板攻击内网或其他系统。 CVE官方出具的9.8的CVSS评分
环境搭建(小皮面板搭建)
下载Kubio AI Page Builder <= 2.5.1 版本(文末附下载链接)
将下载的插件解压后放在 /wp-content/plugins 目录下
开启插件
来到插件面板,进入面板编辑
抓取到数据包,打POC
代码分析
先看漏洞函数kubio_hybrid_theme_load_template。
通过$_REQUEST获取URL参数 __kubio-site-edit-iframe-classic-template 的值
如果传递的模板ID未找到则返回原始路径(用户传入的参数值)。
追溯kubio_hybrid_theme_load_template如何实现。
kubio_is_hybdrid_theme_iframe_preview值为true时进入if判断,kubio_hybrid_theme_load_template函数是通过WordPress的 template_include 过滤器钩子自动调用的。
追溯kubio_is_hybdrid_theme_iframe_preview值。
通过$_REQUEST获取URL参数__kubio-site-edit-iframe-preview 的值
只需要让__kubio-site-edit-iframe-preview 的值为真,即可触发漏洞函数。
-
2. 环境搭建 (使用小皮面板)
-
安装 WordPress: 使用小皮面板的网站管理功能,创建一个新的 WordPress 站点,确保其正常运行。 -
下载易受攻击插件: 获取 Kubio AI Page Builder 版本 2.5.1 或更低版本。 -
下载链接: https://downloads.wordpress.org/kubio.2.5.1.zip
(官方存档) -
(可选:也可从其他可信源获取 <=2.5.1 版本的 zip 包)
-
-
安装插件: -
解压缩下载的 kubio.2.5.1.zip
文件。 -
将解压得到的 kubio
文件夹上传到 WordPress 站点的/wp-content/plugins/
目录下。 -
登录 WordPress 后台 ( /wp-admin
)。 -
导航到 插件
->已安装的插件
。 -
找到 Kubio AI Page Builder
插件,点击启用
。
-
-
(可选) 验证插件版本: 在插件列表页面或插件编辑页面确认插件版本号确实为 2.5.1 或更低。
3. 漏洞复现 (POC)
-
访问页面编辑器: -
登录 WordPress 后台。 -
导航到 Kubio
->编辑器
或类似的入口进入 Kubio 的页面编辑界面。 (这一步是为了模拟正常用户触发插件功能,但攻击本身不需要登录!)
-
-
捕获请求: -
打开 Burp Suite、OWASP ZAP 或浏览器开发者工具 (F12) 的 Network 标签页。 -
在 Kubio 编辑界面中进行一个简单操作(如点击“保存草稿”或切换视图)。目标是在代理工具中捕获一个包含 kubio-site-edit-iframe-preview
参数的 POST/GET 请求。 (注意:核心触发参数在请求中即可,不严格限定必须在编辑时捕获的包,但编辑时的请求通常包含这些参数)
-
-
构造恶意请求: -
_kubio-site-edit-iframe-preview
: 设置为1
或true
(任何 PHPis_string()
和!empty()
判断为 True 的值均可,如yes
,on
)。这是触发漏洞函数的开关。 -
kubio-site-edit-iframe-classic-template
: 设置为 目标文件的服务器绝对路径。这是包含的目标文件路径。
-
-
-
在捕获到的请求中(或在浏览器地址栏直接构造 GET 请求),添加或修改以下两个关键参数: -
示例攻击 URL (GET 方式): http://your-wordpress-site.com/wp-admin/post.php?post=<a_post_id>&action=edit&_kubio-site-edit-iframe-preview=1&kubio-site-edit-iframe-classic-template=/etc/passwd
(将
your-wordpress-site.com
替换为目标站点,<a_post_id>
替换为一个存在的文章/页面 ID) -
示例攻击 URL (读取 WordPress 配置文件 - 极敏感!): http://your-wordpress-site.com/?_kubio-site-edit-iframe-preview=1&kubio-site-edit-iframe-classic-template=/var/www/html/wordpress/wp-config.php
(注意:
wp-config.php
的路径需根据实际安装位置调整)
-
-
发送请求 & 观察结果: -
如果目标文件是文本文件(如 /etc/passwd
,wp-config.php
),其内容将直接输出到页面响应中。 -
如果目标文件是 PHP 文件且服务器配置允许包含执行,其中的 PHP 代码将被执行。
-
-
-
在代理工具中转发修改后的请求,或在浏览器地址栏直接访问构造好的 URL。 -
如果漏洞存在且路径正确:
-
4. 漏洞代码分析
漏洞的核心在于 kubio_hybrid_theme_load_template
函数:
-
入口点: 该函数通过 WordPress 的 template_include
过滤器钩子注册。这意味着在 WordPress 决定加载哪个模板文件来渲染页面时,这个函数会被调用。 -
触发条件 ( kubio_is_hybdrid_theme_iframe_preview
):functionkubio_is_hybdrid_theme_iframe_preview(){ // 检查请求参数 '_kubio-site-edit-iframe-preview' 是否存在且非空 returnisset( $_REQUEST['_kubio-site-edit-iframe-preview'] ) && ! empty( $_REQUEST['_kubio-site-edit-iframe-preview'] ); }
-
当 URL 或 POST 数据中包含 _kubio-site-edit-iframe-preview
参数且其值不为空时,此函数返回true
。
-
-
漏洞函数 ( kubio_hybrid_theme_load_template
):functionkubio_hybrid_theme_load_template( $template ){ // 检查触发条件 if ( kubio_is_hybdrid_theme_iframe_preview() ) { // 获取用户传入的 'kubio-site-edit-iframe-classic-template' 参数值 $requested_template = isset( $_REQUEST['kubio-site-edit-iframe-classic-template'] ) ? $_REQUEST['kubio-site-edit-iframe-classic-template'] : false; // 关键漏洞点:直接使用用户输入作为文件路径,没有进行任何安全过滤或验证! if ( $requested_template && file_exists( $requested_template ) ) { return $requested_template; // 直接返回用户传入的路径 } } return $template; // 未触发或路径无效,返回原始模板 }
-
无路径过滤/白名单: 未检查路径是否在预期的主题或插件目录内。 -
无输入消毒: 未对用户输入进行任何清理(如移除 ../
序列防止路径遍历)。 -
直接 file_exists
+return
: 仅检查文件是否存在,若存在则直接将其路径返回给 WordPress 的模板加载器。WordPress 随后会尝试include
或require
这个文件。
-
-
-
致命缺陷: 当 kubio_is_hybdrid_theme_iframe_preview()
返回true
后,该函数直接使用用户控制的$_REQUEST['kubio-site-edit-iframe-classic-template']
作为文件路径 ($requested_template
)。 -
缺乏防护: -
利用原理: 攻击者设置 _kubio-site-edit-iframe-preview=1
触发漏洞逻辑,再通过kubio-site-edit-iframe-classic-template
参数指定服务器上的任意文件路径。插件代码将该路径直接传递给 WordPress 核心加载执行。
-
5. 修复方案
-
官方修复: Kubio 在 2.5.2 版本 中修复了此漏洞。 -
修复措施: -
如果暂时无法升级,可以在 .htaccess
(Apache) 或站点配置 (Nginx) 中添加规则,阻止包含恶意参数的请求访问。例如 (Apache):# Block access to exploit requests <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} _kubio-site-edit-iframe-preview [NC] RewriteRule ^ - [F,L] </IfModule>
注意:这可能会影响插件某些合法功能(如预览),且攻击者可能变换参数名(如果插件其他部分存在类似问题),只能作为临时应急手段。
-
严格限制服务器文件系统权限,遵循最小权限原则。 -
部署 Web 应用防火墙 (WAF),配置规则拦截包含 kubio-site-edit-iframe-classic-template
或_kubio-site-edit-iframe-preview
参数的异常请求。
-
-
-
立即升级: **所有用户应立即将 Kubio AI Page Builder 插件升级到最新版本 (>= 2.5.2)**。这是最根本、最有效的解决办法。通过 WordPress 后台 ( 仪表盘
->更新
->插件更新
) 或手动更新完成。 -
临时缓解:
-
6. 总结
CVE-2025-2294 是一个存在于 Kubio AI Page Builder 插件中的高危本地文件包含漏洞。其 CVSS 9.8 的评分充分反映了其严重性:无需认证、利用简单、能直接导致服务器被完全控制。根本原因在于插件代码直接将未经验证和过滤的用户输入作为文件包含路径使用。强烈建议所有使用该插件的站点管理员立即升级到最新安全版本。
(附) 下载链接 (仅用于测试/验证,生产环境务必升级!)
-
Kubio AI Page Builder v2.5.1 (漏洞版本): https://downloads.wordpress.org/kubio.2.5.1.zip
优化要点说明:
-
结构化更清晰: 使用明确的小标题 ( 漏洞概述
,环境搭建
,漏洞复现
,代码分析
,修复方案
,总结
) 组织内容,逻辑更清晰。 -
漏洞描述更详尽: -
明确受影响版本范围。 -
详细解释漏洞类型 (LFI -> RCE)。 -
扩展危害描述 (RCE, 敏感信息泄露, 权限提升等)。 -
强调 CVSS 9.8 分值的含义和构成。
-
-
环境搭建更细致: -
更具体地说明了小皮面板的操作步骤 (创建站点、上传路径)。 -
添加了插件版本验证提示。
-
-
漏洞复现更精准实用: -
明确了捕获请求的目的 (找包含关键参数的请求)。 -
区分了触发参数 ( _kubio...preview
) 和文件路径参数 (kubio...template
)。 -
提供了 更直接、无需后台交互的 GET 型 POC URL 示例 (利用 /?参数
或wp-admin/post.php?参数
),更具实战性。 -
添加了读取 wp-config.php
的示例,强调危害性。 -
说明了不同文件类型 (文本/PHP) 的响应结果。
-
-
代码分析更深入: -
直接使用 $_REQUEST
用户输入。 -
缺少路径过滤/白名单/消毒。 -
仅检查 file_exists
就直接返回路径。
-
-
-
解释了漏洞函数被调用的机制 ( template_include
钩子)。 -
详细拆解了 kubio_is_hybdrid_theme_iframe_preview
判断逻辑。 -
重点剖析了 kubio_hybrid_theme_load_template
函数的致命缺陷: -
清晰阐述了攻击者如何通过两个参数控制整个过程。
-
-
修复方案更具体可行: -
明确指出修复版本号 (2.5.2)。 -
首要强调立即升级。 -
提供了 .htaccess
临时缓解规则示例及说明其局限性和风险。 -
补充了权限管理和 WAF 建议。
-
-
总结强调重点: 再次强调漏洞的高危性和升级的紧迫性。 -
下载链接标注风险: 明确标注链接仅用于测试,生产环境必须升级。
-
-
下载链接:https://downloads.wordpress.org/plugin/kubio.2.5.1.zip
-
原文始发于微信公众号(Rot5pider安全团队):插件前台任意文件读取漏洞复现与分析 (CVE-2025-2294)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论