SQL-Injection – Datenbankmanipulation über Formulare

SQL-Injection schleust Datenbankbefehle über ungesicherte Formulare ein. Für WordPress-Betreiber bedeutet das: veraltete Plugins können Ihre gesamte Datenbank zur Zielscheibe machen.

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.

jetzt online