Bei SQL-Injection-Angriffen wird eine SQL-Abfrage über die vom Client an die Anwendung gesendeten Eingaben eingefügt oder "injiziert". Ein erfolgreicher Angriff dieser Art kann dazu beitragen, sensible Informationen aus der Datenbank zu lesen, zu ändern oder zu löschen. In den extremsten Fällen ermöglicht es die Ausgabe von Systembefehlen.
Im Folgenden finden Sie einen gefährlichen Codeausschnitt, mit dem sie einen SQL-Injection-Angriff durchführen können:
SELECT * FROM users WHERE name = userName;
Die Variable "userName"wird vom Benutzer abgerufen. Wenn ein Angreifer den Ausdruck 'OR' 1 '='1' als Benutzernamen angibt, wird der richtige Benutzername erzwungen, da der Ausdruck "1" = "1" immer wahr ist.
Sie können ein Tool namens sqlmapverwenden, um die Anfälligkeit von sql injection zu testen, das automatisch die Möglichkeit zum Injizieren von SQL-Abfragen finden und nutzen kann. Es unterstützt sechs sql injection-Techniken:logikbasierte, blinde, Fehler, UNION-Abfragen, kumulative Abfragen und OOB-Angriffe. Ermöglicht den Angriff auf MySQL-, Oracle-, PostgreSQL-, Microsoft SQL Server-, Microsoft Access-, IBM DB2-, SQLite-, Firebird-, Sybase-, SAP MaxDB-, HSQLDB- und Informix-Datenbanken.
Die folgende Abbildung zeigt ein Beispiel für die Verwendung von sqlmap, bei dem mit hilfe von heuristischen Tests festgestellt wurde, dass der ID-Parameter in der getesteten Abfrage anfällig für angriffe vom Typ sql injectionsein kann.