先给结论:如果你站点上装了 Contact Form 7,把它升到 6.2.4。只要还在 6.2 到 6.2.3 之间,配上 Debian/Ubuntu 那套默认的 Apache,一个没登录的人就能往你服务器上落文件、再把它跑起来。PoC 已经公开了,截至写稿这会儿没有确认的在野利用,但洞本身不挑人。

这条编号是 CVE-2026-114432,CVSS 3.1 打的 9.8。先说评分这件事——9.8 是 CISA-ADP 给的,NVD 主记录当时还停在 Received、没出分。所以你要是去 NVD 上翻不到分,不是洞没了,是那边还没填。EPSS 大概 0.2%,也还没进 CISA 的 KEV 名单。换句话说,它现在处在"刚公开、还没人批量打"的那段窗口里,正是该先把门关上的时候。

它不是被写坏了一处,是三个小毛病串起来了

拆开看,这几个缺陷单拎哪个都不算致命:

  • 上传的文件不校验类型,也不校验扩展名,交给后面的环节去兜底;
  • 临时文件的清理有缺陷,本该被删掉的那份留在了磁盘上;
  • 文件名用非法 UTF-8 去构造,把剩下的那点检查也绕过去。

单看第一条,很多插件都这样,靠 web 服务器配置兜着;单看第二条,也就是个残留文件。可三条连起来、再撞上一个默认配置宽松的 web 服务器,就变成"传得上去、找得到、还能执行"——最老的那条链:上传 → 落地 → 任意代码执行。

自查命令输出示例:wp plugin list 显示 6.2.3,有可用更新

"默认配置"才是这条真正难看的地方

真正扎眼的是雷达点出来的那句:在 Debian/Ubuntu 标准的 Apache 配置下,目录列表是开着的,而且 .phar 是被交给 PHP 去处理的。两件事凑一起,传上去的那个文件能被直接找到、又能被当 PHP 执行——免登录 RCE 就这么成立了,不需要攻击者动手改你任何一个配置。

换成 nginx,或者把目录列表关掉的环境,至少是"任意文件落地":传个 HTML、SVG 上去,用你的域名和你的证书托管一个钓鱼页,照样能把人骗进来。所以别觉得"我不是 Apache 就没事",只是从"能执行"降级成"能被滥用"而已。

触发的前提也简单:站点上的表单里带文件上传字段。Contact Form 7 是 WordPress 装机量最大的表单插件,活跃安装上千万,接询盘、留留言的企业站几乎人手一个——这就意味着哪怕你自己站没用到上传字段,插件装着没卸,我建议还是先看一眼版本。

影响版本 / 修复版本

项内容
影响版本Contact Form 7 6.2 – 6.2.3(低于 6.2.4 的都算)
修复版本Contact Form 7 6.2.4(2026-10-29 发布)
CVECVE-2026-114432(2026-11-08 公布,PoC 已公开)
评分CVSS 3.1 9.8(CISA-ADP;NVD 主记录当时仍无分)
在野情况截至写稿无确认的利用报告,未进 CISA KEV

官方那边的建议是把所有版本都升到 6.2.4,理由是这一版除了修洞还带了一轮安全加固,不只是打补丁。

先跑一条命令看自己在不在里面

有 WP-CLI 最省事:

wp plugin list --name=contact-form-7 --fields=name,version,update

没装 CLI,直接读文件头也行:

grep -m1 "Version:" wp-content/plugins/contact-form-7/wp-contact-form-7.php

查到是 6.2.x、又不是 6.2.4,就在区间里。

顺手再扫一眼上传目录,看有没有近期落地的可执行文件——.php、.phar、.phtml 这几类,正常的上传目录里不该出现:

find wp-content/uploads -type f \( -name '*.php' -o -name '*.phar' -o -name '*.phtml' \) -mtime -45 -ls 2>/dev/null

再看一眼 Apache 是不是真的在列目录、把 .phar 当 PHP:

apache2ctl -M 2>/dev/null | grep -i php
grep -R "Options.*Indexes" /etc/apache2 2>/dev/null

扫出东西先别删,抓一份留底——那可能是别人进来过的痕迹,不是你自己放上去的。

修法就一步,但只修一个方向

升级到 6.2.4,前面那条链就断了。但有一点得专门讲清楚:WordPress 的攻击面从不在核心,在插件。前阵子 WordPress 半个月里同时冒出来的两个洞,一个是核心、一个是第三方插件,修法根本不通用;再往前 PHP 引擎那条一个 POST 就能拿 shell 的洞,也是同一个逻辑——核心升到最新,插件该中还是中。而且插件作者修完了,未必会挨个通知你,版本号得你自己去看。

所以别指望"WordPress 升到最新"这一句话能结清账。装了什么、各自什么版本,一个一个对过去,才是正事。做完这几步,6.2.4 装上、可疑文件扫一遍、留下的一份存档,这事就先按住了。

来源:CVE 记录(cve.now/CVE-2026-114432)、Brandefense 处置清单、SmartScope 技术拆解、Contact Form 7 官方 6.2.4 发布说明(2026-10-29)。