Web-Anwendungen: Angriffe auf Web-Applikationen Flashcards
1
Q
Angriffe auf Web-Applikationen
A
1) Client-seitige Probleme: Cross-Site Scripting
2) Server-seitige Probleme: SQL-Injection, Remote Code Injection, Path Traversal
2
Q
Ungeprüfte Eingaben und Prüfung der Eingaben
A
- Angreifer manipulieren Teile des HTTP-Requests
- untrusted inputs (Ziel-URL, Parameter, Header) sollen validiert werden anhand Parametern
- niemals dem Client vertrauen (kann unter Kontrolle des Angreifers stehen und manipuliert werden)
3
Q
Don’t Do: Client-seitige Validierung
A
- Erkennung/Prävention von Injection-Angreifen
- Durchsetzen von Passwort-Vorgaben (können auf Client-Seite unschädlich gemacht werden)
- keine Geheimnisse in versteckten Feldern schreiben
4
Q
SQL-Injection
A
Injection-Angriff, bei der in existierender Anwendung SQL-Kommandos in die Datenbank-Engine injiziert werden
5
Q
Problem SQL-Injections
A
- Benutzereingaben in dynamischen Queries und String-Konkatenation
- Einfügen von schadhaften SQL-Befehlen in geeigneten Parameter –> schadhafte Abfrage geht durch
- Hinzufügen von boolschen Werten gewährt Zugriff
6
Q
Lösung: SQL-Injections
A
- vom Benutzer eingegebene Daten dürfen SQL-Befehle nicht verändern
- Keine bzw. knappe Ausgabe von Debugging- und Fehlermeldungen
- Verbieten von Mehrfachabfragen (erschwert Auskundschaften der DB)
- Escapen von ‘ und “ (verhindert oft SQL-Injection-Angriffe)
- Verwenden von prepared statements (stored procedures) –> keine dynamische String-Concatenation, stattdesse vorgefertigte SQL-Statements mit Platzhaltern (SQL-Syntax ändert Semantik nicht)
- Trennung von Applikation und SQL
7
Q
Blind SQL-Injections
A
- Trial-and-Error-Ansatz um Feedback von Applikation zu bekommen (Fehlermeldungen kommen ja nicht)
- Hinzufügen von 1=1 ergibt true und derselbe Datensatz wird ausgegeben –> Verwundbarkeit liegt vor
8
Q
Timing basierte Information-Leaks
A
- Beeinflussen des Antwortverhaltens des Servers
- Query, die entweder sehr schnell oder sehr lange abgearbeitet wird, abhängig von abgefragtem Wert
- durch Messen der Antwortzeit erhält man Informationen über den Wert
9
Q
Falls Prepared-Statements nicht in Frage kommen:
A
- Validieren von Benutzereingaben
- Entfernen/Escapen von Anführungszeichen in Benutzerdaten
- Größenbeschränkungen von Parametern
- Beschränken der Zugriffsrechte auf DB
- Fehlermeldungen nicht verschicken
- keine eigenen Neuimplementierung (Rad nicht neu erfinden)
- -> Schwachstelle bleibt bestehen, Ausnutzen wird nur erschwert