博客被恶意触发 WordPress 找回密码,顺手做了一次安全加固

今天顺手处理了一件小事:博客被人恶意触发了 WordPress 的“找回密码”功能,邮箱里陆续收到了密码重置邮件。

严格来说,这不算真正入侵,更像是一种低成本的自动化骚扰和探测。但如果不处理,确实挺烦,而且也说明站点的默认暴露面还在。

这篇文章简单记录一下处理过程,给同样用 WordPress 的朋友做个参考。

一、现象:有人反复触发密码重置

一开始是邮箱里收到 WordPress 的密码重置邮件,内容大概是:

  • 有人为某个账户申请了密码重置
  • 邮件里会带重置链接
  • 还会显示一个请求来源 IP

最开始看到这种邮件,第一反应通常会是:

  • 是不是后台密码泄露了?
  • 是不是邮箱被盯上了?
  • 是不是 WordPress 后台要被撞开了?

后来冷静看了一下,发现这类行为很多时候并不是“已经攻进来了”,而是有人或者脚本在做下面几件事:

  1. 探测这个站是不是活的
  2. 测试这个用户名是否真实存在
  3. 批量触发找回密码,制造邮件骚扰
  4. 为后续爆破、撞库、探测登录入口做准备

说白了,很多时候并不是高水平攻击,而是全网脚本扫 WordPress 默认入口,扫到谁就试谁。

二、先判断:这不等于已经被入侵

后来逐项检查了一下,当前状态是:

  • WordPress 管理员密码足够强
  • 邮箱已经开启二次验证
  • 博客主邮箱密码已更新
  • 密保邮箱密码也更新了
  • xmlrpc.php 已经封掉
  • 后台没有异常管理员账号
  • 主题、插件、站点内容暂时没有发现异常

这说明一个关键点:

有人在骚扰,不等于已经失守。

只要密码强度够、邮箱没被控、后台没有异常账号,这类“找回密码邮件”更多是噪音,不是结果。

三、关于邮件里显示的 IP,不一定是真实攻击者 IP

WordPress 的重置邮件里会显示一个 IP。

但如果网站前面挂了 Cloudflare,这个 IP 很可能只是 Cloudflare 的代理节点 IP,不一定是真实来源地址。

也就是说,邮件里看到一个看似具体的 IP,不代表就找到了对方真身。
如果源站没有正确恢复真实访客 IP,WordPress 或服务器日志里拿到的,很多时候只是 CDN / 代理层 IP。

所以这里没必要过度研究那个 IP,本质问题还是:

默认的找回密码入口还开着,别人就还能继续触发。

四、这次处理思路:先止血,再观察

这次没有去做太激进的改造,比如:

  • 不去硬改 /wp-admin/ 目录
  • 不去直接折腾数据库
  • 不去大幅修改 Nginx 配置
  • 不去把后台搞得特别复杂

因为对一个普通博客来说,很多时候最优方案不是“堆复杂度”,而是:

优先把最烦、最直接的问题掐掉。

处理顺序大概是这样的:

1. 更新博客邮箱密码

先把和 WordPress 绑定的邮箱密码换掉。

2. 更新密保邮箱密码

因为很多人会忘记,密保邮箱本身也是安全链路的一部分。

3. 修改 WordPress 管理员密码

把后台密码也一起换掉,避免心理上总觉得不踏实。

4. 检查后台管理员账号

确认没有陌生管理员,没有异常用户。

5. 确认 xmlrpc.php 已封

这个接口长期是 WordPress 被扫的重点目标之一,没必要开着。

五、最关键的一步:直接禁用 WordPress 找回密码功能

后面发现,继续研究“是谁在点找回密码”意义不大。
最直接、最有效的办法其实是:

直接把 WordPress 找回密码功能关掉。

如果站点只有自己在维护,平时也根本不依赖“忘记密码”这个入口,那么这个功能完全可以关掉。

我最后加的是这一行:

add_filter('allow_password_reset', '__return_false');

加上之后,再去访问 WordPress 的密码重置页面,输入用户名或邮箱,系统就会直接提示:

不能重设该用户的密码

效果很直接:

  • 不再收到密码重置邮件
  • 对方继续点也没用
  • 邮箱骚扰当场结束

对我这种个人博客场景来说,这一步的性价比非常高。

博客被恶意触发 WordPress 找回密码,顺手做了一次安全加固

六、为什么不继续折腾更多东西?

其实还可以继续做很多事,比如:

  • 隐藏默认登录入口
  • /wp-login.php 加 Challenge
  • /wp-admin/ 加额外保护
  • 把管理员用户名改成随机串
  • 配置更严格的 Cloudflare WAF 规则

这些都没错。

但从这次的实际情况来看,已经完成了下面这些动作:

  • 邮箱安全加固
  • 后台密码更新
  • 异常账号排查
  • XML-RPC 封禁
  • 找回密码功能关闭

对一个普通博客来说,这已经足够把这次问题压下来了。

很多时候,安全不是一味堆配置,而是:

抓主要矛盾,先把最烦、最常被滥用的入口关掉。

七、这件事的本质

这次也算再次验证了一件事:

WordPress 本身不是不能用,问题往往在于默认入口太公开、默认行为太“热情”

像下面这些默认点位,基本都是被脚本长期盯着的:

  • /wp-login.php
  • /wp-admin/
  • xmlrpc.php
  • 找回密码功能

所以对个人站长来说,安全思路不用太复杂,记住一句话就行:

默认暴露面越少,自动化脚本能玩的东西就越少。

八、最后总结

这次博客被恶意触发找回密码,没有造成真正损失,但确实是一次提醒:

  • 邮箱安全很重要
  • 密保邮箱也不能忽略
  • WordPress 默认找回密码功能,不一定非留着不可
  • 看到重置邮件不必马上慌,先判断是不是“骚扰”还是“已入侵”
  • 对个人博客来说,最有效的往往不是复杂方案,而是直接关闭没必要的暴露面

目前这件事算是先处理完了。
对方再继续点找回密码,也只能白忙活。

说难听点:

很多这种操作,本质上就是脚本到处乱撞;谁入口开着,谁就多挨两下。

把门关上,世界立刻清净不少。


附:本次实际做的几件事

  • 更新博客绑定邮箱密码
  • 更新密保邮箱密码
  • 确认邮箱已开启二次验证
  • 修改 WordPress 管理员密码
  • 检查无异常管理员账号
  • 确认 xmlrpc.php 已封
  • 禁用 WordPress 密码重置功能

博客被恶意触发 WordPress 找回密码,顺手做了一次安全加固》有3个想法

  1. 发泡鲸

    实在想不明白为啥会有人整天盯着个人博客,这些内容除了对于作者本身有价值,对于他们来讲都是没有价值的东西。

    回复

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注