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
wp2shell-poc2 — CVE-2026-63030 | Kitploit
Tools/GitHubGitHub/attackercan/wp2shell-poc2
Exploit-FrameworksSchwachstellenanalyseWebanwendungs-ExploitationPost-ExploitationPenetrationstestsCommand and ControlRed TeamingPayload-Entwicklung
GitHubattackercan/wp2shell-poc2

wp2shell-poc2

CVE-2026-63030

Repository anzeigen
64vor 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

wp2shell-poc

Proof-of-concept für eine nicht authentifizierte SQL-Injection im WordPress-Core, die über eine REST-Batch-Routen-Verwechslung (CVE-2026-63030) zu Remote-Code-Ausführung führt.

Der Exploit benötigt keine Anmeldedaten und keine Konfiguration, abgesehen von einem erreichbaren Ziel. Er erreicht die Injektion über einen einzigen Endpunkt: POST /wp-json/batch/v1.

Der Befund selbst ist eine nicht authentifizierte SQL-Injection – check bestätigt sie und read demonstriert beliebiges Datenbank-Lesen. Der Befehl shell ist ein optionaler Post-Exploitation-Schritt (wiederhergestellte Admin-Zugangsdaten → Plugin-Upload → Befehlsausführung), der enthalten ist, um die volle Auswirkung zu demonstrieren; er ist nicht die Schwachstelle.

Betroffene Versionen

BranchBetroffenBehoben in
6.9.x6.9.0 – 6.9.46.9.5
7.0.x7.0.0 – 7.0.17.0.2

Versionen vor 6.9.0 sind von dieser Kette nicht betroffen.

Funktionsweise

Der REST-Batch-Endpunkt (/batch/v1) erfordert keine Authentifizierung und führt mehrere Unteranfragen in einem einzigen Aufruf aus. Dabei verlässt er sich darauf, dass jede Unteranfrage einzeln validiert und auf Berechtigungen geprüft wird.

serve_batch_request_v1() baut zwei parallele Arrays auf – $matches (den passenden Handler pro Unteranfrage) und $validation (das Validierungsergebnis pro Unteranfrage) – und indexiert beide beim Versand über denselben Offset. Eine Unteranfrage, deren Pfad bei wp_parse_url() fehlschlägt, wird an $validation angehängt, nicht aber an $matches. Dadurch geraten die Arrays aus dem Takt, und eine Unteranfrage wird unter dem Handler einer anderen Unteranfrage ausgeführt. Das ist die Routen-Verwechslung.

Der PoC verschachtelt diesen Grundbaustein zweimal:

  1. Eine POST /wp/v2/posts-Anfrage mit einem requests-Body wird unter dem Batch-Handler selbst ausgeführt. Da sie als Posts-Anfrage validiert wurde, wird ihre requests-Liste nie gegen das Batch-Schema geprüft, sodass ihre Unteranfragen GET verwenden dürfen – die Methoden-Allowlist wird umgangen.
  2. Innerhalb dieses inneren Batches wird eine GET /wp/v2/users-Anfrage mit einem author_exclude-String (das Users-Schema kennt keinen solchen Parameter, daher passiert der Wert die Validierung unverändert) unter posts get_items() ausgeführt. Dort wird author_exclude auf die WP_Query-Query-Variable author__not_in abgebildet, die die verwundbare Version als String in SQL interpoliert.

Das Ergebnis ist eine boolesche und zeitbasierte Blind-SQL-Injection, die ohne Authentifizierung erreichbar ist. Mit Datenbank-Lesezugriff kann der Passwort-Hash des Administrators wiederhergestellt werden; ist er geknackt, ermöglicht Admin-Zugriff die Code-Ausführung über einen Plugin-Upload.

Anforderungen

Python 3.8+ und die Standardbibliothek. Keine Drittanbieter-Abhängigkeiten.

Verwendung

Führen Sie es aus dem Repository-Verzeichnis aus:

root@kitploit:~
./wp2shell.py <command> <url> [options]

Oder pip install ., um den Befehl wp2shell in Ihren PATH aufzunehmen.

check – Schwachstelle bestätigen (sicher)

Bestätigt die Ausnutzbarkeit anhand einer differentiellen Zeitverzögerung. Es liest keine Daten und ändert nichts.

root@kitploit:~
./wp2shell.py check http://target

read – Daten extrahieren (Blind-SQL-Injection)

root@kitploit:~
./wp2shell.py read http://target                      # server fingerprint
./wp2shell.py read http://target --preset users       # user logins and password hashes
./wp2shell.py read http://target --query "SELECT @@version"

shell – Befehl ausführen (Remote-Code-Ausführung)

Optionale Post-Exploitation. Erfordert gültige Administrator-Zugangsdaten; die Injektion stellt den Passwort-Hash wieder her. Geben Sie hier den wiederhergestellten Klartext an.

root@kitploit:~
./wp2shell.py shell http://target --user admin --password '<recovered>' --cmd id
./wp2shell.py shell http://target --user admin --password '<recovered>' -i   # interactive shell

shell lädt eine Plugin-Webshell hoch (geschützt durch einen zufälligen Pfad und ein pro Lauf generiertes Token) und gibt deren Pfad aus. Entfernen Sie sie, wenn Sie fertig sind.

Optionen

Behebung

Aktualisieren Sie auf WordPress 6.9.5 oder 7.0.2. Blockieren Sie bis dahin sowohl /wp-json/batch/v1 als auch den Abfrageparameter rest_route=/batch/v1 am Edge, oder verlangen Sie Authentifizierung für den Batch-Endpunkt über den Filter rest_pre_dispatch.

Rechtliche Hinweise

Nur für autorisierte Sicherheitstests. Verwenden Sie es ausschließlich gegen Systeme, die Ihnen gehören oder für deren Test Sie eine ausdrückliche schriftliche Genehmigung haben. Der Autor übernimmt keine Haftung für Missbrauch.

Referenzen

  • Ankündigung der WordPress-7.0.2-Veröffentlichung – https://wordpress.org/news/2026/07/wordpress-7-0-2-release/
  • CVE-2026-63030
Tool herunterladen
OptionGilt fürBeschreibung
--rest-routealle/?rest_route=/batch/v1 verwenden (für Websites ohne Pretty Permalinks).
--proxy URLalleDatenverkehr über einen HTTP-Proxy leiten (z. B. Burp).
--timeout NalleAnfrage-Timeout in Sekunden.
--sleep NcheckVerzögerung zur Bestätigung der Injektion.
--presetreadfingerprint oder users.
--queryreadEin skalarer SQL-Ausdruck, der gelesen werden soll.
--prefixreadTabellenpräfix der Datenbank (Standard: wp_).
--max-length NreadMaximal gelesene Zeichen pro Wert (Standard: 128).
--user / --passwordshellAdmin-Zugangsdaten (Klartext, aus dem Hash wiederhergestellt).
--cmdshellAuszuführender Befehl (bei Verwendung von -i weglassen).
-i / --interactiveshellÖffnet nach dem Bereitstellen eine interaktive Shell.