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 背后的处理程序在未检查调用者是否完成 OTP 验证或以其他方式拥有该账户的情况下,直接应用了 smsalert_user_newpwd。
官方 CVE 记录还指出,同样的身份检查缺失也可被用于更改受害者的电子邮件地址,然后通过正常的重置流程接管账户。两种路径均属于未认证账户接管。
站点仅在以下两个条件同时满足时才会暴露:
billing_phone)。在这些条件下,影响是所选账户的完全沦陷。管理员账户被接管即意味着整个站点的沦陷。
| 条件 | 结果 |
|---|---|
| 未认证的网络访问 | 无需 WordPress 凭据 |
| 目标是购物者 / 订阅者 | 该客户账户被接管 |
| 目标是管理员 | 权限提升至 wp-admin,可安装插件/主题,植入持久性恶意软件 |
机密性、完整性和可用性均受到严重影响:攻击者可以读取订单和 PII,更改站点内容和用户,并将合法所有者锁定在外。
使用 SMS Alert 的密码重置大致流程如下:
lost-password request → OTP to the user’s phone → verified change-password 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 的丢失密码动作发送 POST 请求,携带 option=smsalert-change-password-form 以及 smsalert_user_newpwd / smsalert_user_cnfpwd。包含 password-reset=true 的 Location 头被视为成功。wp-login.php,以便实验室运行能够区分真正的接管与失败(OTP 选项关闭,或用户没有电话号码)。未提交任何 OTP。这就是漏洞所在。
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py 是一个小型 Python 3 客户端:彩色横幅,然后执行上述三个步骤。它仅与您在命令行中传入的 URL 通信。
requests在 macOS 上使用 Homebrew Python(PEP 668)时,请使用 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