代码审计---YCCMS系统
字数 1392 2025-08-05 08:19:04

YCCMS系统代码审计报告

一、环境搭建

  1. 系统要求

    • PHP版本:5.5.38
    • Web服务器:Apache
    • 数据库:MySQL
  2. 安装步骤

    • 下载源码:http://ahdx.down.chinaz.com/202003/yccms_v3.4.rar
    • 将源码部署到phpstudy环境
    • 导入数据库文件yccms.sql
    • 修改config配置文件中的数据库连接信息
  3. 目录结构

    /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

漏洞分析

  1. 使用eval()函数动态执行代码:eval('self::$_obj = new '.ucfirst($_a).'Action();');
  2. file_exists()函数存在路径遍历漏洞,可通过/controller/admin;/../绕过检查

利用方式

  1. 构造payload:
http://127.0.0.1/yccms/config/count.php?a=Factory();@eval($_POST[v]);//../
  1. 通过count.php文件包含run.inc.php实例化Factory类
  2. 执行任意PHP代码获取webshell

修复建议

  • 避免使用eval()函数
  • 严格过滤输入参数
  • 使用白名单验证文件路径

3. 任意文件删除漏洞

漏洞位置:通过POST参数pid控制文件删除路径

漏洞分析

  1. 文件根路径为/uploads
  2. 通过构造pid=../test_su.txt可删除上级目录文件
  3. 使用unlink()函数直接删除文件

利用方式

  1. 在后台图片管理模块抓包
  2. 修改POST参数:pid=../要删除的文件路径

修复建议

  • 限制文件删除范围
  • 验证文件路径合法性
  • 添加权限验证

4. 暴力破解漏洞

漏洞分析

  • 验证码只验证一次,不刷新
  • 可通过Burp Suite进行暴力破解

利用特征

  • 成功响应:返回内容为2
  • 失败响应:返回内容为1

修复建议

  • 每次验证后刷新验证码
  • 增加登录失败锁定机制
  • 限制尝试频率

5. 任意密码修改漏洞

漏洞位置:/controller/AdminAction.class.php

漏洞分析

  1. 只验证用户名、密码逻辑,不验证权限
  2. editAdmin()函数直接执行SQL更新语句

利用方式

  1. 构造修改密码请求包
  2. 无需登录即可修改任意用户密码

修复建议

  • 添加权限验证
  • 验证原密码
  • 使用CSRF Token

三、其他发现漏洞

  1. 越权访问漏洞

    • 未登录情况下可操作后台模块
    • 如越权文件上传
  2. 目录遍历漏洞

    • 可访问目录下的子目录文件

四、安全建议

  1. 输入验证

    • 所有用户输入都应视为不可信的
    • 实施严格的白名单验证
  2. 输出编码

    • 对所有动态输出内容进行编码
  3. 权限控制

    • 实施最小权限原则
    • 关键操作需二次验证
  4. 会话管理

    • 使用安全的会话机制
    • 实施适当的会话超时
  5. 安全配置

    • 禁用危险函数如eval()
    • 限制文件系统操作范围
  6. 日志监控

    • 记录所有敏感操作
    • 实施异常行为监控

五、总结

YCCMS系统存在多处严重安全漏洞,包括命令执行、任意文件删除、XSS注入等高危漏洞。建议开发者全面审查代码,实施上述安全建议,并进行彻底的安全测试后再投入生产环境使用。

YCCMS系统代码审计报告 一、环境搭建 系统要求 : PHP版本:5.5.38 Web服务器:Apache 数据库:MySQL 安装步骤 : 下载源码:http://ahdx.down.chinaz.com/202003/yccms_ v3.4.rar 将源码部署到phpstudy环境 导入数据库文件yccms.sql 修改config配置文件中的数据库连接信息 目录结构 : 二、漏洞分析 1. XSS注入漏洞 漏洞位置 :通过GET请求获取$art参数并直接输出 漏洞验证 : 修复建议 : 对用户输入进行HTML实体编码 使用htmlspecialchars()函数过滤输出 2. 命令执行漏洞 漏洞位置 :/public/class/Factory.class.php 漏洞分析 : 使用eval()函数动态执行代码: eval('self::$_obj = new '.ucfirst($_a).'Action();'); file_ exists()函数存在路径遍历漏洞,可通过 /controller/admin;/../ 绕过检查 利用方式 : 构造payload: 通过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注入等高危漏洞。建议开发者全面审查代码,实施上述安全建议,并进行彻底的安全测试后再投入生产环境使用。