记一次详细的代码审计
字数 1019 2025-08-05 12:50:18
极致CMS v1.7漏洞分析与利用指南
前言
本文详细分析了极致CMS v1.7版本中存在的多个安全漏洞,包括SQL注入、XSS跨站脚本攻击和任意文件删除漏洞。通过对MVC架构的分析,深入理解漏洞产生的原因和利用方式。
MVC架构分析
核心架构
- 入口文件
index.php定义了应用目录和框架加载路径 - 框架核心文件
FrPHP/Fr.php负责初始化应用 - 路由处理流程:
- 接收URL参数(141行)
- 处理控制器和方法名(206行)
- 移除
index.php前缀(212行) - 拆分URL为数组(231行)
- 默认控制器设置为
Home(257-264行)
关键特性
- 默认控制器名:
Home - 默认方法名:
jizhi - 插件目录默认为空
- 控制器目录:
\Home\c\ - 模型目录:
\Home\m\
漏洞分析
SQL注入漏洞
位置1:HomeController.php中的jizhi方法
- 漏洞代码:
$url = explode('/', $url); $r = M('nav')->find(['url'=>$url[0]]); - 利用条件:
- 通过URL传递参数
- 默认控制器机制允许任意输入被转换为
Home
位置2:HomeController.php中的jizhi_details方法
- 通过传值进行SQL注入
- 未对输入进行过滤
利用方式
构造恶意URL:
index.php/恶意输入/...
由于默认控制器机制,恶意输入会被处理但最终控制器仍为Home
XSS跨站脚本漏洞
位置1:UserController.php的release方法
- 漏洞代码:
$data['body'] = $this->frparam('body',4); // 参数4表示不进行HTML实体编码 $w['body'] = $data['body']; - 利用条件:
- 提交POST数据
molds参数设置为article
利用Payload
tid=2&article=asd&body=<script>alert(1)</script>&id=4&molds=article&title=qwe&sad=qwe
位置2:ErrorController.php
- 漏洞代码:
直接输出未过滤的msg参数 - 利用方式:
?msg=<script>alert(1)</script>
任意文件删除漏洞
位置:SysController.php的deletePicAll方法
- 漏洞代码:
$pictures = M('pictures')->findAll('id in(' . $data . ')'); foreach($pictures as $v){ if(strpos($v['litpic'],'http')===false){ unlink('.'.$v['litpic']); } } - 利用条件:
- 控制
data参数 - 绕过单双引号过滤
- 控制
利用方式
使用16进制编码绕过引号过滤:
data=0x恶意SQL代码
漏洞修复建议
-
SQL注入修复:
- 使用预处理语句
- 对用户输入进行严格过滤
- 修改默认控制器机制
-
XSS修复:
- 对所有输出进行HTML实体编码
- 实现内容安全策略(CSP)
- 对富文本内容使用白名单过滤
-
文件删除修复:
- 严格验证文件路径
- 实现权限检查
- 禁止用户控制完整文件路径
总结
极致CMS v1.7存在多处严重安全漏洞,攻击者可利用这些漏洞进行数据窃取、网站篡改和服务器破坏。开发者应尽快修复这些问题,管理员应及时更新到安全版本。