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