Kurzfassung
Structured Query Language (SQL)-Injection (SQLi) ist eine Cyberangriffstechnik, bei der Schadcode in Datenbankabfragen eingefügt wird, wodurch vertrauliche Daten potenziell offengelegt oder zerstört werden können. Angreifer:innen nutzen gängige SQL-Befehle wie WHERE, UPDATE, INSERT und SELECT aus, um nach verborgenen Daten zu suchen, sich unbefugten Zugriff zu verschaffen oder ein System für zukünftige Angriffe zu kartieren. Die Abwehr von SQLi erfordert proaktive Schwachstellentests und eine strenge Eingabevalidierung – wie beispielsweise das Whitelisting ausschließlich sicherer Zeichen in Formularfeldern.
Wie ein SQL-Injection-Angriff funktioniert
Eine Structured Query Language (SQL)-Injection ist eine Angriffsform. Ein Hacker schaltet sich in das ein, was eigentlich eine private Kommunikation zwischen einem Gerät (wie einem Computer) und einem Datenspeicherzentrum (wie einem Server) sein sollte.
Sobald ein:e Hacker:in eingedrungen ist, kann diese Person fast alles beobachten, ändern oder löschen. Und die Folgen könnten katastrophal sein.
Was ist eine SQL-Injection?
Jede Website basiert auf Code. Blogger:innen sagen uns, dass Programmieren irgendwann zu einer zwingend erforderlichen Fähigkeit wird. Alle werden es tun müssen, um in der modernen Gesellschaft zu überleben. Aber im Moment nutzen Personen, die programmieren können, diese Fähigkeiten, um einen grundlegenden Teil des Betriebs einer Website zu manipulieren.
Die meisten modernen Websites basieren auf Datenbanken, einschließlich solcher, die:
- Produkte verkaufen.
- Anmeldungen zulassen.
- Blogs veröffentlichen.
Eine Website wie diese basiert auf Structured Query Language (SQL). Programmierer:innen verwenden diese Sprache, um die Website bei der Verwaltung und Bereitstellung von Daten zu unterstützen. Wann immer jemand mit einer solchen Website interagiert, gelangen seine Anfragen und Befehle über SQL an die Website. Ein Hacker manipuliert diese Sprache während eines SQL-Injection-Angriffs für einen neuen Zweck.
Welche SQL-Befehle haben Hacker im Visier?
Ein Hacker könnte fast jeden SQL-Befehl manipulieren, aber zu den häufigen Zielen gehören:
| Befehl | Description |
|---|---|
| WO | Während Sie nach dem Speicherort der Daten suchen, die Sie auswählen möchten |
| Aktualisieren | Wo Sie eine Datenaktualisierung anfordern |
| EINFÜGEN | Wo Sie neue Daten zulassen |
| AUSWÄHLEN | Wenn Sie eine Art von Daten nach Namen identifizieren oder Daten sortieren |
Ein Hacker könnte SQL-Injection nutzen, um:
- Aufspüren. Ein Hacker, der SQL-Daten ändert, könnte etwas finden, das Sie lieber geheim halten möchten.
- Zugriff. Ein Hacker könnte die Logik Ihrer Website ändern oder Daten in Ihrer Datenbank abrufen. Dadurch könnte jemand alle Benutzernamen und Passwörter einsehen, was zu unbefugtem Zugriff führen könnte.
- Plan. Ein Hacker könnte untersuchen, wie Ihre Datenbank programmiert ist und wo sie gespeichert ist. Diese Forschung könnte beim nächsten Angriff genutzt werden.
Welche zwei Arten von SQL-Injection gibt es?
Es gibt zwei Hauptarten der SQL-Injection, und zwar:
| Typ | Funktionsweise |
|---|---|
| Erste Bestellung | Eine Anwendung bietet die Möglichkeit, Daten bereitzustellen. Der:die Benutzer:in gibt Code ein, den das System auf unsichere Weise verarbeitet. |
| Zweite Ordnung | Die Anwendung nimmt Eingaben entgegen und speichert sie für später (z. B. durch Speichern in einer Datenbank). Wenn die Anwendung eine andere Anfrage erhält, werden diese ungewöhnlichen Daten abgerufen und auf unsichere Weise eingebunden. |
Wie funktioniert ein SQL-Injection-Angriff in der Praxis?
Sehen wir uns nur eine Art von SQL-Angriff an, damit Sie sehen können, wie er abläuft. Entwickler:innen können Codezeilen teilen, sodass Sie in Echtzeit sehen können, wie diese ausgeführt werden. Wir werden unsere Definition jedoch für all unsere Leser:innen allgemein halten.
In diesem Beispiel heißt eine bekannte Person in Ihrer Datenbank Johnson.
Ein Hacker ruft Ihre Website auf, und diese Person wird aufgefordert, sich anzumelden.
Die Person gibt das Wort „Johnson“ nicht in das Feld ein. Stattdessen gibt die Person eine Code-Zeichenfolge wie „OR 1 gleich 1.“ ein.
Ihr System interpretiert dies als Befehl und wird die gesamte Datenbank durchsuchen, um ihn aufzulösen. Wenn der Hacker ausreichend starken Code geschrieben hat, könnte der Server sogar dazu verleitet werden, den gesamten Inhalt Ihrer Datentabellen preiszugeben.
Die Website Gab war genau solch einem Angriff ausgesetzt, und Hacker erlangten Zugriff auf all dies:
- Öffentliche Beiträge
- Private Peer-to-Peer-Beiträge
- Gruppenbeiträge
- Profilinformationen
- Benutzernamen
- Passwörter
Jede Person auf Gab, die eine ähnliche Benutzername/Passwort-Kombination auf einer anderen Website verwendete, war noch größeren Risiken ausgesetzt. Hacker:innen hätten diese Anmeldedaten auf anderen Websites ausprobieren und noch tieferen Zugriff auf ihr Online-Leben erlangen können.
Können Sie einen SQL-Injection-Angriff verhindern?
Es ist schnell und effizient, eine Website über Datenbanken zu verwalten. Sie benötigen keinen leistungsstarken Server, um all Ihre Seiten zu verwalten, und der Inhalt kann per Klick auf einen Button geändert werden. Sie müssen jedoch darauf achten, eine mit dieser Technologie erstellte Website zu schützen.
Wie testen Sie auf SQL-Injection-Schwachstellen?
Erkennen Sie Ihre Anfälligkeit für SQL-Injection-Angriffe, indem Sie Ihren eigenen SQL-Code übermitteln. Achten Sie auf ungewöhnliche Antworten, die darauf hindeuten, dass Ihr Server diese Elemente als Befehle interpretiert.
Erwägen Sie anschließend die Entwicklung eines Satzes zulässiger Zeichen und Befehle. Lassen Sie nicht zu, dass Nutzer:innen beliebige Inhalte in Ihre Eingabefelder eingeben. Beschränken Sie das, was sie eingeben können, auf Begriffe, von denen Sie wissen, dass sie nicht als Code gelten.
Häufig gestellte Fragen
Was ist der Unterschied zwischen First-Order- und Second-Order-SQL-Injection?
Bei einer First-Order-SQL-Injection bietet eine Anwendung die Möglichkeit zur Dateneingabe und der:die Benutzer:in gibt Code ein, den das System auf unsichere Weise verarbeitet. Bei einer Second-Order-SQL-Injection nimmt die Anwendung Eingaben entgegen und speichert sie für eine spätere Verwendung (z. B. in einer Datenbank); wenn die Anwendung eine andere Anfrage erhält, werden diese ungewöhnlichen Daten abgerufen und auf unsichere Weise eingebunden.
Welche SQL-Befehle werden bei einem Injection-Angriff am häufigsten ausgenutzt?
Hacker:innen können fast jeden SQL-Befehl manipulieren, aber zu den häufigen Zielen gehören WHERE (Suchen nach dem Speicherort der auszuwählenden Daten), UPDATE (Anfordern einer Datenaktualisierung), INSERT (Zulassen neuer Daten) und SELECT (Identifizieren von Daten nach Namen oder Sortieren von Daten).
Auf welche Art von Daten kann ein:e Hacker:in über eine SQL-Injection zugreifen?
Wie der Angriff auf die Website Gab gezeigt hat, kann ein:e Hacker:in Zugriff auf öffentliche Beiträge, private Peer-to-Peer-Beiträge, Gruppenbeiträge, Profilinformationen, Benutzernamen und Passwörter erlangen. Wenn Nutzer:innen Anmeldedaten auf verschiedenen Websites wiederverwenden, könnten Hacker:innen diese Anmeldedaten auch auf anderen Websites ausprobieren und noch tieferen Zugriff auf ihr Online-Leben erlangen.
Wie kann ich testen, ob meine Website anfällig für SQL-Injection ist?
Erkennen Sie Ihre Anfälligkeit für SQL-Injection-Angriffe, indem Sie Ihren eigenen SQL-Code übermitteln. Achten Sie auf ungewöhnliche Antworten, die darauf hinweisen, dass Ihr Server diese Elemente als Befehle interpretiert.
Was ist Eingabevalidierung und wie hilft sie, SQL-Injection zu verhindern?
Die Eingabevalidierung umfasst das Festlegen einer Reihe zulässiger Zeichen und Befehle für Ihre Formularfelder. Indem Sie Benutzer:innen nicht erlauben, beliebige Eingaben in Ihre Eingabefelder zu machen – und die Eingaben auf Begriffe beschränken, die nicht als Code interpretiert werden können –, verringern Sie das Risiko, dass schädliches SQL an Ihren Server übermittelt wird.
Warum sind datenbankgestützte Websites besonders anfällig für SQL-Injection-Angriffe?
Die meisten modernen Websites basieren auf Datenbanken, und eine Website, die auf SQL angewiesen ist, verarbeitet Benutzeranfragen und Befehle über diese Sprache. Während eines SQL-Injection-Angriffs zweckentfremdet ein Hacker diese Sprache – was bedeutet, dass jedes Benutzereingabefeld ein potenzieller Einstiegspunkt für schädlichen Code ist.
Referenzen
Programmieren im Jahr 2016 ist wie Lesen im Jahr 1816. (Oktober 2016). Prenda.
5 wichtige Punkte zu datenbankgestützten Websites. (Juni 2016). Business 2 Community.
Datenbankgestützte Websites. (Oktober 2003). Journal of the Medical Library Association.
Rechtsextreme Plattform Gab bestätigt Hackerangriff. (März 2021). Security.