Netzwerksicherheit – Übung 9 Websicherheit

Transcription

Netzwerksicherheit – Übung 9 Websicherheit
Hausaufgabe
Einstieg
Web-Application-Security
Netzwerksicherheit – Übung 9
Websicherheit
David Eckhoff, Tobias Limmer, Christoph Sommer
Computer Networks and Communication Systems
Dept. of Computer Science, University of Erlangen-Nuremberg, Germany
24. – 28.01.2011
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
1 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Hausaufgabe
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
2 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Wie werde ich Hacker?
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
3 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Google-Hacking
Sicherstellen, dass keine kritischen Dateien von außen
erreichbar sind. Erst recht nicht von google!
filetype:pwd service
filetype:bak inurl:“config.inc.php“
filetype:properties inurl:db intext:password
“VNC Desktop“ inurl:5800
“This file was generated by Nessus“
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
4 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Wie finden Angreifer ihre Ziele?
Ping-Sweeps
Port-Scanning
TCP-Connect|SYN|FIN|ACK|NULL-Scan, UDP-SCAN
nmap -sT|sS|sF|sA|SN <host>
Betriebssystem erkennen
Stack-Fingerprinting, TCP Fenstergröße, ACK-Werte, ....
nmap -O <host>
Gegenmaßnahmen
Keine Wirklichen
ICMP blockieren
“Filtered“ Ports
Port-Scan Detektor
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
5 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Wie finden Angreifer ihre Ziele?
Banner-Grabbing
Services verraten sehr viel über sich oder gar das gesamte
System
Dies ermöglicht Suche:
Horizontal nach einem bestimmten Dienst
Vertikal nach irgendeinem verwundbarem Dienst
Gegenmaßnahmen
Maulkorb für Services
Irreführen durch falsche Banner
Portscan-Detektor
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
6 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Top 10 der Sicherheitslücken
Open Web Application Security Project (OWASP)
OWASP Top Ten 2010
?
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
7 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Top 10 der Sicherheitslücken
Open Web Application Security Project (OWASP)
OWASP Top Ten 2010
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
7 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Informationen und Standardpfade
Zu aufschlussreiche Fehlermeldungen geben
Informationen preis
Standardpfade können bruteforced werden
phpinfo
phpmyadmin
install.php
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
8 / 21
Hausaufgabe
Einstieg
Web-Application-Security
PHP: Register_Globals
Soll dem Programmierer erlauben anstatt $_GET[“User“]
oder $_SESSION[“User“] nur $User zu benutzen
Erlaubt das Überschreiben von Variablen über GET oder
POST
Kann bei Erraten oder Kennen von Code zu erheblichen
Sicherheitslücken führen
Code, der register_globals benötigt nicht benutzen
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
9 / 21
Hausaufgabe
Einstieg
Web-Application-Security
PHP: Register_Globals
Macht doch keiner mehr!
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
10 / 21
Hausaufgabe
Einstieg
Web-Application-Security
PHP: Register_Globals
Macht doch keiner mehr!
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
10 / 21
Hausaufgabe
Einstieg
Web-Application-Security
SQL Injections
Immer noch Sicherheitslücke Nr. 1
Fehlende Eingabevalidierung in GET und POST requests
führt zur Ausführung beliebiger SQL Statements
Auch über Cookie-Inhalte möglich
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
11 / 21
Hausaufgabe
Einstieg
Web-Application-Security
SQL Injections
Immer noch Sicherheitslücke Nr. 1
Fehlende Eingabevalidierung in GET und POST requests
führt zur Ausführung beliebiger SQL Statements
Auch über Cookie-Inhalte möglich
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
11 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Schutz vor SQL Injections
Jede Eingabe des Users überprüfen
Sonderzeichen in Eingaben escapen
Prepared Statements
Datenbanksystem bekommt ganzes Statement vor den
Parameterwerten
“SELECT user, password FROM tbl_user
WHERE (user=?)’“
Server bereitet Statement zur Ausführung vor
Danach werden Parameter einzeln übergeben
Sogar deutlich schneller bei wiederholter Ausführung eines
Statements
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
12 / 21
Hausaufgabe
Einstieg
Web-Application-Security
XSS - Cross-Site-Scripting
Nicht-Persistentes Cross-Site-Scripting
Einschleussen von Schadcode/Fremdscripten über GET
oder POST-Methode
Schadcode wird nicht permament auf Seite eingebettet
Opfer muss auf einen Link gelockt werden
Persistentes Cross-Site-Scripting
Schadcode wird permanent in die Seite eingebettet
Jeder Besucher der manipulierten Seite ist potentiell
angreifbar
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
13 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Schutz vor XSS
User-Eingaben grundsätzlich für gefährlich halten
Genaue Prüfung von Usereingaben
HTML-Sonderzeichen codieren/escapen/filtern
Als Client: Scripte ausschalten/whitelisten
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
14 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Session-Hijacking
Ein Angreifer versucht in den aktuellen Kontext einer
Verbindung zwischen Opfer und Server einzusteigen und
die Identität des Opfers anzunehmen
Session fixation
Angreifer versucht dem Opfer eine ihm bekannte
Session-ID zu geben
Session sidejacking
Abgreifen des Session-Cookie durch Wireshark oder
aehnliches
via XSS
User schickt ohne Mitwissen sein Session-Cookie an die
Seite eines Angreifers
Angreifer setzt sein Session-Cookie auf die abgehörte
Session-ID
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
15 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Schutz vor Session-Hijacking
Lösungen auf Server Seite zu suchen
Session-IDs nicht ratbar wählen
Nicht nur Session-ID als Authentifizierung benutzen
Session-IP-Tupel speichern
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
16 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Cross-Site Request Forgery (CSRF)
aka Session Riding
Problem: Browser sendet manche Credentials automatisch
Ablauf:
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
17 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Cross-Site Request Forgery (CSRF)
aka Session Riding
Problem: Browser sendet manche Credentials automatisch
Ablauf:
Opfer benutzt Browser um sich bei Website A anzumelden
Browser speichert Credentials
Angreifer bringt Browser des Opfers dazu, präparierten
HTTP-Request an Website A zu schicken
4 Browser verwendet gespeicherte Credentials
5 Website A verarbeitet HTTP-Request
1
2
3
Angriffsvektoren:
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
17 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Cross-Site Request Forgery (CSRF)
aka Session Riding
Problem: Browser sendet manche Credentials automatisch
Ablauf:
Opfer benutzt Browser um sich bei Website A anzumelden
Browser speichert Credentials
Angreifer bringt Browser des Opfers dazu, präparierten
HTTP-Request an Website A zu schicken
4 Browser verwendet gespeicherte Credentials
5 Website A verarbeitet HTTP-Request
1
2
3
Angriffsvektoren:
<a href="http://www.example.com/profile/delete?confirm=1">. . .
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
17 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Cross-Site Request Forgery (CSRF)
aka Session Riding
Problem: Browser sendet manche Credentials automatisch
Ablauf:
Opfer benutzt Browser um sich bei Website A anzumelden
Browser speichert Credentials
Angreifer bringt Browser des Opfers dazu, präparierten
HTTP-Request an Website A zu schicken
4 Browser verwendet gespeicherte Credentials
5 Website A verarbeitet HTTP-Request
1
2
3
Angriffsvektoren:
<a href="http://www.example.com/profile/delete?confirm=1">. . .
<img src="http://www.example.com/profile/delete?confirm=1">. . .
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
17 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Cross-Site Request Forgery (CSRF)
aka Session Riding
Problem: Browser sendet manche Credentials automatisch
Ablauf:
Opfer benutzt Browser um sich bei Website A anzumelden
Browser speichert Credentials
Angreifer bringt Browser des Opfers dazu, präparierten
HTTP-Request an Website A zu schicken
4 Browser verwendet gespeicherte Credentials
5 Website A verarbeitet HTTP-Request
1
2
3
Angriffsvektoren:
<a href="http://www.example.com/profile/delete?confirm=1">. . .
<img src="http://www.example.com/profile/delete?confirm=1">. . .
<form action="http://www.example.com" ><input type="hidden" . . .
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
17 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Schutz vor CSRF
nicht (nur) auf automatisch übertragene Credentials
verlassen (z.B. durch Tokens in allen Links)
nochmalige Eingabe des Passworts vor gefährlichen
Aktionen
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
18 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Insecure Direct Object References
Server lädt Ressourcen nach ohne ihre Validität zu prüfen
Erlaubt Angreifer u.U. beliebige Scripte nachzuladen
Führt oftmals zur totalen Komprimittierung des Systems
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
19 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Insecure Direct Object References
Server lädt Ressourcen nach ohne ihre Validität zu prüfen
Erlaubt Angreifer u.U. beliebige Scripte nachzuladen
Führt oftmals zur totalen Komprimittierung des Systems
Gegenmaßnahme: Programmieren lernen
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
19 / 21
Hausaufgabe
Einstieg
Web-Application-Security
A7,A9,A10
Failure to Restrict URL Access
User kann Webseite direkt aufrufen, umgeht u.U.
authentication code, z.B.: http://bank.de/admin
User kann auf Konfigurationsdateien und andere kritische
Dateien zugreifen
Insufficient Transport Layer Security
TLS wird nicht für jede kritische Kommunikation zur
Webseite verwendet
Session-Hijacking durch Abhören von Traffic
Firesheep
Unvalidated Redirect Forwards
User kann von einer vertrauenswürdigen Seite auf eine
andere, nicht vertrauenswürdige umgeleitet werden
https://bank.de/i.php?forward=www.bank.ru/i.php
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
20 / 21
Hausaufgabe
Einstieg
Web-Application-Security
Quellen
S. McClure et al., Das Anti-Hacker-Buch, bhv, 2006
http://www.xkcd.com
http://www.owasp.org/
http://www.ligattsecurity.com/solutions/hacker-in-15minutes
David Eckhoff, Tobias Limmer, Christoph Sommer: Netzwerksicherheit – Übung 9 Websicherheit
21 / 21