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数组中经过处理后的键名。处理流程如下:
- 遍历
$map数组中的每个键名 - 如果键名包含
->static、->math或->cus1字符串,则从$map数组中删除该键 - 否则,使用
strtr()函数将$trim_content数组中的键值对应替换掉键名中的字符串 - 生成
$header_trim并存储在$map数组中
触发条件
存在两处触发条件:
FIFUPOSTSFIFUPAGE
通过set_fifu_values函数传递CSV文件的列值,该函数调用CSV解析函数。
漏洞利用机制
当插件检测到->static、->math和->cus1时,会替换CSV文件内容,此时加载恶意构造的CSV文件可触发payload。
环境搭建
- 使用Apache搭建WordPress环境
- 注意PHP与MySQL8的兼容性问题:
- MySQL8默认使用
caching_sha2_password验证方式 - 解决方案:
update user set plugin='mysql_native_password' where User='root'; flush PRIVILEGES;
- MySQL8默认使用
- 安装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日