CVE-2026-18143:WooCommerce 报价插件未认证文件上传 CVSS 9.8

导语

Wordfence 于 2026 年 9 月 25 日披露 WooCommerce 报价插件 Request a Quote for WooCommerce 的未认证任意文件上传漏洞,编号 CVE-2026-18143,CVSS 3.1 评分 9.8,属 CWE-434。2.9.2 及以下版本均受影响,攻击者无需账号即可向站点写入可执行的 PHP 文件。

事件概述

  • 受影响产品:Addify 开发的 WordPress 插件 Request a Quote for WooCommerce(目录 woocommerce-request-a-quote)
  • 受影响版本:至 2.9.2(含);9 月 25 日提交,9 月 26 日公开 CVE 记录
  • 插件规模:WooCommerce 官方市场商业插件,市场页显示 5000 余个活跃安装,面向 B2B 与批发型独立站

技术细节

漏洞位于弹窗报价上传处理函数 afrfq_submit_quote_via_popup()。该函数处理附件时未校验文件扩展名与 MIME 类型,并把访客提交的原始文件名直接作为 move_uploaded_file() 的目标路径,文件最终落在 Web 可访问的报价(RFQ)临时上传目录。

POST /wp-admin/admin-ajax.php
action=afrfq_submit_quote_via_popup
filename="shell.php"   # multipart filename 未做扩展名过滤

利用前提在配置层面:站点必须存在一条「公开(未登录访客可提交)」的报价规则,且启用多页弹窗上传流程。若报价表单限制为登录用户,或不使用弹窗流程,该处理器不可达——这两点决定排查范围。

公开信息中已出现该漏洞的探测脚本(github.com/murrez/CVE-2026-18143),支持指纹检查与上传探测,虽不含完整 RCE 链,但足以确认目标是否暴露。

影响评估

  • 评分:CVSS 3.1 与 4.0 均为 9.8,严重级
  • 利用复杂度:低。命中配置前提后无需凭据、无需用户交互,一次 multipart 请求即可完成投递
  • 实际危害:任意 PHP 落地并执行,等价于站点接管;订单、客户与支付数据全部暴露
  • 在野状态:未进入 CISA KEV,也无确认的在野利用报告

修复版本信息存在分歧:部分信源称厂商已发布 2.9.3,另有信源指出披露当日官方市场页仍将 2.9.2 标为最新版。运维方应以实际插件版本与市场页为准。

修复建议

  • 确认插件是否安装;如已安装,立即检查版本并按市场页指引升级到 2.9.3 或更高。
  • 在修复版本可获取前,关闭面向匿名访客的报价规则,或将报价提交限制为登录用户,直接切断可达路径。
  • 禁止上传目录执行脚本,作为纵深防御(即使文件落地也无法运行):
# Nginx:写在站点 location / 之前
location ~* ^/wp-content/uploads/.*[.](php|phtml|php[0-9])$ {
    deny all;
    return 403;
}
# Apache/LiteSpeed:在 uploads/.htaccess 中 Require all denied
  • 在访问日志中检索 admin-ajax.php 上携带 action=afrfq_submit_quote_via_popup 的 POST 请求,重点看 9 月 26 日之后的记录。
  • 检查 wp-content/uploads 及报价临时目录下近期新建的 .php / .phtml 文件;发现异常即视为已被入侵,此时应轮换管理员密码与数据库凭据。

参考来源