SQL Injections bei WordPress auch wirklich entdecken

Selbst wenn bei einem SQL-Injection-Angriff auf ein WordPress-Plugin kein Resultat zu sehen ist, heißt es noch lange nicht dass die Website sicher ist - erst anhand von Blind SQL-Injections (boolesche oder zeitbasierte) kann man sich hier zu 100% vergewissern.

Selbst wenn bei einem SQL-Injection-Angriff auf ein WordPress-Plugin kein Resultat zu sehen ist, heißt es noch lange nicht dass die Website sicher ist – erst anhand von Blind SQL-Injections (boolesche oder zeitbasierte) kann man sich hier zu 100% vergewissern.

Unter den Code Injections sind SQL Injections sehr beliebt, da man direkt Anweisungen an die Datenbank abgeben kann, um Daten einzusehen, zu manipulieren oder zu löschen. Durch die Eingabe einer SQL Anweisung in ein Eingabefeld eines Formulars, kann man überprüfen, wie die Website darauf reagiert.

Mögliche SQL-Injection – Eingabe.


password‘ OR 1=1;–


Sofern die Eingabe nicht gefiltert wird, führt es zu folgender SQL-Anweisung, welche ausgeführt wird.


SELECT * FROM wp_users 

WHERE user_login = ‚admin‘ AND user_pass = ‚password‘ OR 1=1;–‚;


Das führt dazu, dass das Passwort: “password” akzeptiert wird weil 1 gleich 1 ist. Der Logische Operator “or” braucht nur eine wahre Aussage von beiden. Mit “;–” werden weitere Teile des SQL-Statements  auskommentiert.

Das ist nur ein simples Beispiel zur Veranschaulichung von SQL Injections, welches nie eintreten wird, da das Password in der wp_users-Tabelle verschlüsselt ist und über einen Umweg abgefragt wird . Jedoch sind speziell individuelle Plugin-Entwicklungen von WordPress von SQL-Injections stark betroffen. Hier entwickelt man oft unter Zeitdruck, ohne dass jemand anders als der Entwickler drüber schaut.

Bei den SQL Injections unterscheidet man In-Band SQL Injections, Blind SQL Injections und Out-of-Band SQL Injections. Bei In-Band ist Angriff und Ansicht der Resultat über den gleichen Kanal möglich, im Gegensatz zu Out-of-Band. Bei Out-of-Band muss man die Ausgabe auf einem externen Server definieren. Bei In-Band Angriffen unterscheidet man Fehlerbasierte Angriffe (Fehlerausgabe mit Information zur eingesetzten Datenbank) und unionbasierte Angriffe (Vereinigung von SQL-Abfragen). Wird die Antwort der Abfrage nicht direkt auf der Website angezeigt, kann man anhand von Blind SQL Injections (boolesche oder zeitbasierte) nach Anomalien in der Reaktion der Website ausschau halten. Sehe ich eine Reaktion weiß ich, dass die Anwendung mit SQL Injections angreifbar ist.