Z-Blog 站被挂马之后:处理步骤和收录恢复
被挂马是收录的灾难,因为搜索引擎会把整站标记为不安全。怎么发现Search Console 的「安全性问题」报告搜索结果里标题下面是别人的内容页面莫名其妙跳转到赌博站立刻做三件事备份当前数据库(留证)改所有密码:后台、FTP、数据库、服务器
被挂马对收录的打击比大多数人想的重。不是「掉几名」这种程度,是整站被标记为不安全,浏览器红色警告,搜索引擎直接下架。我从发现到恢复完整走了一遍,把过程记下来。
先说怎么发现的
挂马往往不是你自己发现的,是别人告诉你的。我当时是被两个渠道同时提醒:
- 谷歌 Search Console 发来邮件,说「检测到网站存在安全问题」;
- 有读者在群里截图,说打开我的站,浏览器弹红框阻止访问。
还有一种更隐蔽的表现:搜索结果里你的标题下面,摘要显示的是别人的内容——通常是赌博、彩票、保健品之类。这是典型的「快照被注入」,蜘蛛抓到的页面已经被污染了,但你自己用浏览器打开看是正常的。
判断方法:用「查看源代码」而不是看渲染后的页面。注入的代码往往藏在 HTML 底部、或者 <script> 标签里,渲染出来看不见。
第一步:先止血,别急着修
发现之后的第一反应通常是「赶紧删掉」。这个顺序是错的。
先备份。把当前数据库完整导出一份、把整站文件打包一份,单独存到本地。理由有两个:一是留证,二是万一清理过程中删错了东西,还有得救。
再改密码。所有相关的密码都要改,一个不落:
- Z-Blog 后台管理员密码;
- FTP 或 SSH 密码;
- 数据库密码;
- 服务器控制面板密码;
- 如果用了 CDN 或者云存储,那边的密钥也要换。
很多挂马是通过某个弱密码进来的,你只改后台密码,人家从 FTP 又进来了。
最后让蜘蛛先别抓。这一步很多人会跳过,但很重要。在 robots.txt 里临时加一条 Disallow: /,或者直接把站点切到维护页返回 503。
为什么要这样?因为蜘蛛每抓一次带毒的页面,你的「不安全」记录就加深一次。等清理干净再放开,恢复起来更快。
第二步:找到落点
这一步最花时间。常见的落点有这么几类:
1. 主题目录里多出来的 PHP 文件。打开 zb_users/theme/你的主题名/,按修改时间排序,看看有没有你从没见过的文件。名字往往起得很像正常文件,比如 cache.php、config.php、tmp.php。
2. 入口文件被插了一行。对比 index.php、zb_system/function/c_system_base.php 这些核心文件,跟官方原版比对。被插进去的往往是 eval(base64_decode(...)) 这种,或者 include 一个远程地址。
3. 上传目录里伪装的图片。zb_users/upload/ 下面,扩展名是 .jpg 但内容其实是 PHP 的文件。判断方法是用文本编辑器打开,正常图片前面几个字节是乱码,如果开头是 <?php,那就是了。
4. 数据库里的文章内容。这个最容易漏。有些挂马是直接往文章正文里插入隐藏链接或脚本,你在文章列表里看标题都正常,得点进去看正文源码才能发现。
排查完找到的文件先重命名加 .bak 后缀,不要直接删,万一判断错了还能还原。
第三步:清理和加固
清理思路是:不确定的文件全部替换成官方原版。核心文件从官方下载包重新覆盖,主题和插件如果有原版也覆盖一遍。自己改过的地方,改完之后再重新加回去。
加固方面,几件事值得做:
- 后台登录地址不要用默认的
/zb_system/login.php,改个不常见的路径; - 关掉文件编辑功能(Z-Blog 后台有「允许在线编辑模板」的开关);
- 上传目录禁止执行 PHP,这个在 Nginx 或 Apache 配置里加一条规则就行;
- 定期备份,至少每周一次,备份文件放在站点目录之外。
第四步:申请重新审核
清理干净、确认页面源码没问题之后,才是向搜索引擎申报的环节。
谷歌方面:在 Search Console 的「安全问题和人工处置措施」里,会有个「请求审核」按钮。提交之前一定要确保真的清理干净了,因为审核不通过会退回,再提交要等更久。
百度方面:在搜索资源平台跑一次「抓取诊断」,看抓回来的 HTML 里有没有可疑代码。确认无误后,在「站点属性」或者反馈入口里说明情况。
恢复期有多长
我的情况是:提交审核后第 4 天,谷歌解除了不安全标记;百度的索引量恢复得慢一些,大概第三周开始回升,第六周基本回到原来的水平。
这段时间有两件事要做:
- 保持更新。停工反而会让蜘蛛觉得这站没人管了,恢复更慢。正常发文,节奏不用变。
- 别再折腾结构。这时候换主题、改 URL、调整分类,都会让恢复期变长。等症状过去了再动。
最后一句实话
被挂马这件事,防的成本远低于治的成本。上面那些加固措施,做一遍可能就半小时,但清理加恢复,我花了将近两个月的心力。有站的人,趁着还没出事,先把密码和权限收拾一遍。