某cms复现学习
字数 1373 2025-08-29 08:31:35
TuziCMS漏洞分析与复现教学文档
前言
本文档将详细分析TuziCMS内容管理系统中的多个安全漏洞,包括SQL注入、后台Getshell、任意文件删除和前台反射型XSS漏洞。通过本教程,您将学习到如何审计PHP代码中的常见安全问题。
环境搭建注意事项
- 源码拉取后发现无法正常安装,原因是
install目录下已存在install.lock文件 - 解决方法:删除
install/install.lock文件即可重新安装
第一处漏洞:SQL注入
漏洞位置
App/Manage/Controller/AdvertController.class.php及其他多个Controller文件
漏洞分析
- 请求示例:
GET /tuzicms-master/index.php/Manage/Download/index/id/11 - 问题代码:直接使用
id=$id进行SQL拼接,未做任何过滤 - 全局搜索发现20多个Controller存在相同问题
验证方法
- 构造恶意ID参数进行注入测试
- 成功获取数据库用户信息
修复建议
- 使用参数化查询或预处理语句
- 对输入参数进行严格过滤
第二处漏洞:后台Getshell
漏洞位置
do_fenye()方法中的配置文件写入功能
漏洞分析
- 配置文件路径:
CONF_PATH."config_fenye.php" - 关键问题:
- 使用
file_put_contents直接写入PHP文件 - 通过
I()函数获取输入,但过滤不充分 htmlspecialchars和strip_tags对单引号过滤不足
- 使用
利用方法
- 通过POST参数
PAGE_ARTICLE__HOME注入恶意代码 - 构造闭合单引号的PHP代码实现Getshell
修复建议
- 禁止直接写入PHP可执行代码
- 加强输入过滤,特别是对特殊字符的处理
- 限制配置文件写入权限
第三处漏洞:任意文件删除
漏洞位置
后台delSqlFiles()方法
漏洞分析
- 直接拼接文件路径,未做安全检查
- 可删除服务器上任意文件
修复建议
- 限制可删除的文件目录
- 对文件名进行严格校验
- 添加权限验证
第四处漏洞:前台反射型XSS
漏洞位置
index.php/article/group/id/参数
漏洞分析
- Payload示例:
index.php/article/group/id/2/" onmouseover=alert(/xss/) / - 问题根源:
- 使用
$_SERVER['SCRIPT_NAME']直接定义_PHP_FILE_ - 该变量可被注入恶意代码
- 最终输出到页面时未做转义
- 使用
利用方法
- 构造包含XSS代码的URL
- 诱使用户访问该URL触发XSS
修复建议
- 对
$_SERVER变量进行过滤 - 输出时使用
htmlspecialchars转义 - 设置HTTP头
X-XSS-Protection
参考链接
总结
通过分析TuziCMS的这些漏洞,我们可以学习到:
- 输入验证和过滤的重要性
- 直接拼接SQL的危险性
- 文件操作的安全注意事项
- XSS防护的基本原则
建议开发者在开发过程中遵循安全编码规范,对所有用户输入进行严格验证和过滤,避免类似安全问题的发生。