“网站被黑:中毒症状、清理步骤与防止再次被黑”
🔒 登录后可标记已读这篇笔记讲 WordPress 网站疑似被黑时怎么判断、清理的具体步骤、以及清理完之后怎么防止再次中毒。Wordfence《恶意软件扫描与登录安全》和 Solid Security《站点检查、备份与实用工具设置》都提到过"如果怀疑网站已经被黑,需要专门清理流程,不在那篇范围内"——这篇笔记就是补上这一块。适合网站已经出现异常、需要马上排查处理的站长。
重点内容
症状 / 原因 / 判断方式
| 症状 | 可能原因 |
|---|---|
| 首页被替换成陌生内容/广告/其他语言页面 | 主题文件或首页被篡改(Deface 攻击) |
| Google 搜索结果显示跟网站主题无关的关键词(药品、赌博、成人内容) | SEO 垃圾注入(SEO Spam),恶意代码常常只在搜索引擎爬虫访问时才显示,人工肉眼打开网站反而看不出异常 |
| 浏览器/主机商弹出"此网站可能包含恶意软件"警告 | 网站已被 Google Safe Browsing 或主机商标记为分发恶意软件 |
[截图:浏览器打开被标记网站时弹出的"此网站可能包含恶意软件"红色警告页面] | 网站速度骤降、CPU 占用异常飙高 | 后门脚本在后台跑(挖矿、发送垃圾邮件、当跳板攻击别的网站) | | 后台多出不认识的管理员账号 | 攻击者已经拿到管理员权限并留了后门账号 | | wp-content/uploads 或插件目录下出现看不懂的 .php 文件 | Webshell(攻击者留的远程控制文件) | | 主机商邮件通知"网站发送大量垃圾邮件"或直接暂停账号 | 网站被用来当垃圾邮件跳板 |
怎么确认是不是真的被黑
- 先用扫描工具(Wordfence Scan 或 Sucuri 远程扫描)跑一次,看有没有报出已知恶意文件特征
- 到 Google Search Console → Security Issues 检查 Google 有没有标记网站
- 用
sitecheck.sucuri.net之类的免费远程扫描工具,从外部检查网站前台有没有被注入的恶意代码——这类工具不需要装插件,直接输入网址就能查
[截图:sitecheck.sucuri.net 的远程扫描结果页面,显示网站是否被标记为恶意/被黑]
- 检查最近的文件修改时间:透过 FTP 或主机文件管理器,按修改日期排序
wp-content目录,异常集中在某个时间点新增/改动的文件是重点怀疑对象
清理步骤
- 先备份现状:即使网站已经中毒,也要先备份一份当下的状态(当作「案发现场」,方便事后比对到底改了什么),再开始清理
- 切到维护模式,联络主机商:避免访客继续看到被篡改的内容或触发恶意脚本;同时通知主机商说明情况,部分主机商有免费协助清理服务
- 更换所有密码:WordPress 管理员密码、数据库密码、FTP/SSH 密码、主机商后台密码,全部重设,假设旧密码已经泄露
- 删除不认识的管理员账号:进「用户」列表逐一确认,陌生账号直接删除
- 换掉核心文件:重新下载全新的 WordPress 核心文件覆盖现有安装(
wp-content目录除外),确保wp-admin、wp-includes这些目录全部是干净版本 - 逐一检查主题和插件:
- 停用/删除任何不认识、很久没更新、或来路不明(破解版/汉化站下载)的插件和主题
- 保留的插件主题也重新下载官方原版覆盖一次,不要只信"看起来正常"
- 检查数据库:用 phpMyAdmin 搜索数据库里有没有可疑的
<script>、base64_decode、eval(这类常见恶意代码特征,尤其是wp_posts、wp_options表;如果有可用的干净备份,直接用干净备份的数据库覆盖会更省事 - 跑第二次扫描确认干净:清理完,再用 Wordfence/Sucuri 扫描一次,确认没有残留
- 到 Google Search Console → Security Issues 申请复查(Request a Review):如果之前被 Google 标记过恶意网站,清理完要主动提交复查,说明已完成的清理步骤,Google 审核通过后警告才会消失
清理完怎么防止再次被黑
- 装一套安全插件(Wordfence 或 Solid Security)并实际启用防火墙、2FA、暴力破解防护——不是装了就有效,要按对应笔记的设置教程逐项打开
- 更新所有插件/主题/WordPress 核心到最新版本——大多数入侵都是透过已知漏洞的旧版本插件/主题进来的
- 删除不再使用的插件/主题(不只是停用,直接删除)——闲置的过期代码也是攻击入口
- 设定自动数据库/文件备份(见 Solid Security《站点检查、备份与实用工具设置》),下次真的被黑也能快速用干净备份复原,不用重走一次完整清理流程
- 换掉 admin 这类容易猜的用户名,强制所有账号使用强密码
常见误区
- ❌ 只清理了看得到的症状(比如换掉被篡改的首页),没有找到并清除后门文件——攻击者留的 webshell 没清干净,过几天网站会再次被改
- ❌ 清理完直接关掉维护模式却没跑第二次扫描确认——应该先确认扫描结果干净再让网站重新对外开放
- ❌ 被 Google 标记过恶意网站,清理完却没去 Search Console 申请复查——警告不会自动消失,需要主动提交 Request a Review
- ❌ 清理完用回原本那组可能已经泄露的密码——所有密码(WordPress、数据库、FTP、主机后台)都要视为已泄露,全部重设
Sources
Blog / Website:
官方文档: