
Dieses Repository enthält ein praktisches Forschungs- und Validierungs-Toolkit für CVE-2025-4396, eine nicht authentifizierte zeitbasierte Blind-SQL-Injection, die das WordPress-Plugin Relevanssi über den Parameter `cats` betrifft.
Dieses Repository enthält einen praktischen Forschungs- und Validierungs-Werkzeugkasten für CVE-2025-4396, eine nicht authentifizierte zeitbasierte Blind-SQL-Injection, die das WordPress-Plugin Relevanssi über den cats-Parameter betrifft.
Das Projekt wurde für autorisierte Purple-Team-Einsätze entwickelt, um:
Das Repository enthält:
Haftungsausschluss
Dieses Projekt dient ausschließlich zu Bildungszwecken, zur defensiven Validierung und für autorisierte Sicherheitstests.
Verwenden Sie es nicht gegen Systeme, die Sie nicht besitzen oder für deren Bewertung Sie keine ausdrückliche schriftliche Genehmigung haben.
CVE-2025-4396 ist eine SQL-Injection-Schwachstelle, die die Relevanssi-Suchfunktion in WordPress betrifft.
Im getesteten Szenario ist das Problem über den Suchworkflow erreichbar, genauer gesagt über den cats-Parameter.
Der anfällige Codepfad ermöglicht es, dass vom Angreifer kontrollierte Eingaben die vom Plugin generierte SQL-Abfrage beeinflussen.
Da der anfällige Endpunkt ohne vorherige Authentifizierung zugänglich ist, kann der Fehler von einem entfernten Angreifer ausgenutzt werden, um eine nicht authentifizierte SQL-Injection durchzuführen.
Die praktischen Auswirkungen umfassen:
Die Schwachstelle besteht, weil eine vom Benutzer kontrollierte Eingabe aus einem suchbezogenen Parameter nicht sicher behandelt wird, bevor sie in eine SQL-Abfrage eingebunden wird.
In der Praxis bedeutet dies, dass ein Angreifer SQL-Ausdrücke in die Backend-Abfragelogik einschleusen und die Datenbank zwingen kann, zusätzliche Bedingungen auszuwerten.
Die Schwachstelle wird im blinden Modus ausgenutzt, was bedeutet, dass die Anwendung SQL-Fehler oder rohe Datenbankergebnisse nicht direkt anzeigt.
Statt das Abfrageergebnis von der Seite zu lesen, stellt der Angreifer der Datenbank eine Reihe von Wahr/Falsch-Fragen und beobachtet einen Nebeneffekt:
Die Ausnutzung stützt sich auf SQL-Funktionen wie SLEEP(), um einen messbaren Unterschied in der Serverantwortzeit zu erzeugen.
Dies ermöglicht es einem Angreifer, Daten abzuleiten, ohne sie jemals direkt zu sehen.
Zum Beispiel kann der Angreifer Fragen stellen wie:
$?“Durch Wiederholen dieses Prozesses kann der Angreifer einen vollständigen Hash Zeichen für Zeichen rekonstruieren.
Der Standardansatz iteriert durch einen bekannten Zeichensatz und testet jeden Kandidaten einzeln.
Für jede Position im Ziel-Hash:
Diese Methode ist einfach und zuverlässig, aber relativ langsam, da sie viele Anfragen pro Zeichen erfordern kann.
Der schnellere Ansatz verwendet die Binärsuche auf dem ASCII-Wert jedes Zeichens.
Statt zu fragen:
a?“b?“c?“fragt er:
Dies halbiert den Suchraum bei jeder Anfrage und reduziert die Anzahl der HTTP-Anfragen drastisch.
Der Angriff ermöglicht es dem Betreiber, den user_pass-Wert aus wp_users zu extrahieren, typischerweise für eine gewählte WordPress-Benutzer-ID wie:
1 für den Standard-Administrator,In neueren WordPress-Versionen kann dieser Wert die neue WordPress 6.8+-Passwort-Pipeline verwenden, die Folgendes kombiniert:
CVE_2025_4396.pyDies ist das Standard-Extraktionsskript.
Es führt eine klassische zeitbasierte Blind-SQL-Injection durch und extrahiert den Ziel-Hash Zeichen für Zeichen mittels einer linearen Suche über einen festen Zeichensatz.
Für jede Zeichenposition:
python3requestsurllib3pip3 install requests urllib3
python3 CVE_2025_4396.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v
Arguments :
-t, --target : anfällige Ziel-URL einschließlich des injizierbaren Parameters
-u, --userid : anzugreifende WordPress-Benutzer-ID
-s, --sleep : Schwellwert für die Verzögerung in Sekunden
-v, --verbose : Debug-Logging aktivieren
CVE_2025_4396_Stealth.pyDies ist die Binärsuch-Version.
Es verfolgt das gleiche Extraktionsziel wie das Standard-Skript, ersetzt jedoch die lineare Zeichen-für-Zeichen-Suche durch eine Binärsuche auf ASCII-Werte.
Für jede Position:
python3requestsurllib3pip3 install requests urllib3
python3 CVE_2025_4396_Stealth.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v
Sobald der Passwort-Hash aus WordPress extrahiert wurde, besteht der nächste Schritt darin, ihn offline zu knacken.