
Плагин SMS & OTP для 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: Improper Authentication |
| CVSS 3.1 | 9.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Vendor | Cozy Vision Technologies Pvt. Ltd. |
| Product | SMS Alert (sms-alert) |
| Affected | Все версии вплоть до 3.9.5 |
| Patched | 3.9.6 (27 июня 2026) |
| CNA | Wordfence |
Этот репозиторий содержит proof-of-concept от Abraxas Labs, предназначенный только для авторизованного тестирования — раскрытия вендору, воспроизведения в лаборатории или хоста, на оценку которого у вас есть письменное разрешение.
SMS Alert перехватывает процесс восстановления пароля WooCommerce / WordPress таким образом, что новый пароль должен подтверждаться одноразовым кодом, отправленным по SMS. В уязвимых версиях обработчик, стоящий за option=smsalert-change-password-form, применяет smsalert_user_newpwd, не проверяя, что вызывающий прошёл проверку OTP или иным образом владеет учётной записью.
Официальная запись CVE также отмечает, что та же отсутствующая проверка личности может быть использована для изменения email-адреса жертвы и последующего захвата учётной записи через обычный сброс. Любой из этих путей — неаутентифицированный захват учётной записи.
Сайты уязвимы только тогда, когда оба условия истинны:
billing_phone).При этих условиях воздействие — полная компрометация выбранной учётной записи. Захват администратора — это полная компрометация сайта.
| Условие | Результат |
|---|---|
| Неаутентифицированный сетевой доступ | Учётные данные WordPress не требуются |
| Цель — покупатель / подписчик | Захват учётной записи этого клиента |
| Цель — администратор | Повышение привилегий до wp-admin, установка плагинов/тем, постоянное вредоносное ПО |
Конфиденциальность, целостность и доступность — все на высоком уровне: злоумышленник может читать заказы и персональные данные, изменять содержимое сайта и пользователей, а также заблокировать доступ законному владельцу.
Сброс пароля с SMS Alert примерно выглядит так:
lost-password request → OTP to the user’s phone → verified change-password POST
Сломан именно последний шаг. Плагин маршрутизирует по $_REQUEST['option'] == 'smsalert-change-password-form' (см. class-wpresetpassword.php в 3.9.5) и затем записывает отправленный пароль. Он не привязывает этот POST к предшествующей OTP-сессии, nonce или проверке прав, которые доказали бы, что вызывающий — это пользователь, указанный в сбросе.
Этот proof-of-concept остаётся на этом обработчике:
POST на WooCommerce /my-account/lost-password/ и /wp-login.php?action=lostpassword с установленным wc_reset_password, чтобы для имени жертвы был задействован путь сброса плагина.POST option=smsalert-change-password-form вместе с smsalert_user_newpwd / smsalert_user_cnfpwd на /, /my-account/lost-password/ и действие lost-password в wp-login. Заголовок Location, содержащий password-reset=true, считается признаком успеха.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