IT-Risk-Management V10 I, Teil : Web Application Security Tim Wambach, Universität Koblenz-Landau Koblenz, 9.7.015 Agenda Einleitung HTTP OWASP Security Testing Beispiele für WebApp-Verwundbarkeiten Command Injection SQL Injection Cross Site Scripting (XSS) Cross Site Request Forgery (CSRF) Sonstige Verwundbarkeiten Wichtige Links Beispielfragen / 7 1
HTTP - Hypertext Transfer Protocol HTTP einer der meistgenutzten Protokolle auf Applikationsebene Ständige Weiterentwicklung von IETF Historie 1996 HTTP/1.0 1999 HTTP/1.1 015 HTTP/ Wichtige Neuerungen in HTTP/ Performancegewinn durch weitere Kompressionen Zusammenfassen von Datengruppen über eine Anfrage (z.b. Skripte, Bilder, etc.) 3 / 7 OWASP OWASP is an open community dedicated to enabling organizations to conceive, develop, acquire, operate, and maintain applications that can be trusted. All of the OWASP tools, documents, forums, and chapters are free and open to anyone interested in improving application security. https://www.owasp.org/index.php/about_owasp 4 / 7
OWASP Top 10 (013) (1) Injection () Broken Authentication & Session Management (3) Cross-Site Scripting (4) Insecure Direct Object References (5) Security Misconfiguration (6) Sensitive Data Exposure (7) Missing Function Level Access Control (8) Cross-Site Request Forgery (9) Using Components with Known Vulnerabilites (10)Unvalidated Redirects and Forwards https://www.owasp.org/index.php/top_10_013-top_10 5 / 7 OWASP Secure Coding Principles Minimize attack surface area Principle of Defense in depth Principle of Least privilege Avoid security by obscurity [ ] Grose, Francis: The Antiquities of England and Wales (1783) https://www.owasp.org/index.php/secure_coding_principles 6 / 7 3
Security Testing Black Box Testing Manuelles Penetration Testing Automatisiertes Penetration Testing Automatisierter Code Review Manueller Code Review Grey Box Testing White Box Testing 7 / 7 Security Testing Scanner und Tools: http://sectools.org/web-scanners.html http://www.owasp.org/index.php/phoenix/tools 8 / 7 4
Security Testing Verwundbare Applikationen DVWA = Damn Vulnerable Web Application, http://www.dvwa.co.uk OWASP WebGoat Project https://www.owasp.org/index.php/category:owasp_ WebGoat_Project Gruyere Google Code University http://google-gruyere.appspot.com 9 / 7 Beispiele für WebApp-Verwundbarkeiten Command Injection SQL Injection Cross Site Scripting (XSS) Cross Site Request Forgery (CSRF) (verkürzt) Die folgenden Beispiele aus DVWA http://www.dvwa.co.uk/ 10 / 7 5
Injection Zur Erinnerung: Ablauf der Verarbeitung von Eingaben auf Webseiten; hier: uni-koblenz-landau.de Client Eingabe 1 SearchableText=test Server 3 Verarbeitung Ausgabe 11 / 7 Command Injection Eingabe 1 ip=google.de Verarbeitung 3 Ausgabe 1 / 7 6
Command Injection 0 echo %time% <?php if( isset( $_POST[ 'submit' ] ) ) { $target = $_REQUEST[ 'ip' ]; $cmd = shell_exec( 'ping '. $target ); }?> echo '<pre>'.$cmd.'</pre>'; Verarbeitung ping 0 echo %time% 13 / 7 SQL Injection id=1 1 3 14 / 7 7
SQL Injection %' or '0'='0 <?php if(isset($_get['submit'])){ $id = $_GET['id']; $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'"; user_id = '%' or '0'='0' $result = mysql_query($getid) or die('<pre>'. mysql_error(). '</pre>' ); [ ] Verarbeitung 15 / 7 Quelle: https://www.xkcd.com/37/ 16 / 7 8
Schutzmaßnahmen vor Injection Kein Vertrauen in Benutzereingaben stets Filterung ( escapen ) durchführen Beispiel in PHP: escapeshellarg() zum escapen von Shell Befehlen http://php.net/manual/en/function.escapeshellarg.php mysqli_real_escape_string() zum escapen von SQL Befehlen http://php.net/manual/en/mysqli.real-escape-string.php Verwendung von Prepared Statements http://php.net/manual/de/pdo.prepared-statements.php Auch dann keine absolute Sicherheit http://www.heise.de/newsticker/meldung/kritische-luecken-in-php-geschlossen-689960.html 17 / 7 Cross Site Scripting (XSS) 1 txtname=test mtxmessage=test 3 18 / 7 9
Cross Site Scripting (XSS) Eigener Inhalt, z.b.: Skript, <script>alert('test');</script> Weiterleitung, <IFRAME>, 19 / 7 Cross Site Scripting (XSS) Skript als Variable für verschiedene 1 Technologien Angreifer platziert bösartiges Skript Web-Applikation mit XSS-Schwachstelle Server 4 Datenweitergabe durch Skript (indirekt, variiert) Opfer 0 / 7 10
Quelle: http://www.heise.de/newsticker/meldung/l-f-xss-ist-fuer-den-bundestag-neuland-707813.html 1 / 7 Schutzmaßnahmen vor XSS Keine unreflektierte Wiedergabe von Benutzereingaben Eingaben bzgl. HTML Befehlszeichen prüfen Insb. < und > Inhaltsbezogene Eingabevalidierung Beispiel PHP: htmlspecialchars() wandelt spezielle Sonderzeichen um http://php.net/manual/de/function.htmlspecialchars.php htmlentities() wandelt alle geeigneten Zeichen um http://php.net/manual/de/function.htmlentities.php / 7 11
Cross Site Request Forgery (CSRF) 1 Skript als Variable für verschiedene Technologien Server des Angreifers Kann auch ein legitimer Server mit XSS-Verwundbarkeit sein Angreifer platziert bösartiges Skript Applikation mit CSRF Verwundbarkeit 3 Server Opfer Durch Skript generierter Aufruf unter Verwendung einer bestehenden (alten) Sitzung Generiert via z.b. JavaScript, IFRAME, HTML, etc. 3 / 7 Schutzmaßnahmen vor CSRF Sitzungstoken (Page Token) muss geteilt werden Teil1: Speicherung als Cookie Teil: Weitergabe durch GET/POST bei kritischen Transaktionen nur POST Timeout der Sitzung Abhängig vom Einsatzzweck zwischen 10 Minuten und Stunden im Regelfall Erneute Eingabe des Passwortes verlangen z.b. bei kritischen Transaktionen 4 / 7 1
Sonstige Verwundbarkeiten Neben Secure Coding ist auch das Patchmanagement wichtig Beispiele aus 014: Heartbleed (April 014) Schwerwiegende Verwundbarkeit in OpenSSL Shellshock (Sept. 014) Ausführung von Programmcode über den Webserver (CGI) Poodle (Okt. 014) Designfehler in SSL 3.0 Microsoft Schannel Schwachstelle (Nov. 014) Remote Code Execution über Netzwerk 5 / 7 Wichtige Links Infos https://www.owasp.org http://www.dvwa.co.uk http://sectools.org http://portswigger.net/burp https://cve.mitre.org Software http://camstudio.org http://www.metasploit.com 6 / 7 13
Beispielfragen 1. Nennen und erläutern Sie drei Bedrohungen aus den OWASP Top 10 013.. Was unterscheidet Blackbox von Whitebox Testing? 3. Was unterscheidet Command-Injection von SQL-Injection? 4. Welche Grundwerte* werden in welcher Weise bei einem SQL-Injection Angriff verletzt? 5. Auf welche Art müssen Eingaben behandelt werden um SQL-Injection zu verhindern? 6. Erläutern Sie, in welcher Weise Akteure bei einem XSS-Angriff betroffen sind. 7. Welche Grundwerte* werden in welcher Weise bei einem XSS-Angriff verletzt? 8. Auf welche Art müssen Eingaben behandelt werden um XSS-Angriffe zu verhindern? 9. Nennen Sie Schutzmaßnahmen bzgl. CSRF-Angriffen. *Grundwerte = {Vertraulichkeit, Verfügbarkeit, Integrität, Authentizität} 7 / 7 14