SQL-Injection: So schützen Sie sich vor Angriffen auf Ihre Datenbanken

Digitales Business

Digitales Business

Datum 31.08.2022
Lesezeit 7 Min.

SQL-Injection: So schützen Sie sich vor Angriffen auf Ihre Datenbanken

Viele Geschäftsprozesse arbeiten mit Datenbanken – vom Vertrieb per Internetshop über die Warenwirtschaft bis hin zur Arbeitszeiterfassung. Häufig sind diese Datenbanken auch über das Internet erreichbar. Beispielsweise für Direktabfragen Ihrer Kund:innen über eine Weboberfläche. Das vereinfacht Abläufe, schafft aber auch Einfallstore für Hackingattacken – etwa per SQL-Injection.

Seit mehr als 20 Jahren gehört sie zu den bevorzugten digitalen Einbruchwerkzeugen von Cyberkriminellen: Mittels SQL-Injection lesen Hackerinnen und Hacker sensible Unternehmensdaten aus oder schmuggeln Schadcode in Firmen-Netzwerke ein.

2008 stahlen Kriminelle auf diesem Weg 130 Millionen Kreditkartennummern beim Zahlungsabwickler Heartland Payment Systems. 2014 ging eine Gruppe von Hacker:innen per SQL-Injection auf großen Beutezug und sammelte über eine Milliarde Benutzer-Log-ins von mehr als 400.000 Webseiten ein.

Dabei sind derartige Attacken nicht einmal besonders schwierig. Auf der Hackingkonferenz DEF CON 2018 in Las Vegas gelang es einem Elfjährigen, in weniger als zehn Minuten in eine Kopie der Regierungs-Webseite des US-Bundesstaates Florida einzudringen und dort eine Liste mit Wahlergebnissen per SQL-Injection zu verändern.

Die Nonprofit-Organisation Open Web Application Security Project (OWASP), die sich der Sicherheit von Anwendungen und Diensten im Internet widmet, führt SQL-Injections daher schon lange auf ihrer Top Ten der größten Sicherheitsrisiken im Web.

Doch obwohl die Gefahr bei Programmierer:innen und Webexpert:innen seit vielen Jahren bekannt ist, ist es bis heute nicht gelungen, alle Einfallstore für SQL-Injections systematisch zu schließen. Im Gegenteil: Immer wieder finden sich in Webapplikationen sogar ganz neue Schlupflöcher. Grund genug für jedes verantwortungsbewusste Unternehmen, die eigenen Datenbanken kritisch unter die Lupe zu nehmen und auf mögliche Lücken zu untersuchen.

 

Was ist eine SQL-Injection und welche Gefahren bringt sie mit sich?

Structured Query Language (auf englisch: Strukturierte Abfrage-Sprache) oder kurz: SQL, ist ein in den 1970er Jahren entwickelter und heute weit verbreiteter Befehlscode zum Bearbeiten und Auslesen von Datenbanken.

Viele Datenbankmanagementsysteme (DBMS) wie MySQL oder Microsoft SQL Server nutzen diese Befehlssprache, um Datenbanken zu verwalten, zu bearbeiten und auszulesen. Speziell für die heute üblichen relationalen Datenbanken, in denen verschiedene Datensätze miteinander verknüpft werden, bietet SQL leistungsstarke Befehle und algebraische Operationen.

Eine solche relationale Datenbank kann beispielsweise Ihre Produktinformationen mit den Lagerbeständen Ihres Warenwirtschaftssystems und den Adressdaten von Besteller:innen zusammenführen. Hinter vielen Webanwendungen und Online-Buchungssystemen liegen heute solche relationalen Datenbanken, die per SQL-Code verwaltet werden. So nutzt auch das Content Management System WordPress SQL-Datenbanken, um Webseiten-Inhalte zu speichern.

 

Whitepaper: Cyber Security

Whitepaper: Cyber Security

Cyberangriffe und kein Ende: Die potenziellen Schäden sind gewaltig und auch der Mittelstand ist zunehmend betroffen. Unser Cyber-Security-Whitepaper verrät, wie wirksamer Schutz vor Kriminellen gelingt:

  • Zahlen, Daten und Fakten zur Bedrohung durch Cyberattacken
  • Einblicke in Angriffsmethoden wie Malware, Ransomware & Co.
  • Maßnahmenplan, um Ihr Unternehmen effektiv zu schützen

 

