
Плагин 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 также отмечается, что та же отсутствующая проверка личности может быть использована для изменения адреса электронной почты жертвы и последующего захвата учётной записи через обычный сброс пароля. Любой из этих путей — это неаутентифицированный захват учётной записи.
Сайты уязвимы только при выполнении обоих условий:
billing_phone).При этих условиях последствие — полная компрометация выбранной учётной записи. Захват учётной записи администратора означает полную компрометацию сайта.
| Условие | Результат |
|---|---|
| Неаутентифицированный сетевой доступ | Учётные данные WordPress не требуются |
| Цель — покупатель / подписчик | Захват учётной записи этого клиента |
| Цель — администратор | Повышение привилегий до wp-admin, установка плагинов/тем, постоянное вредоносное ПО |
Конфиденциальность, целостность и доступность — все на высоком уровне: злоумышленник может читать заказы и персональные данные, изменять содержимое сайта и пользователей, а также блокировать законного владельца.
Сброс пароля с SMS Alert примерно выглядит так:
запрос на восстановление пароля → OTP на телефон пользователя → подтверждённый 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