WP Ultimate CSV Importer远程代码执行分析-CVE-2023-4142
字数 1118 2025-08-24 16:48:16

WP Ultimate CSV Importer 远程代码执行漏洞分析 (CVE-2023-4142)

漏洞概述

WordPress的WP Ultimate CSV Importer插件存在远程代码执行漏洞,影响版本:

  • 所有用户:<=7.9.8版本
  • 管理员用户:所有版本

该漏洞存在于ImportHelpers.php文件中的get_header_values函数,攻击者可通过精心构造的CSV文件实现远程代码执行。

漏洞分析

关键漏洞点

漏洞触发位置在trim_content数组处理逻辑:

$trim_content = array(
    '->static' => '', 
    '->math' => '', 
    '->cus1' => ''
);

$header_trim用于存储$map数组中经过处理后的键名。处理流程如下:

  1. 遍历$map数组中的每个键名
  2. 如果键名包含->static->math->cus1字符串,则从$map数组中删除该键
  3. 否则,使用strtr()函数将$trim_content数组中的键值对应替换掉键名中的字符串
  4. 生成$header_trim并存储在$map数组中

触发条件

存在两处触发条件:

  1. FIFUPOSTS
  2. FIFUPAGE

通过set_fifu_values函数传递CSV文件的列值,该函数调用CSV解析函数。

漏洞利用机制

当插件检测到->static->math->cus1时,会替换CSV文件内容,此时加载恶意构造的CSV文件可触发payload。

环境搭建

  1. 使用Apache搭建WordPress环境
  2. 注意PHP与MySQL8的兼容性问题:
    • MySQL8默认使用caching_sha2_password验证方式
    • 解决方案:
      update user set plugin='mysql_native_password' where User='root';
      flush PRIVILEGES;
      
  3. 安装WP Ultimate CSV Importer插件,并赋予作者权限

漏洞复现步骤

  1. 制作恶意CSV模板文件
    • 注意:->字符在CSV中会报错,需通过抓包修改
  2. 在高级模式"Create WP Custom Fields"处抓包
  3. CORECUSTFIELD替换为FIFUPOSTS
  4. 上传恶意CSV文件触发漏洞

技术细节

set_fifu_values函数中:

  • 使用CORECUSTFIELD作为触发条件之一
  • 可替换为FIFUPOSTS实现利用
  • 具体调用路径需进一步分析代码

官方修复情况

官方在最新版本中:

  • 禁用了作者的权限
  • 管理员仍可上传解析CSV
  • 漏洞未完全修复

安全建议

  1. 立即升级到最新版本
  2. 限制插件使用权限
  3. 监控可疑的CSV文件上传行为
  4. 对用户上传的文件进行严格验证

参考

  • CVE编号:CVE-2023-4142
  • 影响版本:<=7.9.8(所有用户),所有版本(管理员)
  • 漏洞发现时间:2023年8月8日
WP Ultimate CSV Importer 远程代码执行漏洞分析 (CVE-2023-4142) 漏洞概述 WordPress的WP Ultimate CSV Importer插件存在远程代码执行漏洞,影响版本: 所有用户: <=7.9.8版本 管理员用户:所有版本 该漏洞存在于ImportHelpers.php文件中的 get_header_values 函数,攻击者可通过精心构造的CSV文件实现远程代码执行。 漏洞分析 关键漏洞点 漏洞触发位置在 trim_content 数组处理逻辑: $header_trim 用于存储 $map 数组中经过处理后的键名。处理流程如下: 遍历 $map 数组中的每个键名 如果键名包含 ->static 、 ->math 或 ->cus1 字符串,则从 $map 数组中删除该键 否则,使用 strtr() 函数将 $trim_content 数组中的键值对应替换掉键名中的字符串 生成 $header_trim 并存储在 $map 数组中 触发条件 存在两处触发条件: FIFUPOSTS FIFUPAGE 通过 set_fifu_values 函数传递CSV文件的列值,该函数调用CSV解析函数。 漏洞利用机制 当插件检测到 ->static 、 ->math 和 ->cus1 时,会替换CSV文件内容,此时加载恶意构造的CSV文件可触发payload。 环境搭建 使用Apache搭建WordPress环境 注意PHP与MySQL8的兼容性问题: MySQL8默认使用 caching_sha2_password 验证方式 解决方案: 安装WP Ultimate CSV Importer插件,并赋予作者权限 漏洞复现步骤 制作恶意CSV模板文件 注意: -> 字符在CSV中会报错,需通过抓包修改 在高级模式"Create WP Custom Fields"处抓包 将 CORECUSTFIELD 替换为 FIFUPOSTS 上传恶意CSV文件触发漏洞 技术细节 在 set_fifu_values 函数中: 使用 CORECUSTFIELD 作为触发条件之一 可替换为 FIFUPOSTS 实现利用 具体调用路径需进一步分析代码 官方修复情况 官方在最新版本中: 禁用了作者的权限 管理员仍可上传解析CSV 漏洞未完全修复 安全建议 立即升级到最新版本 限制插件使用权限 监控可疑的CSV文件上传行为 对用户上传的文件进行严格验证 参考 CVE编号:CVE-2023-4142 影响版本: <=7.9.8(所有用户),所有版本(管理员) 漏洞发现时间:2023年8月8日