SMS & OTP for WooCommerce、订单通知与弃单恢复 WordPress 插件;SMS Alert <3.9.6;未认证权限提升(强制密码重置)

SMS Alert ≤ 3.9.5 — 未认证的通过任意密码重置实现的权限提升
WordPress 插件 SMS Alert – SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery 中存在一个严重的身份验证不当漏洞。当为密码重置启用 OTP 验证时,未认证的调用者可以为档案中留有电话号码的用户(包括管理员)设置新密码,而无需证明其拥有该电话号码。
| CVE | CVE-2026-11387 |
| CWE | CWE-287: 身份验证不当 |
| CVSS 3.1 | 9.8 严重 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| 厂商 | Cozy Vision Technologies Pvt. Ltd. |
| 产品 | SMS Alert (sms-alert) |
| 受影响版本 | 至 3.9.5 的所有版本 |
| 已修复版本 | 3.9.6(2026 年 6 月 27 日) |
| CNA | Wordfence |
本仓库包含 Abraxas Labs 的概念验证,仅限授权测试——厂商披露、实验室复现,或您已获得书面许可进行评估的主机。
SMS Alert 挂钩了 WooCommerce / WordPress 的忘记密码流程,本应通过短信发送的一次性验证码来限制新密码的设置。在受影响版本中,option=smsalert-change-password-form 背后的处理程序在应用 smsalert_user_newpwd 时,未检查调用者是否已完成 OTP 验证或以其他方式拥有该账户。
官方 CVE 记录还指出,同样的身份验证缺失可被用于更改受害者的电子邮件地址,然后通过正常的重置流程接管账户。两种路径均为未认证的账户接管。
仅当以下两个条件同时成立时,网站才会暴露:
billing_phone)。在这些条件下,影响为所选账户的完全沦陷。管理员被接管则意味着整个网站的沦陷。
| 条件 | 结果 |
|---|---|
| 未认证的网络访问 | 无需 WordPress 凭据 |
| 目标为购物者 / 订阅者 | 该客户的账户被接管 |
| 目标为管理员 | 权限提升至 wp-admin,可安装插件/主题,植入持久性恶意软件 |
机密性、完整性和可用性均受到严重影响:攻击者可以读取订单和个人身份信息(PII)、更改网站内容和用户,并将合法所有者锁定在账户之外。
使用 SMS Alert 进行密码重置的流程大致如下:
丢失密码请求 → 向用户手机发送 OTP → 验证后更改密码的 POST
出问题的环节是最后一步。插件根据 $_REQUEST['option'] == 'smsalert-change-password-form' 进行路由(参见 3.9.5 中的 class-wpresetpassword.php),然后写入提交的密码。它并未将该 POST 绑定到先前的 OTP 会话、nonce 或能力检查,以证明调用者就是重置请求中指定的用户。
本概念验证仅针对该处理程序:
/my-account/lost-password/ 和 /wp-login.php?action=lostpassword 发送 POST 请求,并设置 wc_reset_password,从而为受害者用户名进入插件的重置路径。/、/my-account/lost-password/ 以及 wp-login 丢失密码操作发送包含 option=smsalert-change-password-form 以及 smsalert_user_newpwd / smsalert_user_cnfpwd 的 POST 请求。包含 password-reset=true 的 Location 响应头被视为成功。wp-login.php,以便实验室运行能够区分真正的接管与未命中(OTP 选项关闭,或用户未绑定手机)。全程不提交任何 OTP。这正是漏洞所在。
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py 是一个小型 Python 3 客户端:显示彩色横幅,然后执行上述三个步骤。它仅与您在命令行中传入的 URL 进行通信。
requests在装有 Homebrew Python(PEP 668)的 macOS 上,请使用 venv 而非系统级 pip install:
python3 -m venv .venv
.venv/bin/pip install requests
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py <base_url> <victim_username> [new_password]
.venv/bin/python3 CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py \
https://shop.example \
admin
第三个参数用于设置要应用的密码;默认值为 abr4x4s#L4b5。
不带任何参数运行时,脚本会打印横幅和用法说明,然后以退出码 1 结束。这是确认客户端正常启动的安全方式。
目标 WordPress 站点必须运行 SMS Alert ≤ 3.9.5,已启用重置时的 OTP 验证,且受害者用户名必须已绑定用于 OTP 的电话号码。针对已修补的 3.9.6+ 站点,或未绑定手机的用户,登录检查预计会失败。
请勿将此工具指向任何您不拥有或未获得书面授权进行测试的主机。
wp-admin 会话视为不可信。class-ultimatemember.php (Trac)仅限研究和教育用途。除非您已获得本仓库托管方和目标系统所有者的明确书面许可,否则请勿针对任何主机运行、部署或使用本材料。
Abraxas Labs · abraxaslabs.tech · github.com/abraxas · @abraxas_null