Eingabekontrollfehler
Ungenügende Prüfung der eingelesenen Daten, was zum Einschleusen oder Ausführen fremden Codes führt.
Skizzieren Sie die Idee der SQL-Injection. Woran liegt es, dass derartige Probleme in der Praxis so häufig auftauchen?
SQL-Befehl in Eingabefelder eintragen und dadurch die Datenbank manipulieren.
Grund dafür sind schlecht programmierte SQL-Skripte, bei denen z.B. Strings von außen nicht geprüft, Prepared Statements nicht genutzt oder Fehlerhinweise wie „Falsches Passwort" gegeben werden.
Lassen sich SQL-Injection-Probleme prinzipiell umgehen? Falls ja, wie? Falls nein, wie können wir dann damit leben?
Je besser die SQL-Skripte, desto besser der Schutz vor Angriffen. Mögliche Maßnahmen:
- Alles von außen in jedem Falle prüfen
- Zeichen in Kontext mit Daten oder SQL per Escape unschädlich machen
- Verwendung von Prepared Statements
- Passwörter nie im Klartext in der Datenbank ablegen
- Keine Fehlerhinweise geben
Wie können Sie prüfen, ob eine Web-Anwendung hinsichtlich SQLInjection gefährdet ist? Skizzieren Sie zwei grundsätzliche Vorgehensweisen.
Durch das Ausführen von Prüfroutinen mit is_numeric oder add_slashes.
Warum verhindert die Benutzung von Prepared Statements die SQLInjection-Probleme?
Weil das Datenbanksystem die Gültigkeit von Parametern prüft, bevor diese verarbeitet werden.
Sie können keine Prepared Statements benutzen und möchten aber einen Teil der SQL-Injection-Angriffe durch Konfiguration der Datenbank verhindern. Wie geht das? Nennen Sie zwei Vorgehensweisen.
Einsatz von Web Application Firewalls (für den Apache-Webserver z.B. mod_security).
- Nur HTTPS mit selbst signiertem Sicherheitszertifikat
Worin liegt die Idee des Cross Site Scriptings (XSS)?
Weitergabe von ungeprüften Daten mit Script-Code nach Außen an Dritte über Webserver.
Wie lässt sich Cross Site Scripting (XSS) grundsätzlich verhindern?
- JavaScript-Unterstützung im Browser ausschalten (Nutzer)
- Nur gute Eingaben auf Whitelist zulassen
Beim Prüfen einer Eingabe auf dem Server, z.B. in PHP, stellen Sie
die Benutzung von <script>-Tags fest. Was machen Sie? Nennen Sie
zwei Vorgehensweisen mit den jeweiligen Vor- und Nachteilen.
1. Wegschmeissen , gesamte Eingabe löschen.
Vorteil = script nicht ausgeführt
Nachteil = dem Hacker werden Hinweise gegeben was er eingeben muss.
2. Eingabe als Daten übernehmen == kein Kommando mehr sondern nur Text.
Vorteil = alles wird zugelassen
Nachteil = Man muss alle Tricks kennen , wie man Text übersetzten kann (UTF8 etc. )
Für ein Forum wollen Sie als Textformatierung bestimmte HTML-Tags zulassen, z.B. <b> oder <i>. Was muss getan werden, damit keinesfalls XSS möglich wird? Schätzen Sie den Aufwand dafür ein.
1. Prüfen, ob nur erlaubte Tags verwendet werden - Sehr aufwendige Implementierung
- Arbeiten mit Markup-Sprachen bzw. Anbieten eines JavaScript-Editors
Sie wollen mit Hilfe von Cross Site Scripting (XSS) auf den Browser des Administrators, der vielleicht nicht am Internet ist, JavaScript ausführen. Skizzieren Sie dazu eine Idee.
Idee: Lesen einer Datensache, die script texte beinhlaten, = Mensch startet Java Script ohne es zu wissen.
Admin liest die log - Datei : dort stehen alle Infos über website. ZB. URL.
In URL kann auch JavaScript eingebaut werden mit ?z= xxx
Apache schreibt Url in Log-Datei.
Admin schaut sich Log Datei an und Script wird ausgeführt.
Sie haben als Hacker ein JavaScript-Skript geschrieben, das in einem fremden Browser läuft und die Session-ID herausgefunden hat. Wie transportieren Sie diese ID auf Ihren PC?
Anfordern eines 1-Pixel-Bildes von Hacker Server: in der URL stehen dann alle Informationen über User.
Von Hacker Server einfach auf PC schicken
Nennen Sie die drei Methoden, um Sessions im Web zu realisieren. Welche ist die vielleicht beste von diesen dreien?
- Per SSL / TLS (beste Methode)
- Per Cookie, in dem die SID abgelegt wird
- Per verstecktes Formular-Element, in dem die SID abgelegt wird
Was wird unter Session-Hijacking verstanden?
„Entführung einer Kommunikationssitzung".
Agieren als jemand anderes durch Nutzung dessen SID.
Konstruieren Sie ein Verfahren, bei dem Sie in jedem Falle ein Session-Hijacking verhindern, also auch wenn der Hacker unmittelbar an die aktuelle Session-ID heran gekommen ist.
Einmal-Passwörter verwenden (kann auch für Session ID verwendet werden) = Jeder Request bekommt neue Session ID.
Wie kann eine fremde Person an die Session-ID in Ihrem Browser kommen? Beschreiben Sie mindestens eine Idee. Beachten Sie dabei, dass Sie dies nicht bemerken dürfen und dass Sie vielleicht nicht wissen, was eine Session-ID ist.
Durch den Aufruf von JavaScript-Code beim Aufruf bspw. eines kleinen 1-px Bildes.
Zählen Sie alle Einfallstore für fehlerhafte bzw. gefälschte Daten aus der Sicht eines laufenden PHP-Skripts auf.
- Dateien
- Datenbanken (Scripte)
- Cookies
Welche Sicherheitsprobleme können bei der Verwendung von Includes in PHP auftreten? Was ist, wenn die Include-Datei von einem anderen Server stammt?
Include Dateien liegen auf eigenem Server. Ich kann jederzeit Include - Datei von einem anderen Server (Hacker Server) holen. (also nicht machen)
Es können fremde Dateien eingebunden werden, wenn die Eingabe nicht geprüft wird.
Last changed5 years ago