
PluckCMS 4.7.20 Zip Slip漏洞导致远程代码执行
本报告记录了在 PluckCMS 中发现的一个严重安全漏洞,该漏洞允许经过身份验证的攻击者通过 Zip Slip 攻击向量实现远程代码执行。该漏洞存在于模块上传功能中,可通过上传包含恶意 PHP 代码的特制 ZIP 压缩包加以利用。
4.7.20
漏洞类型: Zip Slip 导致远程代码执行(RCE)
受影响组件: 模块管理系统(选项 → 管理模块)
攻击向量: 恶意 ZIP 文件上传
所需认证: 是(管理员面板访问权限)
严重性: 严重
该漏洞源于在模块上传过程中对 ZIP 压缩包内容缺乏充分的验证和清理。PluckCMS 允许管理员以 ZIP 格式上传模块,而未正确验证压缩包内的文件路径。攻击者可以利用路径遍历漏洞制作恶意 ZIP 文件,从而在服务器文件系统上任意放置文件。
当 ZIP 压缩包被解压时,应用程序未能验证解压出的文件是否保持在预期目录结构内。攻击者可利用这一缺陷将恶意 PHP 文件写入可通过 Web 访问的位置,随后在服务器上执行任意代码。
可以使用以下环境复现该漏洞:
git clone https://github.com/pluck-cms/pluck.git
cd pluck
ddev config --project-type=php --docroot=.
ddev start
托管 URL:http://pluck.ddev.site
在测试过程中使用了演示命令执行能力的概念验证载荷。该载荷利用 PHP 的系统执行函数来运行操作系统命令。
<?php
$fn = "sys" . "tem";
(string) $fn("id");
?>
成功利用此漏洞可使拥有管理员权限的经过身份验证的攻击者实现以下操作:
尽管该漏洞需要管理员身份验证,但由于其提供了直接导致系统完全沦陷的途径,因此属于严重安全风险。