remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
# nginx
location = /readme.html { return 404; }

首页源码里有一行 generator content="WordPress 6.4.2",再打开 /readme.html 直接看到版本号和更新说明。扫描器拿到版本就能对着已知漏洞打。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:WordPress 默认在 head 输出 generator 标签,readme.html 也随安装包留在根目录。版本号本身不是漏洞,但它把攻击范围缩到了那个版本对应的几个 CVE。

「WordPress 版本泄露」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。同一份配置存在多处的,先确认改的是被加载的那一份。

新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

处理上按这个顺序:先删掉根目录的 readme.html、license.txt 这类安装残留;主题里移除 wp_generator 动作,顺手把 rsd_link 和 wlwmanifest 一起清掉;nginx 层对 readme.html 返回 404,防止重新上传后又暴露。

确认没问题再收工,查看首页源码搜不到 generator,访问 readme.html 返回 404。

作者 9823189