Risiko Rechtemanagement

Betreiben Sie einen Webshop mit Datenbanken im Hintergrund, so legen Sie üblicherweise per Rechtemanagement fest, welche Daten Ihre Kund:innen in Ihren Datenbanken aus dem Internet einsehen können und welche nicht.

So dürfen Besucher:innen Ihres Shops beispielsweise die Lieferzeit oder die Verfügbarkeit Ihrer eigenen Bestellungen abrufen, aber schon aus Gründen des Datenschutzes nicht die Namen und Adressen anderer Kund:innen, die die gleichen Produkte ebenfalls gekauft haben.

Außerdem dürfen Ihre Kundinnen und Kunden beispielsweise die eigenen Adressdaten aktualisieren oder ihre Bankverbindung ändern. Das Rechtemanagement regelt somit, welche Datenbank-Abfragen überhaupt zulässig sind und welche Daten von welchen Benutzer:innen jeweils verändert werden dürfen.

Eine Injection-Attacke umgeht dieses Rechtemanagement.

Aushebeln von Benutzerrechten per Injection

Als Injection bezeichnen Expert:innen das Ausnutzen von Sicherheitslücken oder Programmfehlern, um einzelne Befehle oder komplette Programme in fremde Systeme einzuschleusen. Solche Injections werden häufig genutzt, um Datenbankbefehle an Ihrem Rechtemanagement vorbeizusenden und diese dann in Ihren Systemen auszuführen (Command Injection).

Die Angreifer:innen geben beispielsweise in ungeschützte Web-Eingabefelder bestimmte Wörter und Sätze ein, die vom jeweiligen Datenbankmanagementsystem als Datenbank-Befehle erkannt und ausgeführt werden. Solche eingeschleusten Befehle werden auch als „Payload“ (auf Englisch: Nutzlast) bezeichnet.

Gelingt es Kriminellen auf diesem Weg, in einer scheinbar harmlosen Suchanfrage zum Beispiel den Datenbank-Befehl zum Auslesen Ihrer kompletten Datenbestände zu verstecken, so können die Angreifer:innen damit Ihre vollständigen Kundendaten und weitere vertrauliche Informationen stehlen.

Andere versteckte Befehle wiederum erlauben das Abändern geschützter Inhalte in Ihren Datenbanken. So könnten Angreifer:innen beispielsweise aus der Ferne alle Preise in Ihrem Webshop auf Cent-Beträge heruntersetzen und dann Ihren Shop leerkaufen.

Je nach Umfang der vorhandenen Sicherheitslücken können Kriminelle per Injection sogar Zugriff auf Ihr dahinterliegendes Betriebssystem erlangen und dann Schadprogramme wie Viren oder Ransomware in Ihre Systeme oder Ihre Cloud einschleusen. Ein solcher Angriff wird auch als Code-Injection bezeichnet.

Auch das Cross-Site-Scripting (XSS), bei dem Angreifer Schadcode in Ihren Webseiten verstecken, der dann von anderen Besucher:innen dieser Webseiten unbemerkt heruntergeladen wird, gehört zu den Injection-Angriffen.

 

SQL-Injection als verbreitete Form der Injection-Angriffe

Die SQL-Injection ist eine Unterart der Injection-Attacken, bei der Kriminelle SQL-Abfragen verwenden, um SQL-Datenbanken zu hacken. Es handelt sich hierbei also um eine Form von Command Injection, aber speziell auf SQL-Systemen.

Da SQL weit verbreitet ist, ist die SQL-Injection die häufigste Form von Injection-Angriffen auf Datenbanken und macht nach Schätzungen von Expert:innen mehr als die Hälfte aller derartigen Attacken aus. Oft wird die SQL-Injection auch als SQLi abgekürzt.

 

Mobiler Virenschutz für Mitarbeiter:innen

Mobiler Virenschutz für Mitarbeiter:innen

