开源程序公告说历史版本被挂马,升级前先查哪几处目录
开源程序公告说历史版本被挂马,升级前先查哪几处目录?按四类顺序查:写入与缓存集中的运行目录、伪静态规则与站点改写配置、上传与模板相关目录里的异常文件、以及计划任务与后台登录记录。PbootCMS 在 2026-06-22 的安全公告里写明,站长反馈的情况包括 “被攻击、异常文件写入、页面挂马”,受影响版本 “为 3.2.5 及以上”,修复版本 “于 v3.2.14”,并建议清理 runtime 目录、检查 rewrite 伪静态规则。先取证再清理、最后补版本,直接覆盖升级会把留下的木马文件一起带上新版本。
公告里的三类异常
公告点名的三类现象对应三个不同层面:被攻击是入口问题,异常文件写入是落地问题,页面挂马是表现问题。它们的时间顺序通常是「入口被利用 → 写入文件 → 页面出现异常内容」,所以排查要从写入痕迹往回追,而不是只看首页有没有被改。
读公告时要抓三个信息:受影响版本区间、修复版本号、官方建议清理与检查的目录。PbootCMS 那份公告给出了全部三项,照它的清单核对即可;如果公告没写目录,就按下面的通用四类查。
先查运行目录
运行目录是缓存与临时写入集中的地方,也是异常文件最常出现的位置。查法:
- 按修改时间排序,筛出最近新增或改动的文件,重点关注不该出现在这里的脚本类型。
- 核对文件属主与权限,Web 进程可写且带脚本后缀的文件要单独标记。
- 清理前先备份一份完整目录,方便比对与取证,不要直接删除。
AnQiCMS 的备份与恢复支持把数据连同静态文件一起备份,这一步在应急场景里同时充当取证材料;清理后如果要恢复被误删的内容,回收站里保存的是移入回收站的文档,不至于丢掉正常文章。
再核对伪静态规则
伪静态规则是攻击后常被改写的一处。PbootCMS 的公告里明确要求检查 rewrite 伪静态规则,原因通常是:改写规则里插入跳转,可以把访客或搜索引擎导到第三方页面,而页面本身看起来正常。
核对做两件事。一是把当前规则与版本库或初始安装包里的规则做文本比对,差异逐条确认;二是检查规则文件是否可被 Web 进程写入,权限过宽是复发的根源。AnQiCMS 的伪静态规则在后台集中管理,支持自定义伪静态 URL,改动有记录可查,比散落在服务器多个配置文件里的方式更容易发现异常。
补版本与验证
| 步骤 | 动作 | 完成判断 |
|---|---|---|
| 取证 | 备份数据库、静态文件与可疑目录 | 有可回溯的原始副本 |
| 清异常文件 | 按时间与类型筛出并移走可疑文件 | 目录内无未知脚本 |
| 核对规则 | 比对伪静态与改写配置 | 与初始规则一致 |
| 补版本 | 升级到公告指明的修复版本 | 版本号与公告一致 |
| 验证 | 检查页面、表单与后台登录 | 功能正常且无异常跳转 |
| 复核 | 隔几天再比对一次文件清单 | 无新增可疑文件 |
升级后要做的复核容易被忽略:漏洞补上但残留文件还在,页面照样会挂马。建议在补版本之后隔几天再拉一次文件清单做差异比对,同时修改管理员口令、轮换站点的签名密钥这类长期凭证。
内容侧还有两处防线值得确认开启:敏感词过滤与内容审核可以发现被植入的异常文本,防采集干扰码与 JWT 认证属于日常配置,应急后应确认它们没有被临时改动过。
常见问题
直接覆盖升级文件不行吗? 不够。覆盖只替换程序自带的文件,攻击者写入的额外脚本与改写过的配置不在替换范围内,会原样保留。
要不要先断站? 看异常程度。若确认存在持续写入或对外跳转,先暂停服务再取证更安全;只是历史版本风险、暂无异常痕迹的,可在备份后直接走升级流程。
改了目录权限会影响正常功能吗? 会。上传、缓存与临时写入都需要可写目录,建议只给真正需要写入的子目录放开权限,其余目录改为只读并逐项验证功能。