WordPress插件WP Umbrella 存在本地文件包含漏洞(CNVD-2024-47708)
字数 1432 2025-08-29 22:41:01
WordPress插件WP Umbrella本地文件包含漏洞(CNVD-2024-47708)分析报告
漏洞概述
WordPress插件WP Umbrella: Update Backup Restore & Monitoring在2.17.0之前的版本中存在本地文件包含漏洞(LFI, Local File Inclusion)。攻击者可利用该漏洞在服务器上包含和执行任意文件,导致任意PHP代码执行。
受影响版本
WordPress WP Umbrella: Update Backup Restore & Monitoring插件版本 < 2.17.0
环境搭建
所需工具
- WordPress最新版: https://wordpress.org/latest.zip
- PHPStudy集成环境(用于本地搭建)
- 漏洞插件版本: https://downloads.wordpress.org/plugin/wp-health.v2.16.0.zip
搭建步骤
- 使用PHPStudy搭建WordPress环境,设置域名为wpcms.com
- 安装WordPress并进入管理后台
- 上传并安装WP Umbrella插件(v2.16.0)
- 启用该插件
漏洞分析
漏洞定位
- 在插件目录下全局搜索PHP文件包含危险函数(如include_once)
- 重点关注
WPUmbrella\Core\Hooks\ExecuteHooks和WPUmbrella\Core\Hooks\ActivationHook接口 - 这些接口实现了WordPress的钩子注册和激活行为
关键函数分析
handleClonerRequest()函数是漏洞触发点,其逻辑如下:
-
检查
$wp_query中是否存在umbrella-backup参数:- 如果不存在,直接返回,结束函数执行
query_vars是WordPress用来存储当前URL查询参数的对象
-
检查GET参数中是否存在
filename参数:- 如果存在,使用其值作为文件名
- 如果不存在,默认使用
cloner.php
-
直接使用
include_once $filePath包含用户提供的文件路径- 文件路径通过
$_GET['filename']拼接而成 - 未对用户输入进行任何过滤或安全检查
- 文件路径通过
漏洞利用
基本利用
构造Payload:
?umbrella-backup=aaaaa&filename=../123.txt
其中:
umbrella-backup参数不能为空(值任意)filename参数可进行目录遍历,包含任意文件
进阶利用(配合文件上传)
- 在WordPress后台"添加文章"功能处上传内含PHP代码的图片(图片马)
- 获取上传文件的路径(通常位于
wp-content/uploads/目录下) - 使用LFI漏洞包含该图片文件,执行其中的PHP代码
修复建议
- 升级到WP Umbrella插件v2.17.0或更高版本
- 如果无法立即升级,可临时禁用该插件
- 实施Web应用防火墙(WAF)规则,拦截包含
umbrella-backup和filename参数的恶意请求
技术总结
该漏洞的核心问题在于:
- 未对用户输入的
filename参数进行过滤 - 直接使用用户可控参数拼接文件路径
- 使用
include_once直接包含用户指定的文件
攻击者可利用此漏洞读取敏感文件(如/etc/passwd),或配合文件上传功能实现远程代码执行(RCE),完全控制服务器。