代码审计---YCCMS系统
字数 1392 2025-08-05 08:19:04
YCCMS系统代码审计报告
一、环境搭建
-
系统要求:
- PHP版本:5.5.38
- Web服务器:Apache
- 数据库:MySQL
-
安装步骤:
- 下载源码:http://ahdx.down.chinaz.com/202003/yccms_v3.4.rar
- 将源码部署到phpstudy环境
- 导入数据库文件yccms.sql
- 修改config配置文件中的数据库连接信息
-
目录结构:
/Admin - 后台路径首页,包含/config/run.inc.php文件 /Ceshi - 测试页面 /Ceshi2 - 测试页面 /config - 配置变量目录 /Compile - 编译目录 /Public - 存放缓存代码及网站相关配置 /Uploads - 上传图片目录 /view - 模板目录
二、漏洞分析
1. XSS注入漏洞
漏洞位置:通过GET请求获取$art参数并直接输出
漏洞验证:
http://example.com?art=<script>alert(1)</script>
修复建议:
- 对用户输入进行HTML实体编码
- 使用htmlspecialchars()函数过滤输出
2. 命令执行漏洞
漏洞位置:/public/class/Factory.class.php
漏洞分析:
- 使用eval()函数动态执行代码:
eval('self::$_obj = new '.ucfirst($_a).'Action();'); - file_exists()函数存在路径遍历漏洞,可通过
/controller/admin;/../绕过检查
利用方式:
- 构造payload:
http://127.0.0.1/yccms/config/count.php?a=Factory();@eval($_POST[v]);//../
- 通过count.php文件包含run.inc.php实例化Factory类
- 执行任意PHP代码获取webshell
修复建议:
- 避免使用eval()函数
- 严格过滤输入参数
- 使用白名单验证文件路径
3. 任意文件删除漏洞
漏洞位置:通过POST参数pid控制文件删除路径
漏洞分析:
- 文件根路径为/uploads
- 通过构造
pid=../test_su.txt可删除上级目录文件 - 使用unlink()函数直接删除文件
利用方式:
- 在后台图片管理模块抓包
- 修改POST参数:
pid=../要删除的文件路径
修复建议:
- 限制文件删除范围
- 验证文件路径合法性
- 添加权限验证
4. 暴力破解漏洞
漏洞分析:
- 验证码只验证一次,不刷新
- 可通过Burp Suite进行暴力破解
利用特征:
- 成功响应:返回内容为2
- 失败响应:返回内容为1
修复建议:
- 每次验证后刷新验证码
- 增加登录失败锁定机制
- 限制尝试频率
5. 任意密码修改漏洞
漏洞位置:/controller/AdminAction.class.php
漏洞分析:
- 只验证用户名、密码逻辑,不验证权限
- editAdmin()函数直接执行SQL更新语句
利用方式:
- 构造修改密码请求包
- 无需登录即可修改任意用户密码
修复建议:
- 添加权限验证
- 验证原密码
- 使用CSRF Token
三、其他发现漏洞
-
越权访问漏洞:
- 未登录情况下可操作后台模块
- 如越权文件上传
-
目录遍历漏洞:
- 可访问目录下的子目录文件
四、安全建议
-
输入验证:
- 所有用户输入都应视为不可信的
- 实施严格的白名单验证
-
输出编码:
- 对所有动态输出内容进行编码
-
权限控制:
- 实施最小权限原则
- 关键操作需二次验证
-
会话管理:
- 使用安全的会话机制
- 实施适当的会话超时
-
安全配置:
- 禁用危险函数如eval()
- 限制文件系统操作范围
-
日志监控:
- 记录所有敏感操作
- 实施异常行为监控
五、总结
YCCMS系统存在多处严重安全漏洞,包括命令执行、任意文件删除、XSS注入等高危漏洞。建议开发者全面审查代码,实施上述安全建议,并进行彻底的安全测试后再投入生产环境使用。