Ihre Mitarbeiter:innen nutzen die Firmen-Handys auch privat? Mit unserer netzbasierten Virenschutz-Lösung Secure Net surfen sie sicher im Vodafone-Netz.

  • Ohne Installation, direkt im Netz
  • Schützt von Viren und Pishing
  • Automatisch auf dem neusten Stand

 

So funktionieren SQL-Injektionen in der Praxis

Ähnlich wie viele andere Programmier- und Beschreibungssprachen nutzt auch SQL sogenannte reservierte oder Metazeichen, um mathematische Operatoren darzustellen oder Befehle von den eigentlichen Datenbank-Inhalten zu trennen. Typische Metazeichen sind umgedrehte Schrägstriche (Backslash), einfache Anführungszeichen, eckige und runde Klammern, Semikola und Apostrophe.

So werden Suchbegriffe bei der Recherche in SQL-Datenbanken zwischen einfache Anführungszeichen gesetzt, um sie vom zugehörigen Suchbefehl zu unterscheiden. Am Ende einer Anweisung steht in SQL immer ein Semikolon und Klammern fassen Gruppen von Befehlen oder Argumenten zusammen.

 

Ausklappbare Informationsgrafik

Durch das heimliche Einfügen der Gleichung “1=1” in das Passwortfeld, wird die ganze Eingabezeile scheinbar korrekt (“wahr”), und der SQL-Server lässt Hacker:innen dadurch auch ohne korrektes Passwort in die Datenbank.

 

Datenbank-Befehle als Anfragen getarnt

Bei Cyberattacken per SQL-Injection nutzen Angreifer:innen allerdings Schwachstellen in Programmen aus, um solche Metazeichen und Befehle einzuschmuggeln und etwa einen Datenbank-Befehl als vermeintliche Suchanfrage an ein Webformular zu schicken.

Wenn hierbei die Anführungszeichen an der richtigen Stelle fehlen oder doppelt stehen, interpretiert das DBMS ein simples Suchwort irrtümlich als Datenbank-Befehl und führt diese Anweisung ohne weitere Überprüfung aus. Dies funktioniert selbst dann, wenn die Angreifer:innen gar nicht die erforderlichen Benutzerrechte haben, um einen solchen Befehl überhaupt an das System zu senden.

  • Enthält ein Text beispielsweise den an der passenden Stelle eingeschleusten SQL-Befehl „Drop Table“ (auf Englisch: „Tabelle abwerfen“), so versteht das DBMS dies als Anweisung, die aktuelle Tabelle komplett vom Unternehmens-Server zu löschen. Aber auch andere Steuer-, Lese- und Schreibbefehle können auf diesem Weg leicht injiziert werden und fatale Folgen haben.
  • Durch das Einfügen von zwei aufeinander folgenden Bindestrichen an der richtigen Stelle im SQL-Code wird der SQL-Interpreter des DBMS angewiesen, alle weiteren Zeichen bis zum nächsten Semikolon zu ignorieren. So können Angreifer:innen gezielt vorhandene Befehle manipulieren oder ganz deaktivieren.
  • Selbst Passwortabfragen werden mit dieser Technik erfolgreich umgangen. Dazu tragen die Angreifer:innen beispielsweise in die Passwortabfrage für das Kundenkonto eine einfache logische Operation ein, die den Wert „Wahr“ als Ergebnis einer sogenannten ODER-Verknüpfung zurückliefert. Die Datenbank interpretiert diesen Wert „Wahr“ irrtümlich als Bestätigung, dass auch das Passwort selbst korrekt („Wahr“) eingegeben wurde und gibt den Zugang zum Kundenkonto frei.

Hacker:innen tragen solche bösartigen Anfragen manchmal von Hand in Webformulare ein. Doch meist werden SQL-Injections als sogenannte CGI-Scripte per Software an viele Webseiten zugleich gesendet. Auf diesem Weg testen Kriminelle in kurzer Zeit eine Vielzahl von Internet-Servern auf mögliche SQL-Schwachstellen aus und attackieren sie dann automatisiert.

 

Secure Enterprise Messaging

Secure Enterprise Messaging

Unternehmen, die DSGVO-konforme Kommunikation gewährleisten wollen, kommen um eine Secure Enterprise Messaging-Lösung nicht herum.  

