CSCMS代码审计(php)
字数 1492 2025-08-06 23:10:31
CSCMS v4.1.9 代码审计与漏洞分析报告
0x00 系统概述
CSCMS 是一款基于 PHP5+MySQL 开发的多功能内容管理系统,采用 CodeIgniter 3.1.3 框架作为内核,基于 MVC 模式开发。系统具有以下特点:
- 采用 OOP(面向对象)方式进行框架搭建
- 配置文件位于
/upload/cscms/config目录 - 前台入口文件为
index.php - 后台入口文件为
admin.php(通过设置IS_ADMIN=TRUE标志位实现后台功能)
0x01 路由分析
URL 路由遵循 CodeIgniter 的规则:
example.com/class/function/id/
例如:
http://192.168.111.141/index.php/dance/playsong
对应 dance 类下的 playsong 方法。
0x02 漏洞审计
1. SQL 注入漏洞
位置:upload/plugins/dance/playsong.php
漏洞代码:
$zd = $this->input->get_post('zd', TRUE, TRUE);
$row = $this->db->query("select id,cid,singerid,name,tid,fid,purl,sc,lrc,dhits".$zd." from ".CS_SqlPrefix."dance where id=".$id."")->row();
分析:
$zd变量直接拼接进 SQL 语句- 虽然使用了
get_post方法并设置了sql_clean=TRUE进行过滤 - 过滤函数
safe_replace过滤了一些特殊字符,但不需要引号闭合仍可构造 SQL 语句
利用:
通过 zd 参数注入 SQL 语句。
2. 任意文件删除漏洞
位置:后台删除附件功能
漏洞描述:
后台删除附件处未做任何判断和过滤,可删除任意文件。
3. 安装过程 RCE 漏洞
位置:install.php
漏洞代码:
$config = read_file(CSCMS.'sys'.FGF.'Cs_DB.php');
$config = preg_replace("/'CS_Sqlname',.*?\)/", "'CS_Sqlname','".$dbname."')", $config);
if (!write_file(CSCMS.'sys'.FGF.'Cs_DB.php', $config)) exit('5');
分析:
- 安装过程中数据库名称等参数未过滤直接写入配置文件
- 可通过数据库名称参数注入 PHP 代码
利用步骤:
- 删除
install.lock文件 - 重新安装系统
- 在数据库名称处输入恶意代码:
cscms');phpinfo();// - 安装完成后访问首页触发代码执行
4. 前台 RCE(模板注入)
位置:Csskins.php 的 cscms_php 方法
漏洞代码:
public function cscms_php($php, $content, $str) {
$evalstr = "return $content";
$newsphp = eval($evalstr);
$str = str_replace($php, $newsphp, $str);
return $str;
}
触发点:
- 通过
{cscmsphp}php代码{/cscmsphp}标签执行 PHP 代码 - 在视频上传的"剧情简介"等字段插入恶意模板代码
利用方法:
- 上传视频时在选填字段插入:
{cscmsphp}phpinfo();{/cscmsphp} - 访问视频播放页面触发代码执行
5. 后台 RCE(会员信息修改)
位置:会员信息修改功能
利用方法:
- 创建用户并设置个人签名包含恶意模板代码
- 管理员在后台修改该会员信息
- 访问特定 URL 触发代码执行
6. 后台 RCE(模板修改)
位置:后台模板修改功能
利用方法:
- 管理员后台修改会员主页模板
- 插入 PHP 代码并保存为
.html文件 - 系统会将这些 HTML 文件当作 PHP 解析
0x03 漏洞修复建议
-
SQL 注入:
- 使用预处理语句替代直接拼接 SQL
- 加强
safe_replace函数的过滤规则
-
文件删除:
- 限制删除操作的文件路径
- 增加权限验证
-
安装 RCE:
- 对写入配置文件的参数进行严格过滤
- 安装完成后立即删除或重命名安装文件
-
模板注入:
- 禁用
eval执行用户可控内容 - 过滤模板标签中的特殊字符
- 对用户输入的模板内容进行严格校验
- 禁用
-
通用建议:
- 升级 CodeIgniter 框架到最新版本
- 实施严格的输入验证和输出编码
- 最小化 PHP 执行权限
0x04 总结
CSCMS v4.1.9 存在多处高危漏洞,攻击者可利用这些漏洞实现:
- 未授权 SQL 注入
- 任意文件删除
- 前台/后台远程代码执行
- 通过安装过程获取服务器控制权
建议用户立即升级到最新版本或应用相关补丁,并检查系统是否已被入侵。