SQL Injections

SQL-Injections: Angriffe auf das Herz deiner Seite

Neben Brute Force Attacken tauchen immer wieder WordPress SQL Injections auf der Liste der größten Gefahren für WordPress-Seiten auf. Es handelt sich dabei um relativ einfach durchzuführende Manipulationen an der Datenbank deiner Seiten. So kommen Hacker an sensible Daten oder richten sich selbst Admin-Accounts ein und können deine Seite nach Belieben manipulieren. Wir zeigen, wie der Angriff funktioniert und warum er so gefährlich ist.

März 2008: Hacker (darunter übrigens ein wahres Mastermind) ergattern 134 Millionen Kreditkartendaten beim amerikanischen Konzern Heartland Payment Systems. Mitte 2016: Mutmaßlich russische Hacker verschaffen sich Zugriff auf die Datenbank registrierter Wähler des Illinois State Board of Elections. Ähnliches passiert in Arizona. Februar 2017: Dem amerikanischen Waffenverkäufer Airsoft GI werden Daten von 65.000 User-Accounts gestohlen. März 2017: Mutmaßlich chinesische Hacker gelangen an die persönlichen Daten von 4.000 Kunden einer koreanischen App und verschicken teils obszöne Textnachrichten an die Opfer.

All diese Angriffe haben eine Gemeinsamkeit: Dahinter steckt ein relativ einfach auszuführender Hack namens SQL-Injection. Bei diesem Angriff erhalten Hacker Zugriff auf die Datenbank und somit auf alle Nutzerdaten einer Seite. Tatsächlich gelten SQL-Injections deshalb als eine der größten Gefahren für Webseitenbetreiber. Auch und vor allem für Webmaster, die hauptsächlich mit WordPress arbeiten.

Und da spätestens seit WooCommerce insbesondere auch größere und komplexere Shops problemlos mit WordPress betrieben werden können, ist es wichtig zu verstehen, wie hoch das Risiko einer WordPress SQL Injection ist und wie diese funktionieren.

Wie „gefährlich“ sind WordPress SQL Injections?

Die Frage nach der „Gefährlichkeit“ eines WordPress-Hacks kann nicht in Form eines einzigen Indikators beantwortet werden. Vielmehr muss man mindestens zwei Aspekte betrachten: Zum einen die Wahrscheinlichkeit, mit der das eigene WordPress-WordPress-Projekte einem solchen Angriff zum Opfer fallen kann, sowie den Schaden, den ein Hack verursachen kann.

Bei Brute Force Attacken ist beispielsweise die Zahl der monatlich gefahrenen Attacken so hoch (teils über 1 Milliarde gemessene Angriffe + Dunkelziffer), dass man eigentlich sagen kann, dass jedes WordPress-WordPress-Projekte früher oder später ins Visier einer solchen Attacke gerät. Der Schaden, der durch einen erfolgreichen Hack entstehen kann, ist mannigfaltig. Meist dienen Brute Force Attacken auch dazu, Webseiten zu kapern und in ein Botnet einzubinden. Cross-Site-Scripting hingegen kommt wesentlich seltener vor, dient aber vor allem dazu, Webseiten mit Schadcode zu infizieren.

Die  Non-Profit-Organisation Open Web Application Security Project (OWASP) gibt regelmäßig eine Top-10-Liste der größten Sicherheitsrisiken für Webanwendungen heraus. Und SQL-Injections belegen hier dauerhaft den ersten Platz, auch auf der (wenngleich vorläufigen) Liste für 2017.

Zu sehen ist eine Grafik der von der Non-Profit-Organisation OWASP regelmäßig rausgegebenen Top-10-Liste der größten Sicherheitsrisiken für Webanwendungen. SQL Injections belegen hier den ersten Platz.
Die Non-Profit-Organisation OWASP gibt regelmäßig eine Top-10-Liste der größten Sicherheitsrisiken für Webanwendungen heraus. SQL-Injections besetzen hier regelmäßig den ersten Platz.