Mit Vodafone CorporateDataAccess 5.0 erhalten Sie eine schlüsselfertige Lösung, um mobile Endgeräte wie Smartphones, Laptops und Tablets via Mobilfunknetz mit Ihrem Unternehmen zu verbinden. Und das alles ohne zusätzliche Software oder Apps.

 

SQL-Injection: Mit diesen Arten erfolgen die Angriffe

Sicherheitsexpert:innen unterscheiden in der Cybersecurity zwischen drei Arten von SQL-Injections:

  • Bei der In-Band-SQLi stehlen Angreifer:innen Datenbank-Inhalte über den selben Kommunikationskanal („Band“), über den sie auch die Webseite mit der Datenbank angreifen. Die In-Band-SQLi ist die einfachste und häufigste Form von SQL-Injections.
  • Die Out-of-Band-SQLi arbeitet im Unterschied zur klassischen In-Band-SQLi mit mindestens zwei Datenkanälen. Über einen Angriffs-Kanal kompromittieren Hacker:innen eine Datenbank mit schädlichen Befehlen. Teil dieser Befehle ist der Verweis auf einen Server im Internet, wohin Tabelleninhalte dann beispielsweise über den Into-Outfile-Befehl versendet werden. Nach der Attacke müssen die Angreifer:innen nur noch die gestohlenen Daten von diesem Server herunterladen und ihre Spuren verwischen.
  • Die inferentielle (schlussfolgendere) SQLi nutzen Angreifer:innen gerne, wenn ein entsprechender Rückkanal fehlt. Dabei senden sie eine Vielzahl von Anweisungen an die Datenbank, um aus den Rückmeldungen des Systems Rückschlüsse auf die eigentliche Struktur und die Inhalte der Datenbank zu erhalten. Diese Form von SQL-Injection setzt fortgeschrittene Hacking-Kenntnisse voraus. Sie wird oft auch als blinde SQLi bezeichnet, weil die Angreifer:innen zu Beginn nur wenig Wissen über das anzugreifende System haben und Inhalte und Form der Datenbank nicht direkt auslesen, sondern nur indirekt (schlussfolgernd) ermitteln. Diese Technik ist sehr aufwändig. Sie kann aber über entsprechende Hacking-Programme automatisiert werden.

 

Video: YouTube / IT-Kanal

 

SQL-Injections verhindern: So gelingt der Schutz Ihrer Datenbanken

Gegen SQL-Injection gibt es keinen einfachen Schutzmechanismus. Die Angriffsmethoden sind vielfältig und immer wieder entdecken Kriminelle neue Sicherheitslücken auf den Ebenen der Web-Anwendungen und der DBMS. Es gibt aber einige Empfehlungen, wie Sie das Risiko von SQL-Injections minimieren:

  • Richten Sie für Datenbank-Zugriffe über Ihre Webseite ein eigenes Benutzerkonto mit minimalen Benutzerrechten ein. Überwachen und protokollieren Sie alle Abfragen, die über dieses Benutzerkonto erfolgen.
  • Speichern Sie grundsätzlich alle Benutzernamen, Passwörter und andere sensible Daten in Ihren Datenbanken verschlüsselt, sodass Hacker:innen diese Informationen nicht per SQLi ausspionieren können. Auch auf Ihren eigenen Endgeräten sollten Sie Passwörter nie im Klartext speichern. Passwort-Manager helfen Ihnen bei Erstellung und Verwaltung sicherer Passwörter.
  • Schützen und prüfen Sie alle Maschinen und Geräte in Ihrem unternehmenseigenen Internet of Things (IoT), die Daten in Ihre Datenbanken schreiben. Dazu gehören beispielsweise Klimalogger, Anlagensteuerungen, Diagnosewerkzeuge oder Mobilgeräte, mit denen Sie Maschinen steuern oder mit denen Sie in Ihrer Private Cloud Daten speichern. IoT-Security sollte in einem vernetzten Unternehmen integraler Bestandteil der Datenbank-Sicherheit sein.
  • Beschädigte Datensätze oder fehlende Tabellen können Anzeichen einer SQLi sein. Überprüfen Sie Ihre Web-Anwendungen unverzüglich auf Sicherheitslücken, sobald sie unautorisierte und unerklärbare Manipulationen an Ihren Datenbank-Inhalten feststellen.
  • Datenpakete oder Kundendaten, die im Fließtext an unerwarteten Stellen SQL-Befehle und Metazeichen enthalten, sind ein deutlicher Hinweis auf eine versuchte SQL-Injection. Finden Sie solche Inhalte in Ihren Tabellen, hat Ihre Sicherheits-Architektur offensichtlich Lücken und Sie sollten diese finden und schließen.
  • Deaktivieren Sie alle nach außen gerichteten Fehlermeldungen Ihrer Web-Anwendungen oder Ihres DBMS, die Angreifer:innen Rückschlüsse auf Ihre verwendete Software oder auf Datenbank-Strukturen erlauben. Eine Meldung wie „Name nicht gefunden in Tabelle ‚Kundendaten.xls‘“ liefert Kriminellen bereits sehr wertvolle Indizien. Noch immer senden viele Webseiten beispielsweise beim Test-Aufruf mit einer bewusst fehlerhaften Get-Anweisung die verräterische Rückmeldung: „Query failed: You have an error in your SQL Syntax …“
  • Verwenden Sie auch bei allen Apps, mit denen Sie intern auf Ihre Unternehmens-Datenbanken zugreifen, stets die aktuellsten Programmversionen. Wenn Sie Office-Pakete und andere wichtige Anwendungen als Software-as-a-Service nutzen, profitieren Sie vom automatischen Update-Service der Hersteller. Damit minimieren Sie das Risiko, dass Angreifer:innen versteckte Programmlücken ausnutzen, um Schadcode in Ihre Datenbanken einzubringen.

 

