seacms 9.92全局变量覆盖从越权到RCE
字数 1044 2025-08-18 11:38:52

SeaCMS 9.92 全局变量覆盖漏洞分析:从越权到RCE

漏洞概述

SeaCMS 9.92版本存在一个严重的全局变量覆盖漏洞,攻击者可以利用该漏洞实现前台越权访问后台,并最终获取远程代码执行(RCE)权限。该漏洞已被CNVD收录,厂商已发布修复版本。

漏洞分析

1. 变量覆盖漏洞根源

漏洞位于common.php文件中:

  1. 变量过滤不完整

    • 文件第22行对请求参数进行了校验以防止变量覆盖,但遗漏了对$_FILES的校验
    • 第115行存在动态赋值操作,允许注册$FILES变量
  2. 文件包含逻辑

    • 第200行判断是否存在$_FILES变量,如果存在则包含uploadsafe.inc.php

2. uploadsafe.inc.php中的关键漏洞

uploadsafe.inc.php文件中:

// 第34行存在未加限制的变量覆盖
foreach($_POST as $key => $value) {
    
$$
key = $value;
}

由于第21行有判断条件,攻击者需要同时提交以下参数才能成功覆盖session:

  • _SESSION[seaadminid]
  • _SESSION[seagroupid]
  • _SESSION[sea_ckstr] (登录验证码)
  • _FILES
  • check

3. 越权攻击流程

  1. 注册普通用户:在前台注册一个普通用户(如test:123456)
  2. 构造恶意请求:在登录时提交精心构造的POST数据
  3. 覆盖session:将普通用户的session覆盖为管理员session
  4. 访问后台:直接获得管理员权限

4. 后台RCE漏洞

后台RCE漏洞位于adminconfigmark.php文件:

  1. 动态变量注册:19-23行循环接收"photo_*"参数并动态注册变量
  2. 配置写入:将变量拼接成字符串$configstr后写入配置文件
  3. 文件包含:第56行写入后包含该配置文件

漏洞复现步骤

越权攻击

  1. 注册普通用户账号
  2. 登录时提交以下恶意请求:
POST /login.php HTTP/1.1
...
check=1&_FILES=1&_SESSION[seaadminid]=1&_SESSION[seagroupid]=1&_SESSION[sea_ckstr]=
  1. 访问后台地址,获得管理员权限

后台RCE

  1. 访问后台图片水印设置功能
  2. 提交包含恶意代码的"photo_*"参数
  3. 系统将恶意代码写入配置文件并包含执行

漏洞修复建议

  1. 升级到SeaCMS最新版本(9.95或更高)
  2. 加强变量过滤,特别是对$_FILES$_SESSION的检查
  3. 对动态变量注册进行严格限制
  4. 配置文件写入前进行严格的过滤和校验

总结

该漏洞利用链展示了从变量覆盖到越权再到RCE的完整攻击路径,危害性极高。开发人员应重视全局变量覆盖问题,对所有用户输入进行严格过滤,特别是涉及权限控制和文件操作的敏感功能。

SeaCMS 9.92 全局变量覆盖漏洞分析:从越权到RCE 漏洞概述 SeaCMS 9.92版本存在一个严重的全局变量覆盖漏洞,攻击者可以利用该漏洞实现前台越权访问后台,并最终获取远程代码执行(RCE)权限。该漏洞已被CNVD收录,厂商已发布修复版本。 漏洞分析 1. 变量覆盖漏洞根源 漏洞位于 common.php 文件中: 变量过滤不完整 : 文件第22行对请求参数进行了校验以防止变量覆盖,但遗漏了对 $_FILES 的校验 第115行存在动态赋值操作,允许注册 $FILES 变量 文件包含逻辑 : 第200行判断是否存在 $_FILES 变量,如果存在则包含 uploadsafe.inc.php 2. uploadsafe.inc.php中的关键漏洞 在 uploadsafe.inc.php 文件中: 由于第21行有判断条件,攻击者需要同时提交以下参数才能成功覆盖session: _SESSION[seaadminid] _SESSION[seagroupid] _SESSION[sea_ckstr] (登录验证码) _FILES check 3. 越权攻击流程 注册普通用户 :在前台注册一个普通用户(如test:123456) 构造恶意请求 :在登录时提交精心构造的POST数据 覆盖session :将普通用户的session覆盖为管理员session 访问后台 :直接获得管理员权限 4. 后台RCE漏洞 后台RCE漏洞位于 adminconfigmark.php 文件: 动态变量注册 :19-23行循环接收"photo_* "参数并动态注册变量 配置写入 :将变量拼接成字符串 $configstr 后写入配置文件 文件包含 :第56行写入后包含该配置文件 漏洞复现步骤 越权攻击 注册普通用户账号 登录时提交以下恶意请求: 访问后台地址,获得管理员权限 后台RCE 访问后台图片水印设置功能 提交包含恶意代码的"photo_* "参数 系统将恶意代码写入配置文件并包含执行 漏洞修复建议 升级到SeaCMS最新版本(9.95或更高) 加强变量过滤,特别是对 $_FILES 和 $_SESSION 的检查 对动态变量注册进行严格限制 配置文件写入前进行严格的过滤和校验 总结 该漏洞利用链展示了从变量覆盖到越权再到RCE的完整攻击路径,危害性极高。开发人员应重视全局变量覆盖问题,对所有用户输入进行严格过滤,特别是涉及权限控制和文件操作的敏感功能。