02
Beispiel einer SQL-Injection
Angreifer nutzen SQL-Injections etwa um Datenbanken für User, Schüler, Produkte und dergleichen zu korrumpieren. Hier verwenden Software-Entwickler typischer Weise eine REST-API für den Abruf von Benutzern:
https://myapi.com/users/123
Diese Eingabe würde wahrscheinlich zu einer (nicht gesäuberten) Anfrage wie dieser führen würde:
SELECT * from users where id = 123
Wenn die API über keine Eingabedaten-Validierung / -Hygiene verfügt, besteht die Möglichkeit, mittels SQLi jeden Benutzer im System zu löschen. Die hierzu erforderlichen Eingaben sehen etwa so aus:
https://myapi.com/users/123;DELETE FROM users where id != 0
oder so:
https://myapi.com/users/123;TRUNCATE users
Hat der Angreifer Kenntnisse über die Datenstruktur in der Datenbank, könnte er durch Hinzufügen oder Aktualisieren von Einträgen in der Datenbank an Admin-Rechte erlangen:
https://myapi.com/users/123;UPDATE users set admin = 1 where id = 456
oder so:
https://myapi.com/users/123;INSERT INTO user_roles (userId, role) VALUES (456, 'ADMIN')
Weitere detaillierte Fallbeschreibungen inclusive Code-Beispiele finden Sie auf der Webseite der OWASP Foundation.