Auslöser: Durch Senden einer manipulierten Anfrage mit einer gültigen Nonce an /wp-admin/admin-ajax.php kann eine Zeitverzögerung beobachtet werden:
root@kitploit:~
POST /wp-admin/admin-ajax.php
Content-Type: application/x-www-form-urlencoded
action=wplf_update_from_previous&nonce=<valid_nonce>&id=1 AND SLEEP(5)
Auswirkung: Angreifer können nach und nach Datenbankinhalte (Benutzerkonten, E-Mails, Konfigurationswerte) extrahieren und Administrator-Passwort-Hashes erlangen, was zu einer Privilegieneskalation führt. Die Offenlegung von Schema-Informationen und Datensatzzahlen schwächt die Vertraulichkeit und erleichtert anschließende gezielte Angriffe auf die gesamte WordPress-Installation.
PoC:
Ein authentifizierter Benutzer sendet eine POST-Anfrage an /wp-admin/admin-ajax.php mit einer gültigen Nonce.
Der id-Parameter wird mit einem zeitbasierten Payload wie 1 AND SLEEP(5) injiziert.
Die Serverantwort wird verzögert, was das Vorhandensein einer Blind-SQL-Injection bestätigt.
❓Grund für die Schwachstelle
Der id-Parameter wird direkt aus $_REQUEST übernommen und nur durch sanitize_text_field() geleitet, was SQL-Injection nicht verhindert. Der Wert wird dann direkt in die SQL-Abfrage ohne Prepared Statements oder korrekte Parameterbindung eingefügt.