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-11551-PoC | Kitploit
Outils/GitHubGitHub/ubaydev/cve-2026-11551-poc
Escalade de PrivilègesAnalyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionAuthentification
GitHububaydev/cve-2026-11551-poc

CVE-2026-11551-PoC

Voir le dépôt
1il y a 2 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-11551 - Privilège non authentifié dans White Label & Branding, Free Login Page Customizer

White Label & Branding, Free Login Page Customizer <= 3.4.29 - Élévation de privilèges non authentifiée via prise de contrôle de compte

Processus complet WordPress Core → Filtre Branda :

root@kitploit:~
wp_update_user( $userdata )
    │
    ├── wp_hash_password( $userdata['user_pass'] )   ← Line 2709: SUDAH DI-HASH
    │
    └── wp_insert_user( $userdata )
            │
            ├── $user_pass = $userdata['user_pass']  ← Line 2228: HASHED
            │
            ├── $data = compact('user_pass', ...)    ← Line 2469: HASHED
            │
            ├── apply_filters('wp_pre_inserter_id)
            │       │
            │       └── Branda: pre_insert_u
            │               │
            │               ├── query wp_sig['user_login']
            │               ├── if meta['pas
            │               │   $data['user_ta['password'])
            │               │                                        ↑
            │                           ┌───
            │                           │
            │                           ↓
            │               DOUBLE HASH: wp_d($raw))
            │
            └── $wpdb->update( $wpdb->users, $data, ... )  ← Line 2515: DOUBLE HASH TERSIMPAN

Code vulnérable (inc/modules/login-screen/signup-password.php:230-251)

root@kitploit:~
/**
 * BRANDA - signup-password.php
 * Filter: wp_pre_insert_user_data
 */
public function pre_insert_user_data( $data,
    // ❌ TIDAK ADA CEK: if ($update) return
    // ❌ Filter ini JALAN untuk INSERT DAN

    if ( is_multisite() ) {
        global $wpdb;

        // ❌ $data['user_login'] dari POST n edit user
        $query = $wpdb->prepare(
            "SELECT meta FROM {$wpdb->signup
            $data['user_login']  // ← bisa diubah attacker
        );
        $result = $wpdb->get_var( $query );
        $meta   = maybe_unserialize( $result

        if ( is_array( $meta ) && isset( $me
            // ❌ DOUBLE HASH: WordPress SUDAH hash sebelum filter ini jalan
            // $meta['password'] = "mysecret
            // wp_hash_password("mysecretpasama dari WP core)
            // wp_hash_password("$P$Bxyz..."dari Branda)
            $data['user_pass'] = wp_hash_pas

            unset( $meta['password'] );
            $wpdb->update(
                $wpdb->signups,
                array( 'meta' => maybe_seria
                array( 'user_login' => $data
            );
        }
        return $data;
    }
    // ...
}

Code du noyau WordPress à l'origine de la vulnérabilité :

  1. wp_update_user() — Lignes 2706-2709
root@kitploit:~
// wp-includes/user.php:2706
if ( ! empty( $userdata['user_pass'] ) && $u_user_data->user_pass ) {
    $plaintext_pass        = $userdata['user
    $userdata['user_pass'] = wp_hash_passwor // ← HASH #1
}
  1. wp_insert_user() — Ligne 2228
root@kitploit:~
// wp-includes/user.php:2228 (UPDATE path)
$user_pass = ! empty( $userdata['user_pass'] $old_user_data->user_pass;
// $user_pass sekarang = "$P$Bxyz...SUDAH HASH"
  1. wp_insert_user() — Ligne 2505
root@kitploit:~
// wp-includes/user.php:2505
$data = apply_filters( 'wp_pre_insert_user_dd, $userdata );
// Branda filter jalan, $data['user_pass'] SUDAH HASH dari line 2228

Scénario d'attaque : prise de contrôle de compte via Admin

Mise en place

  1. Multisite WordPress avec Branda Signup
  2. Il y a une inscription en attente dans wp_signups :
root@kitploit:~
   ┌─────────────┬──────────────────────────┐
   │ user_login   │ meta (serialized)       │
   ├─────────────┼──────────────────────────│
   │ victim_user  │ a:1:{s:8:"password";s:10:"H4cker123!"}│
   └─────────────┴──────────────────────────┴
  1. Cible : l'utilisateur « admin_user » (ID=2) avec le rôle Administrateur

Déroulement de l'exploitation

ÉTAPE 1 : L'attaquant se connecte à WP-Admin (via le web ou via un exploit CSRF pour déclencher une action admin)

ÉTAPE 2 : L'attaquant ouvre /wp-admin/user-edit.php (modification de admin_user)

ÉTAPE 3 : L'attaquant change le user_login de admin_user en « victim_user »

root@kitploit:~
        ┌────────────────────────────────────────────┐
        │ Field: username                            │
        │ Value: victim_user  ← DIUBAH               │
        └────────────────────────────────────────────┴

ÉTAPE 4 : Le formulaire est soumis → wp_update_user() est appelé

ÉTAPE 5 : Flux du noyau WordPress :

root@kitploit:~
        wp_update_user({ID: 2, user_login: "victim_user", ...})
            │
            ├── user_pass = wp_hash_password(old_password)  ← HASH #1
            │
            └── wp_insert_user({ID: 2, user_login: "victim_user", user_pass: "$P$Bhash1"})
                    │
                    └── apply_filters('wp_pre_insert_user_data', $data, true, 2)
                            │
                            └── Branda: pre_insert_user_data()
                                    │
                                    ├── $data['user_login'] = "victim_user"
                                    │
                                    ├── SELECT meta FROM wp_signups WHERE user_login = "victim_user"
                                    │   → meta = 'a:1:{s:8:"password";s:10:"H4cker123!"}'
                                    │
                                    ├── $meta['password'] = "H4cker123!"
                                    │
                                    └── $datword("H4cker123!")
                                             ← HASH #2 (DOUBLE!)

ÉTAPE 6 : table wp_users mise à jour :

root@kitploit:~
        ┌────┬────────────┬──────────────────────────────────┐
        │ ID │ user_login │ user_pass                        │
        ├────┼────────────┼──────────────────────────────────┼
        │ 2  │ victim_user│ $P$Bhash2  ← DOUBLE HASH!        │
        └────┴────────────┴──────────────────────────────────┘

ÉTAPE 7 : admin_user désormais :

root@kitploit:~
    - Nom d'utilisateur : victim_user
    - Mot de passe : H4cker123! mais HASHÉ 2 fois
    - Échec de connexion ! → Verrouillage du compte

ÉTAPE 8 : Pendant ce temps, l'attaquant peut :

root@kitploit:~
    - Se connecter avec les identifiants de l'inscription si la meta n'a pas encore été nettoyée
    - Ou refaire une inscription avec le même user_login

Références :

  • https://plugins.trac.wordpress.org/browser/branda-white-labeling/trunk/inc/modules/login-screen/signup-password.php?rev=3429115#L232
  • https://plugins.trac.wordpress.org/browser/branda-white-labeling/tags/3.4.29/inc/modules/login-screen/signup-password.php#L232
  • https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/branda-white-labeling/branda-white-label-branding-free-login-page-customizer-3429-unauthenticated-privilege-escalation-via-account-takeover
Télécharger l’outil