如果你的 WordPress 网站被黑,现在正显示医药垃圾内容、把访客转到某个不堪的地方,或者被 Google 标记为欺骗性网站,请从这里开始,而不是从一个插件开始。人的第一反应是装一个安全扫描器然后点清理。那样做去掉的是看得见的症状,留下的是进来的路,这也是为什么那么多网站几天之内就再次被感染,而站长最后得出结论:WordPress 本来就不安全。
并不是。几乎每一次入侵都是通过一个过期插件进来的,而几乎每一次清理失败,都是因为有人清掉了恶意软件,却没有清掉访问权限。
第一个小时: 把网站下线或切到维护模式。更换主机控制面板密码、数据库密码、所有管理员密码,以及 FTP 或 SSH 凭据。先不要恢复备份,也先不要删除任何东西。你需要现在这个状态才能弄清他们是怎么进来的,而一次恢复会毁掉这些证据,还极可能把同一个漏洞原样装回去。
第一个小时该做什么
这里顺序很重要,而常见的错误都源于急躁。
先把网站停掉。一个维护页面,或者在主机或 CDN 层面临时拦截,能保护访客,也能在你处理期间阻止网站继续散布恶意软件。如果网站正在提供恶意跳转,它每多开一个小时,声誉损失就多叠一层。
接着轮换每一份凭据,而不只是 WordPress 管理员密码。这包括主机面板、数据库用户、FTP 与 SSH 密钥,以及站点配置文件里保存的任何 API 密钥。攻击者惯常会再建一个管理员账号,或者留下一把钥匙,所以只改一个密码等于什么都没做。
在改动任何东西之前先保全证据。把文件和数据库按现状完整复制一份,并把至少最近三十天的服务器访问日志下载下来。找到入口靠的就是这些日志,而很多主机商几天之内就会把旧日志轮转掉。
然后,也只有到这时,才开始还原到底发生了什么。
你的 WordPress 网站是怎么被黑的:找出入口
不做诊断就清理,正是再次感染如此普遍的原因。下面四项检查在多数情况下能找出原因。
把插件和主题版本与已知漏洞对照。 过期插件是遥遥领先的头号原因。记下每一个插件、它的版本,以及是否存在你尚未应用的安全更新。要特别留意授权已过期的东西,因为付费插件在授权失效后就停止接收更新,界面上却仍然显示为已安装并已启用。
读一读问题最初出现前后的访问日志。 你要找的是发往异常路径的 POST 请求、对本不该存在的文件的请求,以及在页面被篡改之前从某个地址集中出现的一阵活动。答案通常就在这里。
寻找不该出现在那里的文件。 上传目录里最近被修改过的 PHP 文件是一个很强的信号,因为那里本来就不该执行任何东西。取名刻意显得合理的文件,以及对配置文件和服务器控制文件的改动,同样值得怀疑。
检查新增的管理员账号和计划任务。 攻击者常常创建一个供自己回来的用户,并注册一个在你清理之后重新装回载荷的计划任务。一个按固定周期反复被感染的网站,几乎一定有一个没人去找过的计划任务。
为什么「恢复备份就好」通常行不通
这是每个人最先收到的建议,而它大约三次里有一次是对的。
恢复奏效的前提是:你知道被入侵的日期、有一份在那之前的备份,并且已经找出并修好了漏洞。三者缺一,它的失败方式是可以预料的。你恢复上周的备份,可能恢复的是一个两周前就已经被入侵、只是一直安静着的网站。你在没有修补易受攻击插件的情况下恢复,等于把那扇把你锁在外面的门又重新造了一遍。
还有一个问题是恢复让你付出什么。对一家商店或一个会员网站来说,回滚意味着丢掉备份之后的每一笔订单、每一次注册和每一条评论。这往往无法接受,于是你被推向清理线上站点,而不是替换它。
可靠的做法是重建而不是恢复。全新安装 WordPress 核心,从官方来源而不是从被入侵的站点获取每一个插件和主题的干净副本,只把上传目录和数据库带过去,而且两者都要先检查。这样才能保证会被执行的代码是干净的,而逐个文件清理永远达不到这种确定性。
清理数据库
数据库正是不彻底的清理会留下东西的地方,因为扫描器把注意力放在文件上。
被注入的内容通常出现在文章正文里,表现为隐藏链接或内嵌框架;出现在存放跳转脚本的选项表里;也出现在用户元数据中。请在内容表和选项表里搜索脚本标签、经过编码的代码块以及陌生域名。
用手工的方式检查用户表。看一遍每一个拥有管理员权限的账号,确认你认得其中每一个,然后把注册日期与你自己的记录对上。
也要看计划任务,在 WordPress 里它们存放在选项表中。一条指向你不认识的函数的记录,正是一个网站在文件被清理很久之后仍然按时自我感染的机制。
对任何经过编码的东西要格外小心。攻击者刻意混淆载荷,就是为了让一次直白的字符串搜索错过它,所以对可疑内容要解码来看,而不要想当然地以为那是某个正规插件在做聪明事。
解除标记与恢复搜索排名
清理完网站还没有结束,因为在你请求复审之前,警告会一直挂在那里。
如果 Google 标记了你的网站,Search Console 里的安全问题报告会告诉你它检测到了什么,并允许你在修复之后申请复审。只有在网站真正干净之后再申请,因为一次未通过的复审会拉长整个流程。
还要查一下域名有没有落进浏览器和邮件服务商使用的拦截名单。仅仅变干净是不够的,因为每一家都维护自己的名单和自己的移除流程。
然后再看损失。警告解除之后搜索可见度通常会回来,但一个连续几周提供垃圾页面的网站,那些页面可能已经被收录。请检查有没有从来不属于你的 URL 被收录,把它们清掉,并确认干净的版本正在被抓取。我们的网站安全审计指南 更详细地讲了验证步骤。
专业恢复要花多少钱
下面的价格反映英国的典型行情,并随入侵被忽略的时间长短而变化。
一个小站点被及时发现、原因明确的直接清理,一般在 400 到 1,200 英镑之间,需要一到两天。有人在一周之内注意到,通常就是这种情况。
一次完整的事件响应,包括为确定入口和时间线所做的日志分析、干净重建、数据库检查、凭据轮换、加固以及从拦截名单移除,通常在 1,500 到 5,000 英镑之间。这是一家商店或一个持有客户数据的网站应当预期的档次,因为你还需要判断数据是否被访问过。
被入侵长达数月的站点,或者同一个账号下托管多个站点的情况,费用更高,因为共享主机上站点之间的交叉感染很常见,每一个都必须逐一检查。
如果个人数据可能被访问过,那么在技术清理之外还有义务。英国 GDPR 要求在知悉一起需报告的数据泄露后 72 小时内通知监管机构,而这个时钟从知悉的那一刻开始走,不是从清理完成开始走。请尽早取得建议,而不是等你收拾完之后。我们关于 GDPR 技术合规 的文章讨论了这件事的工程面。
确保它不再发生
不做加固的恢复,只是把时钟重新拨了一遍。
更新纪律就是全部。绝大多数入侵利用的是已经有补丁可用的漏洞,所以解法是一套及时应用安全更新的流程,加上一条移除任何无人维护之物的方针。授权已过期的付费插件应当续期或替换,绝不能原样留着。
减少可以被执行的东西。上传目录里的任何内容都不应作为 PHP 运行,后台的文件编辑功能应当关闭,管理员账号应当很少并且逐一实名。
给每一个管理员账号加上多因素认证,并对登录入口做频率限制。针对凭据的攻击绝大多数是自动化的,第二因素一旦存在,它们就不再成立。
最后,认真备份并真的测试它。一份你从未恢复过的备份只是一个假设。请保留多个世代,因为最新的那一份可能已经包含了这次入侵。我们的 WordPress 安全加固清单 给出了完整配置,而我们的 WordPress 性能审计指南 讲的插件纪律,会顺带缩小攻击面。
把它清理干净
Mecanik 提供 WordPress 安全审计 与事件恢复服务:确定这次入侵是怎么发生的,用干净重建而不是打补丁盖过去,检查数据库,并加固站点,让同一条路径在你身后关上。
我们从服务器日志出发,而不是从扫描器的输出出发,因为扫描器只会告诉你它认得的东西,日志才会告诉你实际发生了什么。如果站点处理客户数据,我们也会直接告诉你,你看起来是否面临一起需要上报的数据泄露,而不是让你以后自己发现。持续维护可以通过我们的 WordPress 开发服务 获得,通常比第二次事件便宜。
如果你的网站此刻正被入侵,请把它下线、轮换凭据、保留日志,然后联系我们。
相关文章: API 安全:2026 年如何保护一个公开 API 、为企业主讲解 OWASP Top 10 、服务器安全审计清单:到底检查什么 、2026年英国企业网站安全审计指南 。
常见问题
WordPress 网站被黑之后我该先做什么? 把网站下线,轮换包括主机、数据库、FTP 和全部管理员账号在内的每一份凭据,并保存当前文件、数据库与服务器日志的副本。先不要恢复备份或删除文件,因为那会毁掉找出入口所需要的证据。
我的 WordPress 网站为什么反复被感染? 几乎总是因为清理清掉了恶意软件,却没有清掉访问权限。请找一找你不认识的管理员账号、上传目录里的后门,以及选项表里那些会重新装回载荷的计划任务。按固定周期反复感染,通常说明存在一个计划任务。
我可以只靠恢复备份来修好被黑的网站吗? 只有在你知道入侵发生的时间、有一份在那之前的备份、并且已经修好底层漏洞时才可以。三者缺一,你就有可能恢复一个早已被入侵的站点,或者把同一个洞重新打开。用全新的核心、插件和主题做干净重建更可靠。
WordPress 恶意软件清除要多少钱? 一个小站点被及时发现的直接清理通常花费 400 到 1,200 英镑。包含日志分析、干净重建、数据库检查与加固的完整事件响应一般是 1,500 到 5,000 英镑,长期潜伏或多站点的入侵还要更贵。
怎样让 Google 解除对我网站的标记? 先把网站彻底清理干净,然后通过 Search Console 的安全问题报告申请复审。只在网站真正干净之后再申请,因为一次未通过的复审会拉长流程。浏览器和邮件的拦截名单要单独检查,每一家都有自己的移除流程。
评论