Tatsächlich sind SQL-Injections gekommen, um zu bleiben. Der Hack ist seit über 15 Jahren bekannt. Und laut dem Akamai State of the Internet Security Report für 2017 ist die Häufigkeit von SQL-Attacken seit dem ersten Quartal 2016 um 28 Prozent gestiegen. Im ersten Quartal 2017 stellten SQL-Injections mit 44 Prozent der Angriffe die am häufigsten durchgeführten Hacks dar. 

Hier wird veranschaulicht, dass im ersten Quartal 2017 SQL-Injection mit 44% der Angriffe die am häufigsten durchgeführten Hacks darstellen.
Im ersten Quartal 2017 stellten SQL-Injection laut Akamai State of the Internet Security Report 2017 mit 44% der Angriffe die am häufigsten durchgeführten Hacks dar.

Wordfence, Hersteller einer Sicherheitssoftware für WordPress, kommt zu dem Ergebnis, dass SQL-Injections speziell für WordPress-User eine große Gefahr darstellen. Eine Analyse von knapp 1.600 Sicherheitslücken in Plugins, die über einen Zeitraum von 14 Monaten gemeldet wurden, zeigt deutlich, dass SQL-Injections das zweithäufigste Sicherheitsrisiko überhaupt für WordPress-Seiten sind.

Die Grafik zeigt deutlich, dass SQL Injections das zweithäufigste Sicherheitsrisiko überhaupt für WordPress-Seiten sind.
Die Grafik zeigt, dass SQL Injections das zweithäufigste Sicherheitsrisiko überhaupt für WordPress-Seiten sind.

Bei all diesen Zahlen musst du dir natürlich vor Augen führen, dass die Dunkelziffer wesentlich höher ausfällt – häufig werden SQL-Attacken gar nicht bemerkt und tauchen dann in keiner Statistik auf.

Die Zahlen zeigen, dass WordPress SQL Injections nach Brute Force Attacken und XSS-Lücken zu den häufigsten Angriffsarten überhaupt zählen. Zudem nehmen SQL-Injections einen besonders sensiblen Bereich deiner Seite ins Visier: deine Datenbank. Insbesondere für Shopbetreiber sind diese Hacks somit eine existenzielle Bedrohung. Daher ist es wichtig zu verstehen, wie sie funktionieren und was du dagegen tun kannst.

WordPress SQL Injections zielen auf das Herz deiner Seite: Die Datenbank

Um zu verstehen, wie eine SQL-Injection funktioniert, muss dir klar sein, wie WordPress grundlegend aufgebaut ist. Wenn du das bereits weißt, kannst du diesen Abschnitt getrost überspringen.

Die Datenbank ist die Basis für jede WordPress-Installation: Alle Inhalte sind hier abgelegt. Das CMS selbst ermöglicht es dann diese Inhalte darzustellen und zu bearbeiten. Bei WordPress handelt es sich um eine MySQL-Datenbank. SQL steht für Structured Query Language, eine Programmiersprache mit vollem Funktionsumfang, mit deren Hilfe Strukturen in einer Datenbank angelegt und Daten eingefügt, verändert und gelöscht werden können.

Jedes Mal, wenn du einen Artikel schreibst, eine neue Kategorie anlegst, dein Passwort änderst oder auch wenn deine Nutzer einen Kommentar schreiben, werden diese neuen Daten in der Datenbank abgespeichert. Hier liegt also jeder einzelne Inhalt deiner Webseite.

WordPress zieht sich immer, wenn ein Nutzer deine Seite aufruft und bestimmte Inhalte anfordert, die passenden Daten aus der Datenbank, bringt sie mit PHP zusammen und erstellt ein HTML-Dokument, das schlussendlich an den Browser des Nutzers übertragen wird. Von den ganzen Vorgängen, die bis dahin stattfinden, bekommt der Nutzer nichts mit.

SQL Injections schleusen externen Code in die Datenbank

