CVE-2026-32475:Elementor Pro 表单上传未授权 PHP 写入 RCE,全球 10-20 亿次安装的 WordPress 站点面临接管

2026 年 8 月 19 日,WordPress 安全公司 Patchstack 公开披露 Elementor Pro Forms 模块的文件上传漏洞 CVE-2026-32475。该漏洞允许未认证攻击者绕过 Elementor Pro 的文件扩展名黑名单,通过精心构造的多部分表单 POST 请求直接向 wp-content/uploads/elementor/forms/ 目录写入可执行 PHP 文件,进而触发远程代码执行。Elementor Pro 官方在同日发布 4.2.2 版本完成修复。Patchstack 将该漏洞评为 CVSS 9.0,Wordfence 独立评估为 9.8,是 2026 年 8 月针对 WordPress 生态的最高优先级漏洞。

事件概述

Elementor Pro 是 10-20 百万 WordPress 站点的页面构建器,几乎所有使用 Elementor Pro Forms 组件并开启 File Upload 字段(如求职申请表、客服工单、客户支持文件提交、照片比赛等)的页面均处于受影响范围。漏洞的核心成因在 Forms 模块文件上传字段的两段处理逻辑不一致:验证循环在遇到 UPLOAD_ERR_NO_FILE 空文件项时调用 return 直接退出,处理循环在遇到同一空项时调用 continue 仅跳过,二者语义不一致,使攻击者可以将恶意 .php 文件作为同一字段的第二个文件部分逃避扩展名校验。

技术细节

CVE-2026-32475 涉及 modules/forms/fields/upload.php 的处理流程:

  • 验证阶段(validation()):遍历所有上传条目,遇到 UPLOAD_ERR_NO_FILE 调用 return,整个函数流程立即终止,跳过后续条目。
  • 处理阶段(process_field()):遍历相同上传条目,遇到 UPLOAD_ERR_NO_FILE 调用 continue,跳过空条目继续处理后续 .php 文件。
  • 攻击者构造 multipart/form-data,将同一个表单字段的第一个文件部分留空,第二个文件部分放入 .php WebShell 内容,验证逻辑被空项触发 return 直接退出,扩展名黑名单完全旁路。
  • 写入文件名基于 PHP 的 uniqid() 生成,13 位十六进制时间戳,攻击者可在请求时间附近枚举还原上传文件名。
  • 写入目录 wp-content/uploads/elementor/forms/ 默认开启 PHP 执行,访问上传 URL 即触发 PHP 代码执行,等效于获取 WebShell。

实际攻击场景中,攻击者可请求 wp-content/uploads/elementor/forms/.php 获取代码执行,随后:

  • 植入持久化 WebShell(命名伪装成 wp-content 下的随机字符)、修改现有插件或主题代码注入恶意负载;
  • 读取 wp-config.php 抓取数据库凭据,连接 WordPress 数据库后写入新的 admin 账号;
  • 将网站重定向至恶意分发页面、SEO spam 资源池或钓鱼落地页;
  • 尝试以 Web Server 进程身份横向移动到内网其他系统。

影响评估

漏洞等级定级:

  • AV:N(网络可达),AC:H(仅当 Form 字段已发布时才能利用),PR:N(无需权限),UI:N(无需用户交互),C:H/I:H/A:H → CVSS v3.1 9.8,CVSS v4.0 9.0。
  • 据 Patchstack 与 BleepingComputer 报告,截至 8 月 19 日尚未公开 PoC 武器化样本,但 Elementor 历史上 2023 年的免费插件关键 RCE 在披露后数小时即出现公网扫描。

可利用条件仅需一个公开的 Elementor Pro 页面包含 Form widget + File Upload 字段,文件上传字段不需要被标记为 required(默认就是非 required),这是 WordPress 真实环境中最常见的开启状态。

修复与缓解

官方修复版本为 Elementor Pro 4.2.2(8 月 19 日同日发布),主要变更:

  • 同步验证循环与处理循环,使扩展名校验立即发生在文件写入前,而非之前可被绕过的预校验。
  • 在文件移动逻辑位置加入强校验,禁止扩展名校验之后才落盘。

无法立即升级的站点应立即执行:

  • 对 wp-content/uploads/elementor/forms/ 目录创建 Web Server 层规则(Nginx: location 配置 deny 解析 PHP;Apache: .htaccess 移除 PHP handler)。
  • 临时删除所有启用 File Upload 字段的公开 Elementor 表单,或将 Form widget 切换为 Classic Editor 版本。
  • 清查 wp-content/uploads/elementor/forms/ 目录中是否存在非图片/PDF 的可疑 .php 文件,运维日志中检索对该目录的 GET/POST 记录。
  • 确认 Elementor Pro 许可证已激活,自动更新已开启;未激活许可证的站点往往会错过安全补丁。
  • 对所有持有 wp-admin 账号的密码、wp-config.php 中的数据库密码、对象存储/邮件 SMTP 密钥进行强制轮换。

更多注意事项

Elementor Pro 4.2.2 修复同时附带了更强的扩展名 allowlist 行为(可限制为 png/jpg/pdf 等业务真正需要的格式),建议同时启用 Web 应用防火墙上传目录规则。鉴于整个 WordPress 生态对 Elementor Pro 的高度依赖,建议在补丁发布的 24-48 小时内完成批量升级;管理多站点的企业用户可通过 wp-cli 或托管面板的批量升级功能完成滚动升级。

参考来源