当前位置:首页教程中心网站教程WordPress 7.1.4修了个不用登录的洞:它藏在升级目录里

WordPress 7.1.4修了个不用登录的洞:它藏在升级目录里

10月28日的WordPress 7.1.4一次封掉22个漏洞、17条公告,其中只有一个不需要任何账号:更新那几十秒里,wp-content/upgrade/ 目录中躺着一份谁都能打开的WordPress副本。
WordPress升级目录安全风险插画

你点下后台那个「立即更新」按钮,接下来几十秒里,服务器上会多出一份完整的 WordPress 副本。它躺在 wp-content/upgrade/ 里,目录名可以猜,浏览器直接能打开。

10 月 28 日发布的 WordPress 7.1.4,主要就是来堵这个口子的。这一版修得比往常多:官方口径是 22 个漏洞、17 条公告,三周前的 7.1.3 只有 7 个。而 22 个里只有一个完全不需要账号。

这个洞是怎么长出来的

WordPress 安装或更新任何东西时,会把包解压到 wp-content/upgrade/。7.1.4 之前,解压目录名直接来自包名,从后台上传的包,名字完全可预测。

紧接着是清理例程:它跑在最前面,把这个目录里的东西全删掉——包括那个本该阻止目录被列出的 index.php。于是更新那几秒里,一个完整的 WordPress 安装躺在一个可猜、可浏览的路径上。

解压出来的副本还带着 wp-admin/setup-config.php。这个文件不读站点配置就能自己启动。在窗口期请求到它,等于在别人的站点根目录里,对着你自己控制的数据库跑一遍安装程序。

7.1.4 的修法分两层:目录名后面追加 16 个随机字符;index.php 重建,而且不再被删。update-core.php 里还有一处没写进公告的改动——把 wp-config.php 加进「永不从工作目录复制出去」的名单。

官方给这个洞的评分是 AC:H,也明说了实际利用不现实:窗口只有几秒,还得正好在那个时刻请求到正确路径。但它的落点能追到 WordPress 2.8,而且每次更新(包括你没盯着的自动更新)窗口都会重新出现。

更麻烦的一点是 PHP 层防火墙拦不住。解压出来的副本用自己那份文件引导 WordPress,官方 zip 里没有 mu-plugins 目录,站点的防火墙代码根本不会被执行。这个洞只能在 Web 服务器层堵。

两条服务器规则

nginx,写进对应站点的 server 块:

location ^~ /wp-content/upgrade/ { deny all; return 403; }

Apache,写进站点根目录的 .htaccess:

RewriteRule ^wp-content/upgrade/ - [F,L]

改完用 curl -I https://你的域名/wp-content/upgrade/ 看返回是不是 403;再请求一次不带结尾斜杠的路径,确认不是 200 加 Index of。这个目录平时只放一个 index.php,空着才正常。

同一个位置可以顺手加两条:wp-content/uploads 目录禁止执行 PHP(挡图片马),wp-config.php 直接拒绝访问。三条规则都不影响前台。

剩下 21 个,基本都要先有账号

除 RCE 之外,其余全部需要登录,多数门槛是投稿者(Contributor):

  • Interactivity API 一口气占了 7 条公告:javascript: 协议的绑定、事件处理器绑定、context 原型污染、object 元素加载后台页面、通过 Interactivity Router 上传的文本文件,还有一个存储型拒绝服务。一个 API 集中爆出七条,说明它当初被当成「只是前端渲染」的组件,输入校验往后放了。
  • 区块分隔符空白:PHP 认的空白是 6 个字符,JS 还认不换行空格和 BOM。用这类字符拼出来的分隔符,对 PHP 只是一段无害注释,对编辑器却是真实区块,属性完全由攻击者控制。7.1.4 把两边钉到同样的 5 个字符上。
  • 其余是成片的存储型 XSS:分类块(格式化字符串注入)、图片与播放列表块(不安全的 preg_replace 替换)、评论分页与文章导航块的标签、自定义器选择性刷新、隐私数据删除请求页、用户登录名。
  • 未发布的定制器变更集,未登录用户就能发现它们。
  • 备注(Notes)权限:只要角色带着 moderate_comments,就能读、改、删自己无权编辑的文章上的备注。默认安装里管理员和编辑这两个权限绑在一起,所以平时显不出来;换成自定义角色、插件单独授权、或自带权限集的文章类型,就会真漏。
  • 多站点网络用户列表里未转义的用户名(加固项)。
  • 最后一条不算漏洞:内置根证书更新,因为 eMudhra 那张证书被吊销了。

今天的操作清单

  1. 后台 → 更新 → 立即更新;习惯命令行的用 wp core update,再跑一次 wp core update-db。
  2. 开着自动更新的站点,去「工具 → 站点健康 → 信息 → 核心」核对版本号是不是 7.1.4,别默认它一定升上去了。
  3. 卡在旧分支的:7.0.8、6.9.11、6.8.12、6.7.11、6.6.11、6.5.14、6.4.14,官方一直回补到 4.7.39;4.6 及更早没有补丁。
  4. Web 服务器加上面那条 upgrade 目录规则,验证 403、验证不可列出。
  5. 导出用户列表按角色过一遍:谁还是投稿者、谁早就不写稿了、投稿者能不能上传文件。
  6. 有多作者投稿和评论的站,把「投稿需审核」打开,别让未审内容直接出现在前台——这一批里有七条都要靠投稿者身份起手。
  7. 更新完看一眼 wp-content/upgrade/ 是不是空的,顺手清掉残留。

一些个人判断

这次发布最值得记的不是漏洞数量,而是那个 RCE 的位置。它不在业务代码里,不在插件里,在「更新」这个动作本身——一个为了自愈而设计的流程,反过来成了唯一的无账号入口。这类问题没法靠代码审计提前发现,只能靠部署层的默认拒绝来兜。

另一个信号是 Interactivity API 占了一半公告。WordPress 把越来越多的交互搬到前端,攻击面就跟着搬过去;而权限模型还是老的那套「投稿者能存内容」,两件事叠在一起,就是现在这个局面。给投稿者配双因素、限制上传类型、把审核流程打开,成本比想象中低。

至于要不要今天就升:升。AC:H 不代表可以等,更新窗口每次都在,而你已经没有理由让那个目录暴露在公网上。

官方信息

版本公告在 wordpress.org/news/2026/10/wordpress-7-1-4,7.2 正式版按计划在 12 月 8 日,Beta 3 已经带着同一批修复放出来了。

温馨提示:

文章标题:WordPress 7.1.4修了个不用登录的洞:它藏在升级目录里

文章链接:https://www.muooy.cn/16207.html

更新时间:2026年10月29日

1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:305582964@qq.com,我们将第一时间处理!

2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。

3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读用户协议和免责声明。

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