Auch wenn du selber nie direkt mit der Datenbank, sondern immer nur mit dem WordPress-Backend agierst: Die Datenbank ist das Herz deiner Webseite.

Aber wie gesagt: Auch Nutzer sind in der Lage dazu, Daten in die Datenbank einzutragen. Einen Kommentar schreiben, einen Useraccount anlegen, ein Kontaktformular ausfüllen und absenden – all diese Aktionen generieren Daten, die in die Datenbank abgespeichert werden.

Was aber, wenn jemand diesen indirekten Zugang zu deiner Datenbank nutzt, um schadhaften Code in die Datenbank zu schleusen? Dann spricht man von einer SQL-Injection.

Der Gedanke dahinter ist nicht einmal besonders kompliziert: Wenn keine Sicherheitsvorkehrungen bestehen, muss der Hacker nur SQL-Code in ein Formularfeld eingeben (z. B. beim Schreiben eines Kommentars). Der enthält etwa Zeichen, die für den SQL-Interpreter – der dafür zuständig ist, in der Datenbank SQL-Befehle auszuführen – eine Sonderfunktion haben. Solche Sonderzeichen, genannt Metazeichen, sind zum Beispiel ; „ ‚ und \.

Das CMS glaubt, es handele sich dabei um harmlose Daten, und übergibt die Eingabe wie gehabt an die Datenbank mit dem Auftrag, sie abzuspeichern. Der SQL-Interpreter erkennt den Code anhand der Metazeichen als einen Handlungsauftrag und führt den Datenbankbefehl aus.

Übrigens gilt bei SQL-Injections genau wie bei Brute Force-Attacken: Es sitzt so gut wie nie ein Hacker allein am Computer und gibt manuell Codes in Formulare ein. Auch diese Attacken laufen über automatisierte Botnetze, die tausende Webseiten gleichzeitig auf Schwachstellen absuchen und dort zuschlagen, wo sie eine entdecken.

Was kann jetzt passieren?

  • Der Hacker umgeht jegliche Authentifizierungsmechanismen oder versteckt sich hinter der Identität eines bestehenden Nutzers, um Zugang zu erlangen. Legt ein Hacker sich beispielsweise einen neuen Adminaccount an, spricht man auch von einem Priviledge Escalation Exploit.
  • Er kann auf diese Weise Daten ausspähen, verändern oder löschen. Das ist insbesondere dann kritisch, wenn du einen Online-Shop betreibst und über die Zahlungsdaten deiner Kunden verfügst.
  • Er kann die Kontrolle über deine komplette Webseite und deinen Webspace übernehmen, zum Beispiel, indem er sich selber als Admin einloggt und damit Zugriff auf dein Backend erhält. So hat ein Hacker die volle Kontrolle über deine Seite und kann sie als Spam-Schleuder missbrauchen, Schadcode einbringen oder sie in ein Botnet einfügen.

Fazit: Gerade wegen der Automatisierung sind WordPress SQL Injections sehr gefährlich

WordPress SQL Injections gehören zu den gefährlichsten Hacks überhaupt. Sie sind leicht durchzuführen, meist automatisiert und können massive Schäden anrichten: Gerade für Shopbetreiber ist die Gefahr durch SQL-Injections existenziell.

Daher ist es wichtig, deine Seite entsprechend zu schützen: User-Input muss überprüft und gesäubert werden. Zudem solltest du Daten maskieren, um die Ausführung von Schadcode zu verhindern. Dieser Vorgang nennt sich Data Sanitization and Validation und wird beispielsweise im WordPress Codex ausführlich behandelt. In einem der folgenden Artikel werden wir aber noch näher auf das Thema eingehen und dir zeigen, wie du verhindern kannst, dass Schadcode in deiner Datenbank aktiv werden kann.

Grundlegend helfen hier auch umfassende Sicherheits-Plugins weiter: Denn sie sind insbesondere in der Lage, automatisierte Angriffe auf deine Seiten zu blockieren, die die Grundlage für viele Hacks darstellen.