网站被黑了?先别关电脑,照着这个清单一条条做

早上打开网站,首页变成赌博广告;点进后台,密码突然失效;用户私信问“你们网站是不是出事了”……别划走,这事儿真不罕见——上周我帮三个客户处理的,全是同一天被挂黑链。

第一步:立即隔离,防止损失扩大

马上断开网站对外服务。不是“考虑一下”,是现在就去主机控制面板,找“暂停网站”或“开启维护模式”的按钮。没有?那就用FTP连上去,把根目录下的 index.php 改成 index.php.bak,或者直接把 .htaccess 临时重命名。

黑客不需要你在线,他只需要你的服务器开着、文件可写、漏洞没补。你多拖一分钟,他就多一分时间往数据库里塞黑链、往JS里埋跳转。

一个真实教训:朋友发现网站被改首页后,第一反应是登录FTP删黑链文件。结果刚删完,页面刷新又回来了——因为黑客留的后门脚本还在运行,一检测到文件消失,立刻自动生成新的。他来回删了四次,三小时过去,问题原封不动。

第二步:全面排查,找到入侵根源

网站下线只是止损,真正要命的是“怎么进来的”。别急着恢复备份,先当一回数字侦探:

  1. 插件和主题是头号嫌疑犯:尤其是那个三年没更新、从某论坛下载的“增强SEO”插件。全部禁用,换回官方默认主题,看看恶意内容是否消失。
  2. 翻文件修改时间:在FTP里按“修改日期”倒序排列,重点盯住出事前后48小时内被改过的 .php.js 文件。看到一个2015年的 functions.php 昨天被改过?标红,重点查。
  3. 查人,也查数据库里的“幽灵”:登录phpMyAdmin,打开 wp_users 表,看有没有ID为999、用户名叫 admin123 的陌生管理员;再搜 wp_options 表,看 siteurltheme_mods_ 开头的字段里,有没有一长串base64加密的代码。
  4. 翻日志,找异常访客:打开主机后台的“访问日志”,搜索 wp-login.phpxmlrpc.phpshell.php 这些关键词,看入侵前几小时有没有同一IP反复POST、大量404请求,或者来自俄罗斯、越南的IP集中扫后台路径。

第三步:彻底清理,不留后患

删文件不等于清干净。很多后门藏在图片里、混在配置里、甚至写进数据库选项里。

  1. 重装核心程序:去 WordPress.org 官网下载最新版安装包,解压后,只保留你自己的 wp-content/uploads(图片)、wp-config.php(数据库配置)和 wp-content/themes/你自己的主题 这三个部分,其余全用新文件覆盖。
  2. 手把手检查上传目录:进 wp-content/uploads/2024/05/ 这类文件夹,别光看后缀是 .jpg 就放心——右键查看文件属性,确认真实类型。如果一个“图片”大小只有2KB、创建时间比其他图晚一秒,十有八九是伪装的PHP后门。
  3. 数据库不能只靠插件扫:在phpMyAdmin里手动执行这条SQL,查所有含可疑JS域名的字段:
SELECT * FROM wp_posts WHERE post_content LIKE '%cdn-attack%' OR post_content LIKE '%xxxjs.com%';

同时检查 wp_options 表里 option_value 字段,搜索 eval(base64_decode(<script src= 这些关键词。

一个具体操作:黑客最爱在 wp_optionstheme_mods_twentytwentyfour 这类字段里,塞一段加密的PHP代码,让它每次加载主题时自动拉取外部JS。你删了前台代码,它下次刷新又回来——必须进数据库手动清掉整段值。

第四步:加固安全,亡羊补牢

清理完不等于安全了。就像修好漏水的水管,还得换掉生锈的接头。

  1. 所有能更新的,今天全更新:WordPress核心、所有插件、所有主题。别信“等忙完这波再更”,上个月爆出的WP Mail SMTP插件RCE漏洞,就是靠旧版本躺赢进来的。
  2. 密码必须全换,且不能“123456”加个!:后台管理员、FTP、数据库、主机控制台,四个地方密码全部重设。长度至少12位,包含大小写字母+数字+符号。顺手在后台装个Wordfence,打开“两步验证”开关。
  3. 把后台入口藏起来:用插件把 /wp-admin 改成 /my-secret-login 这种谁都猜不到的路径。自动化攻击脚本90%卡在这一步。
  4. 文件权限该锁死就锁死:用FTP右键点 wp-config.php → “文件权限”,改成 400;根目录下所有文件统一设为 644,文件夹设为 755。别嫌麻烦,这是防住99%暴力写入的基础。
  5. 主机商别只看价格:如果你用的是那种“99元买三年”的小厂主机,现在就去查他们有没有基础WAF防火墙、是否支持一键扫描木马。没有?趁早换。

第五步:提交申诉,挽回搜索引擎信任

百度和谷歌不会主动告诉你“我们已标记你为危险网站”,但你会明显感觉到:搜索自己品牌词,首页跳出的却是“XXX网站 黑链”;自然流量断崖下跌;新文章发一周还不收录。

  1. 先自查还剩多少“毒页面”:在百度搜 site:yourdomain.com "赌博",在谷歌搜 site:yourdomain.com inurl:wp-content,把还能打开的恶意页面URL都记下来。
  2. 立刻去站长平台“自首”
  • 百度搜索资源平台 → 左侧菜单“安全与人工审核” → “已解决安全问题” → 填写被黑时间段、已采取措施(如“全站文件重装”“所有密码重置”“启用两步验证”),上传清理前后首页截图;
  • Google Search Console → “安全与人工处罚” → “请求审核” → 同样写清楚处理动作,附上干净首页的源码截图(Ctrl+U里能看到没恶意JS)。
  1. 重新提交Sitemap:生成新网站地图(可用Yoast SEO插件一键生成),在两个平台里重新提交,告诉蜘蛛:“这些才是我现在的正经页面”。

关键点:申诉别写“我们已经修复”,要写“5月20日发现被黑,当天停站;5月21日重装全部核心文件;5月22日重置全部账户密码并启用两步验证”。越具体,审核越快过。

第六步:建立常态备份与监控机制

别等下次被黑才想起备份。你手机相册都自动同步iCloud,网站凭什么裸奔?

  1. 备份必须包含两样东西:所有网站文件 + 整个数据库(不是只导出wp_posts表)。
  2. 备份不能只存在主机上:用主机自带备份功能,或装UpdraftPlus插件,设置自动备份到腾讯微云、阿里云盘或你的个人邮箱(附件上限够存压缩包)。
  3. 监控要能“喊你”:用国内站长常用的“百度统计”事件跟踪,给首页加个简单JS监测(比如监控<title>是否含“黑链”“赌博”字样),一旦异常立刻微信提醒你;或者用阿里云的“云监控”免费版,设置HTTP状态码非200就发短信。
  4. 每月花10分钟手动巡检:登录后台,看插件列表里有没有不认识的;进FTP,扫一眼最近修改的文件;打开站长平台,看“安全中心”有没有新告警。

今天下班前就能做的一件事

别收藏,别等“明天有空”,现在就打开你正在用的主机控制面板(比如腾讯云轻量应用服务器的控制台、阿里云虚拟主机管理页,或者宝塔面板),点进“备份管理”或“一键备份”模块。

如果最近一次完整备份超过7天,立刻点击“立即备份”,勾选“网站文件+数据库”,目标位置选“发送到邮箱”或“保存到对象存储”。

做完这一步,关掉页面。今晚睡觉前,你会比昨天踏实十倍——因为最坏的情况,你已经有了一张能随时兑现的底牌。