Was ist SQL-Injection?
SQL-Injection (kurz: SQLi) ist eine Angriffstechnik, bei der ein Angreifer schädliche SQL-Befehle in Eingabefelder einer Webanwendung einschleust – zum Beispiel in Suchfelder, Kontaktformulare oder Login-Masken. Wenn die Anwendung diese Eingaben nicht korrekt verarbeitet und direkt an die Datenbank weitergibt, führt die Datenbank die eingeschleusten Befehle aus – als wären sie legitime Anfragen des Systems.
SQL ist die Sprache, in der Webanwendungen mit relationalen Datenbanken kommunizieren. WordPress nutzt MySQL als Datenbank – und dort liegen alle Inhalte: Artikel, Seiten, Benutzerkonten, Passwort-Hashes, Einstellungen.
Wie funktioniert SQL-Injection konkret?
Ein vereinfachtes Beispiel: Eine Suchfunktion sendet folgende Datenbankabfrage:
SELECT * FROM posts WHERE title = '[EINGABE]'
Gibt ein normaler Nutzer „WordPress" ein, sucht die Datenbank nach Beiträgen mit diesem Titel. Gibt ein Angreifer hingegen ' OR '1'='1 ein, wird daraus:
SELECT * FROM posts WHERE title = '' OR '1'='1'
Da '1'='1' immer wahr ist, gibt die Datenbank alle Einträge zurück. In schwereren Fällen können Angreifer ganze Tabellen auslesen, Passwörter extrahieren oder Daten löschen.
SQL-Injection und WordPress-Plugins
WordPress selbst schützt seine eigenen Datenbankabfragen durch die $wpdb->prepare()-Funktion, die Eingaben korrekt escapet. Das Problem: Viele Plugin-Entwickler nutzen diese Funktion nicht konsequent – insbesondere bei älteren Plugins oder solchen mit wenig Entwicklungsressourcen.
Wenn ein Plugin eine Eingabe direkt in eine SQL-Abfrage einbaut, ohne sie vorher zu bereinigen, entsteht eine SQLi-Schwachstelle. Diese wird in öffentlichen Vulnerability-Datenbanken dokumentiert und erhält eine CVE-Nummer.
Ein bekanntes Beispiel: Das Plugin „WP Advanced Search" enthielt eine unauthentifizierte SQL-Injection – d.h. kein Login war nötig, um die Datenbank anzugreifen.
Was können Angreifer mit SQL-Injection erreichen?
- Daten auslesen: Benutzernamen, E-Mail-Adressen, Passwort-Hashes
- Admin-Konten übernehmen: Passwort-Hashes können mit Tools wie hashcat geknackt werden
- Daten manipulieren: Inhalte verändern, Links injizieren
- Daten löschen: Im schlimmsten Fall die gesamte Datenbank leeren
- Privilegien-Eskalation: Unter bestimmten Bedingungen können Angreifer direkte Serverkommandos ausführen
Schutzmaßnahmen gegen SQL-Injection
Plugins aktuell halten: Die meisten SQLi-Schwachstellen in WordPress entstehen durch veraltete Plugins. Wer aktuell bleibt, schließt bekannte Lücken. → WordPress Sicherheitslücken
WAF einsetzen: Eine Web Application Firewall erkennt typische SQL-Injection-Muster und blockiert entsprechende Anfragen, bevor sie die Datenbank erreichen.
Eingabevalidierung: Auf Entwicklerebene: alle Nutzereingaben konsequent validieren und mit Prepared Statements verarbeiten.
Datenbankzugriff einschränken: Der Datenbanknutzer von WordPress sollte nur die minimal nötigen Rechte haben – kein DROP TABLE, kein Zugriff auf andere Datenbanken.
Fazit
SQL-Injection gehört seit Jahren zu den häufigsten Angriffsmethoden auf Webanwendungen und ist in der OWASP Top 10 Liste der kritischsten Web-Sicherheitsrisiken gelistet. Für WordPress-Betreiber ist der Schutz einfach: Plugins aktuell halten, eine WAF einsetzen und auf Qualität bei der Plugin-Auswahl achten.
