当大多数人想象一个网站被黑时,脑海里浮现的是某个穿着连帽衫的人在终端前飞快敲击键盘。现实远没有那么戏剧化,却普遍得多。WordPress 网站每天都在被自动化扫描器攻破——它们爬取公网,一次性探测成千上万个站点,然后从被人留着没关的门走进来。攻击者通常是一段脚本,而非某个人,目标也很少是你本人,而是任何恰好在运行他们懂得如何利用的软件的人。
理解真正的入口很重要,因为同样的那几个错误造成了 WordPress 绝大多数的入侵事件。把它们修好,你就成了难啃得多的目标;对它们视而不见,你就只是在靠运气运营。
1. 存在漏洞的插件
插件是 WordPress 被攻破的头号原因。插件生态极其庞大,代码质量参差不齐。一个两年前完全安全的插件,下周可能就被公布一处严重漏洞;如果你没更新它,从那份公告公开的那一刻起,你就已经暴露。
其套路通常是这样的。研究人员或黑客在一个流行插件中发现缺陷,往往是诸如未经身份验证的文件上传或 SQL 注入之类。缺陷被披露。数小时之内,自动化扫描器便会在互联网上四处搜寻运行着易受攻击版本的网站。未打补丁的网站被成批攻破。
我们最近对一个悉尼代理机构网站所做的审查发现,一个文件管理器插件被安装并启用了一年多,尽管这一类插件有着长期的远程代码执行漏洞历史。攻击者无需耍任何花招,这个插件就把对整个网站的写入权限交到了他手上。
2. 薄弱或重复使用的管理员凭据
针对 WordPress 登录页面的暴力破解攻击从未停歇。机器人每小时会尝试数千种常见的用户名和密码组合,其素材来自包含数亿条泄露凭据的数据泄露库。如果你的管理员使用了诸如 admin、你的公司名或你的名字这样的用户名,再配上一个曾在互联网任何地方的过往泄露中出现过的密码,那你早已在名单之上。
解决之道并不复杂。使用唯一且较长的密码。使用密码管理器。为每个管理员账户启用双因素认证。限制登录尝试次数。把默认的 admin 用户改成无法被猜到的名称。这些步骤很乏味,却能把大多数自动化攻击当场挡下。
3. 过时的 WordPress 核心
WordPress 核心本身通常维护得很好,安全版本会被迅速推送。风险并不在于核心满是漏洞,而在于一些站长关闭了自动更新,随后又忘了应用手动更新。运行一个落后一两年的 WordPress 版本,意味着你正带着任何扫描器都能检测到的、已被公开记录的漏洞在运营。
有更新可用时,WordPress 会提示你。把它装上。如果你担心插件兼容性,就先在预发布副本上应用。别一直拖着。
4. 被植入恶意代码的主题
主题同样是代码,与插件有着同样的风险。更大的问题在于从可疑站点下载的盗版主题。从种子站获取的高级主题的免费副本,几乎总是夹带着后门、隐藏链接,甚至更糟的东西。在一个一百美元的主题上省下的钱,可能会在清理上花掉数千美元。
请坚持使用来自 WordPress 官方仓库、或有活跃支持与定期更新的信誉良好供应商的主题。为你所用的付费。这比另一条路便宜得多。
5. 暴露在外的配置与备份文件
数量惊人的 WordPress 网站会泄露本不该出现在公网上的敏感文件:放在文档根目录里的备份压缩包、.sql 转储文件、.env 文件,以及命名为 wp-config.bak 之类的旧版 wp-config.php 副本。攻击者一旦下载到其中任何一个,便掌握了数据库凭据、密钥,或两者兼有。
审查你的文档根目录。任何不属于 WordPress 的东西都不应留在那里。把备份移出服务器。删除旧的开发文件。在服务器层面封锁对常见敏感文件名的直接访问。
6. 共享主机上的跨站交叉感染
在廉价的共享主机上,多个 WordPress 网站可能共处于同一账户、甚至同一块磁盘之中。一旦其中之一被攻破,攻击者往往就能横向渗透到其余站点,把同样的恶意软件铺到这一组里的每一个网站上。在那些用单一共享套餐运行二三十个客户网站的代理机构中,这是常见的套路。
把网站隔离开。使用真正的托管式 WordPress 主机,让每个网站各自运行在自己的容器中。对任何与你共用同一环境的其他网站,用与对待自己网站相同的严苛标准去审查。
7. 对 XML-RPC 与 REST API 的滥用
WordPress 对外暴露了两个主要的编程接口:xmlrpc.php 和 REST API。两者都是合法的,都可能有用,也都曾被用作攻击载体。尤其是 XML-RPC,历史上被滥用于放大型暴力破解攻击——单个请求即可一次性尝试大量密码猜测。
如果你不使用 XML-RPC,就把它禁用。如果你不需要对某些端点的未经身份验证的 REST API 访问,就加以限制。大多数现代主机和安全插件都让这件事变得很简单。
8. 被窃取的会话与 Cookie
攻击者并不总是需要你的密码。如果他们能捕获一个会话 Cookie——例如通过在不安全连接上发起的中间人攻击——便能在该会话仍然有效的整段时间里冒充你。在没有 VPN 的公共 wifi 上登录,或运营一个未在各处正确启用 HTTPS 的网站,都会让这件事容易得多。
始终使用 HTTPS。在全站强制启用它。设置安全的 Cookie 标志。用完即注销。定期轮换 WordPress 的 salt 与密钥,使现有会话失效。
9. 针对员工与外包人员的社会工程
有些入侵根本不需要任何软件缺陷。一封钓鱼邮件诱使员工登录到假冒的后台页面;一封伪造的发票邮件诱骗开发者运行一条恶意的 shell 命令;一名外包人员到处重复使用同一个密码,随后它从别处泄露。人,也是攻击面的一部分。
对员工进行培训。在整个团队中使用密码管理器。强制启用双因素认证。限制拥有管理员级别访问权限的账户数量。一旦有人离开项目,立即移除其账户。
10. 被遗忘和废弃的网站
很多 WordPress 网站是为某场活动、某个事件或某个副业项目而上线,随后就被遗忘。它们继续在同一台主机上、用同一套凭据运行,慢慢变得过时。一年之后,它们成了完美的目标。站长已不再查看,但 Google 和机器人没有。
如果你不再需要某个 WordPress 网站,就把它妥善下线。导出内容、停用安装、释放域名、归档数据库。不要把废弃的安装留在公网上。
如何真正防住这一切
这些防御手段并不玄妙。让一切保持更新。使用强壮且唯一的密码,再加上双因素认证。运行一款像 Wordfence 这样认真的安全插件,并留意它告诉你的内容。确保你的主机信誉良好、能妥善隔离各网站,并提供异地备份。至少每季度审查一次你的插件、主题和管理员用户。在员工或外包人员变动时轮换密钥与 salt。偶尔从备份中恢复一次,只为确认它确实可用。
这一切都谈不上光鲜,它只是例行公事——而且管用。被攻破的网站,几乎从来不是把这些全做到的那些,而是只做了其中大部分、或一样都没做,还自以为太小、不会被人盯上的那些。
需要帮忙吗?
如果你想如实了解自己的 WordPress 网站究竟有多脆弱,Defyn 可以进行一次安全审查,并把我们的发现逐一向你说明。与我们联系,我们会帮你在别人破门而入之前先把门关好。