Vodafone Cyber Security Services

Vodafone Cyber Security Services

Immer mehr DDoS-Attacken, professionelle Hacker-Angriffe, hohe Compliance-Anforderungen: Nie war es wichtiger, Ihre Infrastruktur vor Risiken zu schützen. Dank der Vodafone Cyber Security-Elemente können Sie Ihre Cloud umfassend absichern: von DDoS-Mitigation über Managed Firewall bis hin zum Schutz der physikalischen Komponenten.

Mehr Sicherheit für Ihr Unternehmen: Wir beraten Sie gern über die passenden Cyber Security-Lösungen.

 

Code-Injection: Überprüfung der automatischen Applikationseingaben

Besondere Aufmerksamkeit sollten Sie der Eingabeseite, also dem sogenannten Frontend Ihrer Datenbankverwaltung widmen und hier speziell allen Schnittstellen, über die Sie Daten von Dritten beziehen. Das können Web-Formulare für Anfragen von Kund:innen oder für das Hochladen von Bestelldaten sein, aber auch Kanäle, über die sie automatisiert Daten von anderen Anwendungen empfangen, beispielsweise in Form von Skripten. Wichtig:

  • Prüfen Sie eingehenden Daten immer auf Übereinstimmung mit den jeweils erwarteten Datentypen. Numerische Eingaben testen Sie beispielsweise mit der PHP-Funktion Is_Numeric() auf erlaubte Inhalte.
  • Sonderzeichen, die als Metazeichen Ihre Programmierung kompromittieren könnten, sollten Sie generell ignorieren und verwerfen oder schon bei der Eingabe abfangen und so maskieren, dass Ihre Systeme sie nicht als Befehlscode deuten können.
  • Auch Datenpakete aus vermeintlich sicheren Quellen, etwa von Kolleg:innen, von Ihrer IT-Abteilung oder von Geschäftspartnern, sollten Sie nie ungeprüft in Ihre Datenbanken einpflegen. Denn auch deren Systeme könnten von Schadprogrammen befallen sein oder die Daten könnte Ihnen von Dritten mit gefälschter Absenderkennungen zugesendet worden sein.

 

Web-Server-Security: Sorgen Sie für einen vollumfänglichen Server-Schutz

