Web Hacking - Angriffe und Abwehr UNIX-Stammtisch 31. Januar 2012 Frank Richter Holger Trapp Technische Universität Chemnitz Universitätsrechenzentrum
Motivation (1): Für uns Lehrveranstaltung: Techniken der IT-Sicherheit Arbeitsaufgaben: Webmaster, Beratung, Kurse Sicherheit der eigenen Systeme prüfen Angriffspotenzial verringern viel Elend Anonyme Meldungen über Sicherheitsprobleme noch mehr Elend 2
Motivation (2): Angreifer und deren Ziele Underground Economy: Botnetze (Spam, DoS) verschleierte Geld-Transaktionen Spionage Politische Organisationen Infrastruktur lahmlegen Kleinkriminelle Geld (Konten, Kreditkarten, Betrug) Verunglimpfung, Zerstörungswut, Erpressung... Gelegenheitstäter Just for fun 3
5. Interpretation, Anzeige HTML Bilder, CSS JavaScript Java, Flash 1. URL http://www.domain.tld/doc Webbrowser Szenario: Websurfen 2. DNS 134.135.136.137 Internet DNS-Server 3. HTTP A: GET /test.html HTTP/1.1 Webserver 4. Verarbeitung Dateien (HTML, CSS, Bilder) CGI, PHP, ASP, JSP B:<html><head> <title>tolle Seite</title> 4
Die brutale Art: Denial of Service DDOS: Mit Bot-Netz / Cloud kriegst du alle tot. Es geht auch ohne: Hash collision DOS URL?name1=wert1&name2=wert2&... $_GET[ name1 ] = wert1 $_GET[ name2 ] = wert2... Geschickte Wahl von name gleicher Hash lineare Suche CPU-intensiv Alle Scriptsprachen außer Perl PHP: Fix mit max_input_vars 5
Remote / Local File Inclusion (RFI/LFI) Ziele: Anzeige beliebiger (geschützter) Dateien Ausführen von fremdem Code Schwachstelle: Ungenügende Prüfung von Parametern Beispiel: www.../index.php?datei=name.html <?php include($_get[ datei ]);?> www.../index.php?datei=/etc/passwd 6
SQL Injection Einschleusen von SQL-Befehlen in Webanwendungen Ziele: Zugang zu Datenbanken: Lesen, Manipulation Ggf. Kode ausführen Schwachstelle: Beispiel: Ungenügendes Maskieren von Parametern in SQL-Anweisungen www.../db.php?id=42 <?php mysql_query( SELECT... WHERE id=. $_GET[ id ]);?> 7
Cross Site Scripting (XSS) Unterbringen von HTML/JavaScript auf vertrauenswürdigen Webseiten Ziele: Benutzerdaten - Identitätsdiebstahl Falsche Inhalte, Verunstaltung Schwachstelle: Beispiel: Ungenügendes Maskieren von Parametern in HTML-Ausgaben www.../forum.php?text=hallo <?php echo $_GET[ text ];?> 8
Identitätsdiebstahl mit XSS 2 3 Login Cookie = Auth Artikel: <script>... XSS 5 1 4 Artikel: <script>... Cookie = Auth Cookie = Auth 9
Cross Site Request Forgery (CSRF) Legitimen Nutzern präparierte URLs unterschieben Transaktionen in Webanwendungen Ziele: Verschleierte Aktionen... Straftaten Schwachstelle: Zustandsloses HTTP, XSS, Schadsoftware Mensch: Neugier, Arglosigkeit Beispiele: webmail.../do?action=delete&id=42 ebay.com/bid?auction=23&amount=1000000 10
Produktionsserver: Abwehr (1): Konfiguration, Programmierung HTTP TRACE, Debug ausschalten Fehlerausgaben sehr sparsam Zugriff auf.bak,.old... unterbinden Misstraue allen Benutzereingaben/-daten: GET/POST, Cookies, URL-Parameter, Upload... sauberes Quoting und Sanitizing: Whitelists mit gültigen Werten, Syntaxkontrolle etablierte Funktionen nutzen, z.b. HTML-Ausgabe mit htmlspecialchars() externe Programme via Shell: escapeshellarg() 11
SQL Abwehr (2): Konfiguration, Programmierung mysql_real_escape_string() Prepared Statements Stored Procedures Beachte: String-Vergleiche sind normalerweise case-insensitive Geheimnisse (DB-Passwort) so sicher wie möglich ablegen 12
Abwehr (3): CSRF Nutzer: What can I do to protect myself as a user? Nothing. The fact is as long as you visit websites and don't have control of the inner architecture of these applications you can't do a thing. The truth hurts doesn't it? cgisecurity.com Vorsicht vor URLs aus unsichere Quelle: E-Mails, Kurz-URLs HTML-Mails: Laden von Bildern... ausschalten Kritische Aktionen nicht parallel, abmelden, NoScript Web-Anwendungen: Leichter Schutz: nur POST, kein GET Challenge Token pro Request zusätzlich zur Session nicht nur Cookie 13
Session IDs aktualisieren (gegen Session Fixation) HTML in (reflektierten) Eingaben unterbinden (XSS) aktuelle Tools/Frameworks einsetzen mod_security Application Level Firewall Informieren und handeln: Security News, neue Versionen installieren www.owasp.org Aufwändig und teuer: Abwehr (4): Programmierung, Administration Ständige Pflege, Code Review, Penetration Tests Qualifiziertes Personal, Zeit 14
Tools und Links telnet / nc wget / curl Browser (mit Addons zur Manipulation des Datenverkehrs) Attack-/Audit-Tools, z.b. w3af Proxy, z.b. WebScarab, Proxy von w3af http://www.phpfreaks.com/tutorial/php-security Gruyere - Web Application Exploits and Defenses http://google-gruyere.appspot.com 15