Was ist eine SQL-Injection?
Lesen Sie unser SQL-Injection Beispiel, um zu verstehen, wie SQL-Angriffe funktionieren
In Kürze
SQL-Injection ist eine Art von Cyberangriff, bei dem Hacker:innen bösartigen Code verwenden, um die Datenbank einer Website zu manipulieren und Zugang zu vertraulichen Informationen zu erhalten.
Um zu verstehen, was eine SQL-Injection (zu Deutsch „SQL-Einschleusung“) ist, muss SQL im Allgemeinen erläutert werden. SQL steht für „Structured Query Language“ (dt. strukturierte Abfragesprache), und ist eine Computersprache zum Speichern, Bearbeiten und Abrufen von Daten, die in einer relationalen Datenbank gespeichert sind.
Eine SQL-Injection ist eine Code-Injektionstechnik, die für Angriffe auf datengesteuerte Anwendungen verwendet wird, bei denen bösartige SQL-Anweisungen zur Ausführung in ein Eingabefeld eingefügt werden (z. B. um Datenbankinhalte an Angreifer zu übermitteln).
Was sind die Auswirkungen eines SQL-Injection-Angriffs?
Viele Unternehmen, werden durch SQL-Injection-Angriffe geschädigt.
Was wollen Hacker mit den Daten? SQL-Injection-Angriffe ermöglichen es Angreifern, Ihre Identität vorzutäuschen, vorhandene Daten zu manipulieren oder eine vollständige Offenlegung aller Daten auf dem System zu ermöglichen. Zudem können sie dadurch Daten zerstören oder anderweitig unzugänglich zu machen und Administratoren des Datenbankservers werden.
Wenn Ihr Unternehmen Opfer eines SQL-Injection-Angriffs wird, hat das natürlich negative Auswirkungen auf Ihr Geschäft.
Wenn Ihr Unternehmen private Informationen der Nutzer verliert, ist das schlecht für Ihren Ruf. Außerdem ist es aufgrund des Datenschutzgesetzes illegal, diese Art von Informationen zu verlieren. Es ist deshalb wichtig, vorbeugende Maßnahmen zu ergreifen, um einen Angriff zu vermeiden.
SQL-Injection Beispiel
Ein SQL-Injection Beispiel für einen Angriff könnte in etwa so aussehen: Nehmen wir an, Sie haben eine E-Commerce-Website und eine Kategorie ist dem Verkauf von Turnschuhen gewidmet. Ein Nutzer ist nun am Kauf von Sneakern interessiert und besucht daher diese Kategorie auf Ihrer Website. Wenn der Nutzer auf die Kategorie klickt, wird sein Browser eine Anfrage stellen:
„https://mode-shop.de/products?category=Sneakers“
Ihre Webanwendung führt eine SQL-Abfrage durch, um die relevanten Informationen zu dieser Kategorie aus der Datenbank zu erhalten.
Die SQL-Abfrage wird wahrscheinlich wie folgt lauten:
„Select * FROM products WHERE category = ‘Sneakers’ AND released = 1“
In diesem Beispiel fordert die SQL-Abfrage die Datenbank auf, Details aus der Produktkategorie „Sneakers“ zurückzugeben.
Released = 1 ist eine Einschränkung. Die Zahl 1 dient dazu, Produkte zu verbergen, die noch nicht auf den Markt gebracht wurden. Sie haben z. B. andere Varianten von Turnschuhen, die Sie zu einem späteren Zeitpunkt herausbringen wollen. Die 1 stellt sicher, dass sie nicht an die Öffentlichkeit gelangen.
Ihre Webanwendung hat möglicherweise keine Möglichkeit, sich vor einem SQL-Injection-Angriff zu schützen. Ein Angreifer kann also leider auf diese Weise angreifen:
„https://fake-website.com/products?category=Sneakers’–“
Das Ergebnis ist eine SQL-Abfrage, die wie folgt aussieht:
„Select * FROM products WHERE category = ‘Sneakers’–‘ AND released = 1“
Die Abfolge an doppelten Bindestrichen ist ein Kommentarindikator, der anzeigt, dass es sich bei der Abfrage um einen Kommentar handelt. Und wenn das System glaubt, dass die Abfrage ein Kommentar ist, kann es nicht wissen, dass es sich um einen Angriff handelt.
Anschließend wird durch den doppelten Bindestrich der Rest der Abfrage entfernt (AND released = 1), wodurch im Gegenzug Informationen über alle Ihre Produkte in dieser Kategorie freigegeben werden. Auch solche, die noch nicht für die Öffentlichkeit freigegeben worden sind.
Außerdem kann der Angreifer einen SQL-Angriff senden, um alles zu sehen, was Sie auf Ihrer Website verkaufen, d. h. alle anderen Artikel in anderen Kategorien.
Der Angriff könnte über diesen Befehl ausgeführt werden:
„https://fake-website.com/products?catgory=Sneakers’+OR+1=1–“
Das Ergebnis ist folgende SQL-Abfrage:
„Select * FROM products WHERE category = ‘Sneakers’ OR 1=1–’ AND released = 1“
Wenn diese Abfrage gesendet wird, erhalten die Angreifer Informationen über alle Artikel auf Ihrer Website.
Es gibt viele andere Möglichkeiten, wie ein Angreifer einen SQL-Injection-Angriff durchführen kann. Lassen Sie uns kurz auf sie eingehen.
- Boolesche Angriffe
Der Angreifer sendet eine SQL-Abfrage, um ein Ergebnis aus der Datenbank zu erhalten. Mithilfe der booleschen Methode (ein boolescher Operator ist ein logischer Operator, also ein Operator, der auf Wahrheitswerten operiert) kann der Angreifer feststellen, ob das zurückgegebene Ergebnis „wahr“ oder „falsch“ („true“ oder „false“) ist.
- Verzögerung
Der Angreifer sendet eine Abfrage, um die Datenbank warten zu lassen; dadurch wird eine Verzögerung erzeugt. Mit dieser Methode kann der Angreifer anhand der Zeit, die die Datenbank für die Antwort benötigt, feststellen, ob die von ihm gesendete Abfrage wahr oder falsch war.
- Out-of-Band-Management
Der Hacker kann einen Out-of-Band-Angriff durchführen, wenn der von der Datenbank verwendete Server über bestimmte Funktionen verfügt. Der Angreifer entnimmt die Daten über den Out-of-Band-Kanal und legt sie an einem anderen Ort ab. Bei dieser Art von Angriff muss der Server eine DNS- oder HTTP-Anfrage erstellen, um die privaten Daten an den Angreifer zu übertragen.
SQL-Injection-Angriffe
Die häufigsten SQL-Injection-Angriffe finden im Where-Abschnitt einer Select-Abfrage statt. Sie können jedoch auch in anderen Abfragetypen vorkommen. Sie können in Aktualisierungsanweisungen, Einfügeanweisungen, Select-Anweisungen und Order-By-Abschnitten vorkommen.
Wie können Sie eine SQL-Injection verhindern?
Sie können schon heute Maßnahmen ergreifen! Die meisten SQL-Injection-Schwachstellen können schnell gefunden werden.
- Scanner
Verwenden Sie Burp Suites Web Vulnerability Scanner. Mit der Burp Suite können Administratoren den HTTP/HTTPS-Verkehr zu Webanwendungen abfangen und manipulieren, bevor er an den Server geschickt wird. Sie können nach Fehlern, systematischen Unterschieden und auf die Antworten der Applikationen Acht geben.
- Eingabevalidierung und Web Application Firewall (WAF)
Verwenden Sie Code, der unberechtigte Nutzer identifizieren kann. Alleinstehend verwendet ist dies jedoch keine absolut sichere Methode und kann eine Menge „False Positives“ liefern. Die Implementierung dieser Methode bei gleichzeitiger Verwendung einer Web Application Firewall kann allerdings effektiv sein. Die WAF wird SQL-Injection und andere Online-Bedrohungen herausfiltern.
Wenn die WAF den Hinweis auf einen unrechtmäßigen Benutzer erhält, prüft sie zunächst die IP-Daten, bevor sie die Anfrage blockiert. Wenn die IP-Daten merkwürdig erscheinen, wird die Anfrage auf dieser Grundlage blockiert.
Bleiben Sie da draußen sicher!
Erstellen Sie Ihre Website mit schnellem Hosting
Machen Sie Ihren Traum zu einem Erfolg. Hosten Sie Ihre Website auf schnellen, sicheren und verlässlichen Servern.
Jetzt loslegen- SSD Server mit hoher Performance
- Nutzungsfreundliches Kontrollpanel
- Kostenloser Homepage-Baukasten
- Gratis SSL-Zertifikat
- Tägliche Backups
- Täglicher Support