Nur wenn alle genutzten Programme Hand in Hand für Sicherheit sorgen, schützen Sie Ihre Datenbanken gegen Angriffe aus dem Web. Sichern Sie daher Ihren Webserver mit Maßnahmen der Webserver-Security:

  • Löschen Sie nicht mehr benötigte Benutzerkonten und Applikationen von Ihrem Webserver. Deinstallieren Sie auch nicht mehr verwendete Plug-ins. Je schlanker Ihre Systeme sind, desto weniger Einfallstore bieten sie für Angriffe. 2022 fanden Expert:innen beispielsweise eine Sicherheitslücke in dem beliebten WordPress-Plug-in WP Statistics, über die Angreifer:innen vermeintlich geschützte Informationen auslesen konnten.
  • Halten Sie Ihre Programme aktuell und updaten Sie Ihr DBMS und Ihre Web-Anwendungen wie WordPress oder Ihre Webshop-Software, sobald hierfür neue Versionen herauskommen.
  • Verwenden Sie eine Web-Application-Firewall, wie beispielsweise ModSecurity für Apache HTTP-Server. Diese schaltet sich zwischen Ihren Webserver und die Clients der Besucher:innen Ihrer Webseite schaltet und prüft alle eingehenden Anfragen auf verdächtige Inhalte und SQL-Kommandos.

 

SQL-Map: So prüfen Sie Ihre Systeme und schützen sich gegen Cyberangreifer:innen

Inzwischen gibt es eine Vielzahl von Tools, mit denen Cyberkriminelle Systeme im Internet automatisiert auf Sicherheitslücken für SQL-Injections testen. Aber auch als Webseiten-Betreiber:in selbst können Sie Programme wie SQL Ninja, SQL-Map oder Havij verwenden, um Ihr eigenes Netz probeweise zu attackieren.

SQL-Map beispielsweise ist für Linux, Windows und MacOS erhältlich und mit etwas Einarbeitung auch für Einsteiger:innen geeignet. Es simuliert verschiedene Injection-Typen wie boolean-based blind, time-based blind, error-based, Union query-based, stacked queries sowie out-of-band. Damit findet es auch Schwachstellen bis herunter auf Betriebssystem-Ebene.

SQL-Map kennt zahlreiche Datenbank-Typen von MySQL über Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase und SAP MaxDB bis hin zu MariaDB.

Holen Sie sich bei Bedarf zusätzliche externe Kompetenz ins Unternehmen und beauftragen Sie für Ihr Netzwerk regelmäßige Pentests, bei denen auch Ihre Verwundbarkeit gegenüber SQL-Injections getestet wird. Beim Wechsel Ihres Web-Hosters oder Cloud-Anbieters kann auch ein zusätzlicher, außerplanmäßiger Pentest sinnvoll sein.

Wenn Sie alle hier genannten Sicherheitsregeln befolgen, Ihre Systeme regelmäßig auf Lücken prüfen und sich stets über die neueste Angriffsvarianten informieren, schützen Sie sich wirksam vor SQL-Injections.

 

SQL-Injections in der Übersicht

  • Mittels SQL-Injektionen dringen Hacker:innen in Datenbanken ein und führen dort eigenmächtig Datenbank-Befehle aus.
  • Aufgrund der großen Verbreitung von SQL gehören SQL-Injections zu den häufigsten Angriffsformen im Internet.
  • Ein wirksamer Schutz gegen SQLi setzt auf allen Ebenen von der Webanwendung bis hinunter zur Datenbank an.
  • Mit regelmäßigen Pentests und geeigneter Hacking-Software prüfen Sie Ihre eigenen Systeme gezielt auf Verwundbarkeit.

 

Ist der Schutz gegen Sie SQL-Injections fester Bestandteil Ihrer Cybersecurity-Strategie? Haben Sie selbst schon Spuren von SQLi in Ihren Datenbanken oder in Ihren Logfiles entdeckt? Schreiben Sie uns von Ihren Erfahrungen in den Kommentaren.

 


Ihre Digitalisierungs-Berater:innen für den Mittelstand

Sie haben Fragen zur Digitalisierung? Unser Expert:innen-Team hilft Ihnen kostenlos
und unverbindlich im Chat (Mo.-Fr. 8-20 Uhr). Oder am Telefon unter 0800 5054512

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Facebook Twitter WhatsApp LinkedIn Xing E-Mail