船说 CMS 漏洞怎么修补

liulian
liulian 初级会员超兽战士
发布于 2026-10-08 12:42 ·1 浏览 ·0 回复

学完这篇,你能把船说 CMS 的已知漏洞从「发现—升级—临时加固—被入侵后排查」走完一整套流程,不用停机重装也能把风险压下去。

第一步:先搞清你中的是哪一类漏洞、当前是哪个版本

这一步的目标是拿到两个信息:版本号 + 漏洞类型。版本号在后台首页右侧或「系统设置 → 系统信息」里能看到,也可以直接看服务器上的 /app/common.php 或 /data/version.php 里的版本常量。漏洞类型则对照官方更新公告、CNVD/CNNVD 的编号确认——船说 CMS 历史上公开的问题集中在后台任意文件上传、SQL 注入、模板文件包含、install 目录未删这几类,不同类型修法不一样,别一股脑全改。

注意:先备份再动手。数据库用 mysqldump -u root -p 库名 > bak.sql,网站目录用 tar czf site_bak.tar.gz /www/wwwroot/你的站点,备份文件放在 web 目录之外。

第二步:优先升级到官方最新补丁版(根治手段)

这一步做完,大部分已公开漏洞就直接消失了。去船说 CMS 官方渠道下载最新完整包或补丁包,解压后:

  1. 只覆盖 /app、/core、/public/static 这类程序目录;
  2. 不要覆盖 /config/database.php、/config/config.php、/uploads;
  3. 删除 /runtime 下的全部缓存(rm -rf runtime/*);
  4. 如果根目录还有 install/ 或 install.php,立刻删除或改名。

升级完登录后台,确认「系统信息」里的版本号已经变了,页面能正常打开。

注意:有些老站点改过核心文件,直接覆盖会导致白屏。升级前先用 diff 对比一下被改过的文件,或先在测试环境跑一遍。

第三步:升不了级?先做临时加固

有些老项目代码被改得面目全非,升级风险大,这时候做三件事:

改后台入口:把根目录的 admin.php(部分版本是 admin/index.php)改名成一串随机字符,例如 my8f3k2x.php。攻击者扫不到入口,自动化工具直接失效。

加固账号:后台「管理员管理」里,删掉所有非本人账号,密码改成 16 位以上大小写+符号组合,并给管理员登录加 IP 白名单(宝塔面板:网站 → 设置 → 网站目录 → 访问限制,或 Nginx 的 allow/deny)。

封住上传点:船说 CMS 的上传目录通常是 /uploads、/uploadfile、/public/uploads,检查这几个目录下有没有 .php 文件,有就说明可能已经中招。

第四步:给上传目录和模板目录禁止执行 PHP(最关键的落地措施)

漏洞利用链的最后一环几乎都要落到「上传的文件被执行」,掐断这一步收益最大。

Nginx 站点配置文件里加:

location ~* ^/(uploads|uploadfile|public/uploads|runtime)/.*\.(php|php5|phtml|pht)$ {
    deny all;
}
location ~* ^/(template|themes)/.*\.(php|php5|phtml)$ {
    deny all;
}

Apache 则在对应目录放 .htaccess:

<FilesMatch "\.(php|php5|phtml)$">
    Require all denied
</FilesMatch>

改完 nginx -t && nginx -s reload,然后随便传个 .php 测试文件上去访问,返回 403 才算成功。

注意:目录权限也一起改,上传目录设 755、文件 644,属主设成 web 运行用户(一般是 www),别给 777。

第五步:PHP 与服务器层收口

在 PHP 配置文件(宝塔:软件商店 → PHP → 设置 → 配置修改)里调整:

  • open_basedir 限制到站点目录,防止跨目录读文件;
  • disable_functions 加上 exec,passthru,shell_exec,system,proc_open,popen,assert;
  • display_errors = Off,log_errors = On。

注意:某些插件依赖 curl、file_get_contents,禁用函数前先在测试环境确认不会导致功能报错。

第六步:判断是否已被入侵

补漏洞不等于清后门。SSH 里跑一遍:

find /www/wwwroot/站点 -name "*.php" -mtime -30 -ls

列出近 30 天被修改的 PHP 文件,重点看上传目录和 /public。再用 grep -rn "eval\|base64_decode\|assert(" --include=*.php /www/wwwroot/站点 搜可疑代码。同时检查后台管理员列表、数据库 user 表、以及 crontab -l 有没有陌生定时任务。

注意:发现 webshell 先别急着删,先记录文件名、时间、内容再清理,方便判断入侵时间点,也便于跟服务商沟通。

小结

  1. 先确认版本和漏洞类型,动手前一定备份数据库和站点。
  2. 能升级就升级到官方最新补丁版,覆盖时保留配置文件并清 runtime 缓存。
  3. 升不了就改后台入口名、加强密码、加 IP 白名单。
  4. 上传目录、模板目录一律禁止执行 PHP,这是性价比最高的一步。
  5. 漏洞补完必须做入侵排查,重点看近期被改的 PHP 文件和管理员表。
版权声明:本文来自 GJ站长论坛《船说 CMS 漏洞怎么修补》
原文链接:https://www.gj0.com/thread-956.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~