今天顺手处理了一件小事:博客被人恶意触发了 WordPress 的“找回密码”功能,邮箱里陆续收到了密码重置邮件。
严格来说,这不算真正入侵,更像是一种低成本的自动化骚扰和探测。但如果不处理,确实挺烦,而且也说明站点的默认暴露面还在。
这篇文章简单记录一下处理过程,给同样用 WordPress 的朋友做个参考。
一、现象:有人反复触发密码重置
一开始是邮箱里收到 WordPress 的密码重置邮件,内容大概是:
- 有人为某个账户申请了密码重置
- 邮件里会带重置链接
- 还会显示一个请求来源 IP
最开始看到这种邮件,第一反应通常会是:
- 是不是后台密码泄露了?
- 是不是邮箱被盯上了?
- 是不是 WordPress 后台要被撞开了?
后来冷静看了一下,发现这类行为很多时候并不是“已经攻进来了”,而是有人或者脚本在做下面几件事:
- 探测这个站是不是活的
- 测试这个用户名是否真实存在
- 批量触发找回密码,制造邮件骚扰
- 为后续爆破、撞库、探测登录入口做准备
说白了,很多时候并不是高水平攻击,而是全网脚本扫 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 的密码重置页面,输入用户名或邮箱,系统就会直接提示:
不能重设该用户的密码
效果很直接:
- 不再收到密码重置邮件
- 对方继续点也没用
- 邮箱骚扰当场结束
对我这种个人博客场景来说,这一步的性价比非常高。

六、为什么不继续折腾更多东西?
其实还可以继续做很多事,比如:
- 隐藏默认登录入口
- 给
/wp-login.php 加 Challenge
- 给
/wp-admin/ 加额外保护
- 把管理员用户名改成随机串
- 配置更严格的 Cloudflare WAF 规则
这些都没错。
但从这次的实际情况来看,已经完成了下面这些动作:
- 邮箱安全加固
- 后台密码更新
- 异常账号排查
- XML-RPC 封禁
- 找回密码功能关闭
对一个普通博客来说,这已经足够把这次问题压下来了。
很多时候,安全不是一味堆配置,而是:
抓主要矛盾,先把最烦、最常被滥用的入口关掉。
七、这件事的本质
这次也算再次验证了一件事:
WordPress 本身不是不能用,问题往往在于默认入口太公开、默认行为太“热情”。
像下面这些默认点位,基本都是被脚本长期盯着的:
/wp-login.php
/wp-admin/
xmlrpc.php
- 找回密码功能
所以对个人站长来说,安全思路不用太复杂,记住一句话就行:
默认暴露面越少,自动化脚本能玩的东西就越少。
八、最后总结
这次博客被恶意触发找回密码,没有造成真正损失,但确实是一次提醒:
- 邮箱安全很重要
- 密保邮箱也不能忽略
- WordPress 默认找回密码功能,不一定非留着不可
- 看到重置邮件不必马上慌,先判断是不是“骚扰”还是“已入侵”
- 对个人博客来说,最有效的往往不是复杂方案,而是直接关闭没必要的暴露面
目前这件事算是先处理完了。
对方再继续点找回密码,也只能白忙活。
说难听点:
很多这种操作,本质上就是脚本到处乱撞;谁入口开着,谁就多挨两下。
把门关上,世界立刻清净不少。
附:本次实际做的几件事
- 更新博客绑定邮箱密码
- 更新密保邮箱密码
- 确认邮箱已开启二次验证
- 修改 WordPress 管理员密码
- 检查无异常管理员账号
- 确认
xmlrpc.php 已封
- 禁用 WordPress 密码重置功能