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

环境搭建

所需工具

  1. WordPress最新版: https://wordpress.org/latest.zip
  2. PHPStudy集成环境(用于本地搭建)
  3. 漏洞插件版本: https://downloads.wordpress.org/plugin/wp-health.v2.16.0.zip

搭建步骤

  1. 使用PHPStudy搭建WordPress环境,设置域名为wpcms.com
  2. 安装WordPress并进入管理后台
  3. 上传并安装WP Umbrella插件(v2.16.0)
  4. 启用该插件

漏洞分析

漏洞定位

  1. 在插件目录下全局搜索PHP文件包含危险函数(如include_once)
  2. 重点关注WPUmbrella\Core\Hooks\ExecuteHooksWPUmbrella\Core\Hooks\ActivationHook接口
  3. 这些接口实现了WordPress的钩子注册和激活行为

关键函数分析

handleClonerRequest()函数是漏洞触发点,其逻辑如下:

  1. 检查$wp_query中是否存在umbrella-backup参数:

    • 如果不存在,直接返回,结束函数执行
    • query_vars是WordPress用来存储当前URL查询参数的对象
  2. 检查GET参数中是否存在filename参数:

    • 如果存在,使用其值作为文件名
    • 如果不存在,默认使用cloner.php
  3. 直接使用include_once $filePath包含用户提供的文件路径

    • 文件路径通过$_GET['filename']拼接而成
    • 未对用户输入进行任何过滤或安全检查

漏洞利用

基本利用

构造Payload:

?umbrella-backup=aaaaa&filename=../123.txt

其中:

  • umbrella-backup参数不能为空(值任意)
  • filename参数可进行目录遍历,包含任意文件

进阶利用(配合文件上传)

  1. 在WordPress后台"添加文章"功能处上传内含PHP代码的图片(图片马)
  2. 获取上传文件的路径(通常位于wp-content/uploads/目录下)
  3. 使用LFI漏洞包含该图片文件,执行其中的PHP代码

修复建议

  1. 升级到WP Umbrella插件v2.17.0或更高版本
  2. 如果无法立即升级,可临时禁用该插件
  3. 实施Web应用防火墙(WAF)规则,拦截包含umbrella-backupfilename参数的恶意请求

技术总结

该漏洞的核心问题在于:

  1. 未对用户输入的filename参数进行过滤
  2. 直接使用用户可控参数拼接文件路径
  3. 使用include_once直接包含用户指定的文件

攻击者可利用此漏洞读取敏感文件(如/etc/passwd),或配合文件上传功能实现远程代码执行(RCE),完全控制服务器。

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 参数不能为空(值任意) filename 参数可进行目录遍历,包含任意文件 进阶利用(配合文件上传) 在WordPress后台"添加文章"功能处上传内含PHP代码的图片(图片马) 获取上传文件的路径(通常位于 wp-content/uploads/ 目录下) 使用LFI漏洞包含该图片文件,执行其中的PHP代码 修复建议 升级到WP Umbrella插件v2.17.0或更高版本 如果无法立即升级,可临时禁用该插件 实施Web应用防火墙(WAF)规则,拦截包含 umbrella-backup 和 filename 参数的恶意请求 技术总结 该漏洞的核心问题在于: 未对用户输入的 filename 参数进行过滤 直接使用用户可控参数拼接文件路径 使用 include_once 直接包含用户指定的文件 攻击者可利用此漏洞读取敏感文件(如 /etc/passwd ),或配合文件上传功能实现远程代码执行(RCE),完全控制服务器。