Pluck CMS 4.7.10 后台 文件包含+文件上传导致getshell代码分析
字数 867 2025-08-26 22:11:22
Pluck CMS 4.7.10 后台文件包含+文件上传导致Getshell漏洞分析
0x01 漏洞描述
影响版本: Pluck CMS <=4.7.10 (包括4.7.2-4.7.10版本)
漏洞类型: 文件包含+文件上传导致远程代码执行
漏洞危害: 攻击者可通过组合利用这两个漏洞获取服务器权限
0x02 漏洞分析
漏洞原理
该漏洞由两个部分组合利用:
-
语言选择模块的文件包含漏洞:
- 框架的语言选择模块存在数据注入问题
- 攻击者可控制
langpref参数指向任意文件 - 该参数对应的文件会被全局PHP文件包含
-
文件上传漏洞:
- 后台文件上传功能使用白名单但未进行重命名
- 攻击者可上传恶意文件(如图种文件)并预测其路径
漏洞代码分析
-
入口文件
admin.php处理请求 -
language.php 关键逻辑:
if (文件存在 && cont1参数 != $langpref) { save_language($cont1); } -
save_file方法:
- 直接将传入的数据写入PHP文件
- 写入位置:
\data\settings\langpref.php
-
文件包含机制:
langpref.php中的值会被用于网站语言控制- 该文件会被全局PHP文件自动包含
0x03 漏洞复现步骤
1. 文件上传恶意文件
- 上传一个包含PHP代码的图种文件(如
wphp.jpg) - 文件上传路径通常为
/images/目录 - 由于未重命名,文件名可预测
2. 利用语言选择漏洞
发送包含恶意路径的请求:
language=../../../images/wphp.jpg
该参数会被保存到:
\data\settings\langpref.php
3. 触发文件包含
访问网站任意页面:
- 系统会自动包含
langpref.php中指定的文件 - 从而执行上传的恶意PHP代码
4. 获取Shell
访问上传的恶意文件路径执行命令:
http://target/images/wphp.jpg
0x04 修复建议
- 对语言选择参数进行严格过滤
- 文件上传功能应增加重命名机制
- 限制文件包含路径,禁止目录穿越
- 升级到最新版本(检查是否已修复)
0x05 注意事项
- 复现时需要确保上传的文件确实存在
- 路径可能需要根据实际情况调整(如
../../../images/wphp.jpg) - 该漏洞在4.7.2-4.7.10版本均存在