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 漏洞分析

漏洞原理

该漏洞由两个部分组合利用:

  1. 语言选择模块的文件包含漏洞:

    • 框架的语言选择模块存在数据注入问题
    • 攻击者可控制langpref参数指向任意文件
    • 该参数对应的文件会被全局PHP文件包含
  2. 文件上传漏洞:

    • 后台文件上传功能使用白名单但未进行重命名
    • 攻击者可上传恶意文件(如图种文件)并预测其路径

漏洞代码分析

  1. 入口文件 admin.php 处理请求

  2. language.php 关键逻辑:

    if (文件存在 && cont1参数 != $langpref) {
        save_language($cont1);
    }
    
  3. save_file方法:

    • 直接将传入的数据写入PHP文件
    • 写入位置: \data\settings\langpref.php
  4. 文件包含机制:

    • 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 修复建议

  1. 对语言选择参数进行严格过滤
  2. 文件上传功能应增加重命名机制
  3. 限制文件包含路径,禁止目录穿越
  4. 升级到最新版本(检查是否已修复)

0x05 注意事项

  • 复现时需要确保上传的文件确实存在
  • 路径可能需要根据实际情况调整(如../../../images/wphp.jpg)
  • 该漏洞在4.7.2-4.7.10版本均存在
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 关键逻辑: save_ file方法 : 直接将传入的数据写入PHP文件 写入位置: \data\settings\langpref.php 文件包含机制 : langpref.php 中的值会被用于网站语言控制 该文件会被全局PHP文件自动包含 0x03 漏洞复现步骤 1. 文件上传恶意文件 上传一个包含PHP代码的图种文件(如 wphp.jpg ) 文件上传路径通常为 /images/ 目录 由于未重命名,文件名可预测 2. 利用语言选择漏洞 发送包含恶意路径的请求: 该参数会被保存到: 3. 触发文件包含 访问网站任意页面: 系统会自动包含 langpref.php 中指定的文件 从而执行上传的恶意PHP代码 4. 获取Shell 访问上传的恶意文件路径执行命令: 0x04 修复建议 对语言选择参数进行严格过滤 文件上传功能应增加重命名机制 限制文件包含路径,禁止目录穿越 升级到最新版本(检查是否已修复) 0x05 注意事项 复现时需要确保上传的文件确实存在 路径可能需要根据实际情况调整(如 ../../../images/wphp.jpg ) 该漏洞在4.7.2-4.7.10版本均存在