Skip to content

MacCMS 安全加固 ​

把 MacCMS 放到公网上,就等于把一个老框架的站点暴露给全世界。MacCMS V10 基于 ThinkPHP5,而 ThinkPHP5 历史上出过影响很大的漏洞,默认配置又比较宽松。自建站必须加固,否则很容易被扫描器挂马、植入广告、甚至拿到服务器权限。下面几件事装完就该做。

防住 ThinkPHP5 远程命令执行(RCE) ​

风险:ThinkPHP5 曾被爆出远程命令执行漏洞,攻击者构造一条特殊的 URL,就能让服务器执行任意命令。典型的攻击 payload 形如:

?s=/index/\think\app/invokefunction&function=call_user_func_array...

这类请求如果打中没打补丁的站点,后果非常严重(相当于把服务器交出去)。

本仓库已自带补丁

我们对本仓库源码做过只读安全审计:当前框架是 ThinkPHP 5.0.24,think\App::module() 已用正则白名单拦截 \think\app 这类命名空间注入,经典 RCE payload 会直接命中 404。也就是说框架层已打上补丁,下面的加固更多是纵深防御,不是补丁本身缺失。

防护:

  • 升级到打了补丁的版本:关注 magicblack/maccms10(备用 maccmsapp/maccms10)的发布,第一时间更新。这是最根本的办法。
  • 加 WAF / 拦截规则:在 Nginx 或云防火墙里拦掉带 invokefunction、call_user_func_array、\think\ 这类特征的请求,拦掉 ThinkPHP5 其它历史 CVE(如 SQL 注入系列)的变体。
  • 别在生产开调试:调试模式会把报错细节暴露给攻击者,等于帮他们探路(见下文)。

后台入口改名 ​

风险:默认后台是 admin.php,谁都知道,等于把家门口挂了块牌子。

防护:进网站根目录,把 admin.php 改成别人猜不到的名字,比如 admin7854.php,之后用新地址进后台。改完记得同步改伪静态规则里 admin.php 那一行,否则后台会 404。

关闭调试模式 ​

风险:开着调试(app_debug / app_trace)时,一旦报错就把文件路径、SQL、框架版本等细节直接显示出来,这些都是攻击者想要的信息。

防护:生产环境把调试和 Trace 关掉。配置在 application/config.php:

php
return [
    'app_debug' => false,
    'app_trace' => false,
    // ...
];

收紧目录与文件权限 ​

风险:权限给太宽(比如全目录 777),一旦有文件被上传或篡改,影响范围会扩大。

防护:按最小权限来——

  • 只有需要写入的目录可写:runtime(缓存)、upload(附件)。
  • 其余目录和文件给只读 / 最小权限,别一股脑 777。
  • 安装完成后,锁住或删掉安装相关目录,避免被人触发重装(配合删 install.lock)。

及时升级打补丁 ​

安全不是一次性的事。框架和 CMS 都会陆续修漏洞,装完就不管,迟早被老漏洞打中。

  • 关注 magicblack/maccms10 的更新与安全公告。
  • 升级前先备份数据库和配置文件。
  • 升级后回归测试一遍前台、后台、采集和 API 接口。

想知道源码里有没有后门? ​

我们对本仓库源码做过一次只读的后门排查:按危险函数(eval / assert / system / base64_decode 等)和 webshell 特征全仓扫描,逐条看上下文判定。范围内未发现后门或 webshell——命中的点都是框架 / 业务的正常用法(比如模板引擎、后台取 CPU 占用、采集参数解码)。完整的扫描范围、命中点和判定理由见源码安全审计报告。

结论对应特定版本

本次审计于 2026-10-12 完成,对应源码版本号 2026.1000.4056(application/extra/version.php),上游仓库 github.com/magicblack/maccms10。审计结论只对该版本成立——官方发布节奏较快,你手上的源码若版本号不同,请以审计报告里的方法自行重新复核,别直接套用「无后门」结论。


遇到具体报错先看部署排障大全,装站流程见安装教程,想了解框架结构见源码结构分析。