Hochschule Darmstadt Fachbereich Informatik. Entwicklung webbasierter Anwendungen

Ähnliche Dokumente
PHP-5-Zertifizierung. Block 12 Security.

Hochschule Darmstadt Fachbereich Informatik

Schwachstellenanalyse 2012

Sicherheit in Webanwendungen CrossSite, Session und SQL

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Schwachstellenanalyse 2013

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Sicherheit von Webapplikationen Sichere Web-Anwendungen

Session Management und Cookies

Netzwerksicherheit Übung 9 Websicherheit

XSS for fun and profit

Einführung in Web-Security

Aktuelle Sicherheitsprobleme im Internet

Schwachstellen in Web- Applikationen: Was steckt dahinter und wie nutzt man sie aus?

Web 2.0 (In) Security PHPUG Würzburg Björn Schotte

Aktuelle Bedrohungen im Internet

Zusammenfassung Web-Security-Check ZIELSYSTEM

V10 I, Teil 2: Web Application Security

verstehen lernen, wie der Angreifer denkt diese Methoden selbst anwenden Allerdings: Mitdenken, nicht nur blindes ausprobieren Außerdem:

Hochschule Darmstadt Fachbereich Informatik

itsc Admin-Tag OWASP Top 10 Tobias Ellenberger COO & Co-Partner OneConsult GmbH 2013 OneConsult GmbH

Hacker-Methoden in der IT- Sicherheitsausbildung. Dr. Martin Mink

Web Hacking - Angriffe und Abwehr

Advanced Web Hacking. Matthias Luft Security Research

MySQL, Java und einiges mehr

Secure Coding & Live Hacking von Webapplikationen. Conect Informunity

SZENARIO. ausgeführt Command Injection: Einschleusen (Injizieren) bösartiger Befehle zur Kompromittierung der Funktionsschicht

PHP-(Un-)Sicherheit. Hacker-Seminar Herbstsemester 2006 Laboratory for Dependable Distributed Systems Universität Mannheim.

Typo3 - Schutz und Sicherheit

Hacker-Tool Browser von der Webanwendung zu den Kronjuwelen

Welche Gefahren gehen vom Firmenauftritt im Internet aus?

Absicherung von Web-Anwendungen in der Praxis Highlights aus den OWASP TOP 10

OWASP Top 10. im Kontext von Magento. Mittwoch, 21. November 12

Grundlagen der Informatik 2

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

TimeMachine. Time CGI. Version 1.5. Stand Dokument: time.odt. Berger EDV Service Tulbeckstr München

Web-Sicherheit: Kein fauler Zauber?! Kai Jendrian. <Seminartitel> <Seminartitel>

Sicherheit Web basierter Anwendungen

Ruby on Rails Sicherheit. Heiko Webers

Kombinierte Attacke auf Mobile Geräte

Hacking. InfoPoint Jörg Wüthrich

Money for Nothing... and Bits4free

Grundlagen der Informatik 2

Angreifbarkeit von Webapplikationen

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: install.odt. Berger EDV Service Tulbeckstr.

Abbildung 6-8: Abfolge beim doppelten Abschicken von Formularen

Verteidigung gegen SQL Injection Attacks

Security-Webinar. September Dr. Christopher Kunz, filoo GmbH

Perl-Praxis. CGI-Skripte. Madis Rumming, Jan Krüger.

Sessions mit PHP. Annabell Langs Sessions in PHP - Annabell Langs 1

HACK THAT WEBSITE! WEB SECURITY IM SELBSTVERSUCH

ZSDGMDZFGW... Zehn Sicherheitsprobleme, die gerne mit dem ZendFramework gebaut werden. Ben Fuhrmannek #phpug-köln

Secure Webcoding for Beginners

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

PHP-Security. Aleksander Paravac. Aleksander Paravac (GNU/Linux User Group Bamberg/Forchheim) 1 / 27

Schönes neues Internet

HACK THAT WEBSITE! WEB SECURITY IM SELBSTVERSUCH

Datenbanken und Netzanbindung

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

Inhaltsverzeichnis. Einleitung

Konzept eines Datenbankprototypen Folie 1 Daniel Gander / Gerhard Schrotter

Wie richte ich mein Webhosting auf dem Admin Panel ein?

Paper: Automated Discovery of Parameter Pollution Vulnerabilities in Web Applications

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern

PHP Sicherheit für Administratoren

4. Februar 2008 Klausur EWA

SQL-Injection. Seite 1 / 16

SQL-Injection in the news Stand: :00

Java Security Mythen

PHP und MySQL. Sicherheit und Session-Handling mit PHP. Zellescher Weg 12 Willers-Bau A109 Tel

TYPO3 Security. Jochen Weiland TYPO3camp Berlin 2016

losgeht s

18 Softwaresicherheit

Carsten Eilers / Sicherheit von Anfang an

«/IE Cache & Cookies» Umfrage startet nicht?

HACK YOUR OWN WEBSITE! WEB SECURITY IM SELBSTVERSUCH. Stefan

Cross Site Scripting (XSS)

Praktikum im Grundstudium

Hackerpraktikum SS 202

Secure Programming vs. Secure Development

HOB RD VPN Web Server Gate

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: installcentos.odt

Datenbank-basierte Webserver

IT-Sicherheit Angriffsziele und -methoden Teil 2

Übergreifende Session auf bahn.de Verwendung von Session-Cookies

BS-Anzeigen 3. Handbuch für das Zusatzmodul modazs Import von Anzeigen aus der Anzeigenschleuder

FileBox Solution. Compass Security AG. Cyber Defense AG Werkstrasse 20 Postfach 2038 CH-8645 Jona

Open Catalog Interface (OCI) Anbindung an VirtueMart

HOLIDAY-FERIENWOHNUNGEN.COM Anleitung zur Aktivierung von Java Script und Informationen über Cookies

i-net HelpDesk Erste Schritte

Web Space Anbieter im Internet:

Die Datenbank und der Strukturentwurf wurden vorher mit phpmyadmin erzeugt.

PHP Schulung Beginner. Newthinking Store GmbH Manuel Blechschmidt

secunet Security Networks AG Sicherheit in Web-Portalen Hamburg, Dipl. Inform. Dirk Reimers

easylearn Webservice lsessionservice Interface für Single Sign On (SSO)

NTCS Synchronisation mit Exchange

Wir benötigen: PHP >=5.x mit den Erweiterungen curl, dom, gd, hash, iconv, mycrypt, pcre, pdo, pdo_mysql und simplexml 1/2h Zeit

Audit von Authentifizierungsverfahren

Web Applications Vulnerabilities

Transkript:

Hochschule Darmstadt Fachbereich Informatik Entwicklung webbasierter Anwendungen 1 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Hochschule Darmstadt Fachbereich Informatik 5. Sicherheit 2 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Vorbemerkung Dieser Abschnitt bietet lediglich einen Einstieg in das Thema es werden ständig neue Sicherheitslücken und Angriffsformen entdeckt es gibt große Unterschiede zwischen den Betriebssystemen, Browsern, Webservern etc. der Sicherheitsbedarf hängt von der Anwendung ab Für den Betrieb einer professionellen Webanwendung ist Sicherheit ein Dauerthema wenn Sie das nicht leisten können, mieten Sie sich einen Server mit einem entsprechenden Update-Service für Betriebssystem, Apache, PHP, DB etc. dann müssen Sie "nur" noch kontinuierlich Sicherheitslücken in Ihrer Anwendung beseitigen 3 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Überblick Client Internet Server Webbrowser Webserver CGI-Programm HTML Seite (Eingabe- Formular) 1. Eingabedaten übermitteln Daten 2. CGI-Programm starten HTML Seite (Ausgabe) 4. Eingabedaten übermitteln HTML Seite 3. erzeugte HTML-Seite DB 4 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Hochschule Darmstadt Fachbereich Informatik 5.1. Formulareingaben 5 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Daten aus Formularen Beispiel-Formular: 6 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Daten aus Formularen Verarbeitung des Formulars im Backend: Was könnte hier das Problem sein? 7 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Daten aus Formularen Traue NIE Input JEGLICHER FORM, der von Nutzern stammt in $_GET[ startpage ] erwarten Sie die folgenden Inhalte: Später inkludieren Sie im Backend basierend darauf eine PHP Datei: Vollkommen unsicher! Angreifer kann das Formular nach Belieben verändern. 8 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Daten aus Formularen Per Web Inspector 9 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Daten aus Formularen Per URL Parameter (nur bei GET): https://your.page/save.php?mail=david.mueller%40incloud.de &startpage=../../../whatever Per HTTP Client (bspw. Postman -> Chrome Extension): Per curl (oder ähnlichem Tool) direkt von der Commandline. 10 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Daten aus Formularen Daher: Nehmen Sie nur die URL Parameter an, die Sie auch wirklich erwarten und validieren Sie diese auf das, was Sie erwarten.. foreach über $_GET / $_POST / $_REQUEST ist in 99,9% aller Fälle ein Antipattern! 11 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Daten aus Formularen Besser: Nehmen Sie nur die URL Parameter an, die Sie auch wirklich erwarten und validieren Sie diese auf das, was Sie erwarten.. 12 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Daten aus Formularen Verlassen Sie sich nie auf clientseitige Validierung. Garantiert Ihnen weder, dass $_GET[ mail ] eine gültige E-Mail ist $_GET[ mail ] überhaupt gesetzt ist 13 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Daten aus Formularen Validierungsregeln: Verwenden Sie den Validator des Frameworks, welches Sie benutzen. Wo immer möglich, bei Validierung auf erprobte Libraries zurückgreifen. Falls nicht möglich: filter_var Funktionsfamilie in PHP: http://php.net/manual/de/function.filter-var.php htmlentities / htmlspecialchars gegen Cross Site Scripting (kommt später noch) Reguläre Ausdrücke für erwartete Formate: http://php.net/manual/de/function.preg-match.php Prepared Statements und entsprechendes Escaping gegen SQL Injection (kommt später noch) grundsätzliches Misstrauen! 14 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Hochschule Darmstadt Fachbereich Informatik 5.2. Infrastruktur 15 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Angriffe auf die Infrastruktur Es gibt viele Installationen mit Standardkonfiguration (MySQL + PHP + Apache...) Webserver geben großzügig Auskunft über die Versionen Default-Passwörter sind bekannt installierte Skripte sind teilweise bekannt Quellcode ist verfügbar Sicherheitslücken können gezielt gesucht und erprobt werden Angriffsziele (Auswahl): Auslesen von Daten Transaktionen unter fremden Namen Lahmlegen eines Internetauftritts 16 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Angriffe auf die Infrastruktur Daher: Halten Sie Ihren Webserver und die verwendete Software (PHP, MySQL ) immer up to date! Verfolgen Sie Changelogs und einschlägige Blogs (bspw. http://seclists.org/) Nutzen Sie Vulnerability Scanner, bpsw. - https://security.sensiolabs.org/ (erkennt die Verwendung unsicherer PHP Packages) - https://github.com/psecio/iniscan (scannt Ihre php.ini Datei nach unsicheren Konfigurationen) Verraten Sie nicht, welche Software zum Einsatz kommt Apache2: In /etc/apache2/apache2.conf ServerTokens ProductOnly ServerSignature Off PHP: In /etc/apache2/php.ini expose_php Off 17 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Angriffe auf die Infrastruktur Dem Nutzer keine Fehlermeldungen zeigen! Fehlermeldungen sind wichtig, auch im Produktivbetrieb - aber dann bitte in einer Log-Datei und nicht auf dem Bildschirm Fehlermeldungen aus Bibliotheken nicht dem Benutzer zeigen - versteht er meist ohnehin nicht - enthalten evtl. wertvolle Hinweise für Hacker - Entwickler muss dem Benutzer anwendungsbezogene Meldungen zeigen - Entwickler muss systembezogene Meldungen in Log-Datei schreiben ini_set("error_reporting", E_ALL); // alles melden ini_set("display_errors", 0); // aber nicht ausgeben ini_set("log_errors", 1); // sondern loggen ini_set("error_log", "./mylog.txt"); // in diese Datei Vorsicht: mysqli::error() zeigt u.u. DB-Passwort in Fehlermeldung 18 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Hochschule Darmstadt Fachbereich Informatik 5.3. Musterangriffe: Code Injection 19 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Code-Injektion Man stelle sich mal folgendes vor: Kommentarfunktion in einem Blog mit Account (Email + Passwort): Der Kommentar wird im Backend in der Datenbank gespeichert. 20 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Code-Injektion Der Angreifer schreibt nun folgenden Kommentar: Was würde nun passieren, wenn der nächste Blogleser einen Kommentar schreibt? 21 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Code-Injektion Daher: Validieren Sie stets den Nutzer-Input. Nehmen Sie kein HTML an, wo Sie kein HTML erwarten. Machen Sie Gebrauch von den Validierungs-Funktionen Ihres Frameworks. htmlentities und htmlspecialchars stehen Ihnen ebenfalls zur Verfügung. 22 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Hochschule Darmstadt Fachbereich Informatik 5.4. Musterangriffe: Cross Site Scripting (XSS) 23 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Cross Site Scripting Als Komfort-Feature hat der Entwickler dieser Webseite eine Vorbefüllung der Formularfelder eingebaut. Dies wird gerne gemacht, um den Nutzer zu ersparen, alle Daten erneut einzugeben, wenn das Formular nicht korrekt ausgefüllt sollte. Angriffsmöglichkeiten? 24 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Cross Site Scripting Der Angreifer schickt dem Opfer einen präparierten Link, der HTML beinhaltet und aus dem Formularfeld ausbricht. Auch Javascript möglich. Eine ähnliche Attacke wie unter Code Injection gezeigt ist möglich! 25 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Cross Site Scripting Daher: Validieren Sie stets den Nutzer-Input. Nehmen Sie kein HTML an, wo Sie kein HTML erwarten. Machen Sie Gebrauch von den Validierungs-Funktionen Ihres Frameworks. htmlentities und htmlspecialchars stehen Ihnen ebenfalls zur Verfügung. 26 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Hochschule Darmstadt Fachbereich Informatik 5.5. Musterangriffe: Command Injection 27 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Command Injection Szenario Sie bieten Nutzern an, mittels Ihres Webdiensts zu prüfen, ob andere Webseite erreichbar sind. Dazu führen Sie einen ping aus. Angriffsmöglichkeiten? 28 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Command Injection Szenario Angreifer übermittelt in $_POST[ url ] nun h-da.de; rm -rf /* Der ausgeführte Befehl: ping h-da.de; rm -rf /* 29 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Command Injection Daher: Versuchen Sie, wo möglich, auf das Durchreichen von User-Input auf Shell-Ebene komplett zu verzichten. Validieren Sie den Nutzer-Input, bevor Sie ihn weiterreichen. Im gezeigten Beispiel könnten Sie validieren, dass es sich um einen gültigen Domainnamen handelt. Verwenden Sie entsprechendes Escaping auf Shell-Ebene: http://php.net/manual/de/function.escapeshellcmd.php Beschränken Sie die Rechte und das Verzeichnis des Nutzers, mit dem der Webserver läuft (Üblicherweise www-data). So wäre im Beispiel dem Nutzer Apache der Befehl rm -rf /* garnicht erlaubt. Beschränken Sie die Executables, die ein Nutzer auf Shell-Ebene ausführen darf. 30 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Hochschule Darmstadt Fachbereich Informatik 5.6. Musterangriffe: SQL Injection 31 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

SQL Injection Szenario Sie wollen beim Login eines Nutzers prüfen, ob sich dieser mit den richtigen Daten einloggt: Angriffsmöglichkeiten? 32 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

SQL Injection Szenario Angreifer übermittelt in beiden Feldern nun ' OR '1=1 Der ausgeführte Befehl sieht dann wie folgt aus: SELECT COUNT(*) AS c FROM users WHERE username='' OR '1=1' AND password='' OR '1=1' Das ist immer wahr, somit kann sich der Nutzer auch ohne gültige Daten einloggen. 33 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

SQL Injection Andere Angriffsmöglichkeiten Löschen der Datenbank durch entsprechende DROP TABLE Statements Auslesen von Account-Daten anderer Nutzer 34 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

SQL Injection Daher: Beste Lösung: Verwenden Sie Prepared Statements. Falls Sie Prepared Statements nicht verwenden können: Validieren und Escapen Sie den Datenbankinput vor der Ausführung der Query: http://php.net/manual/de/mysqli.real-escape-string.php htmlspecialchars / htmlentities helfen NICHT für die Verhinderung von SQL Injection, genau wie mysqli real escape string nicht bei der Verhinderung von Cross Site Scripting hilft! 35 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Hochschule Darmstadt Fachbereich Informatik 5.7. Musterangriffe: Cross Site Request Forgeries (CSRF) 36 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

CSRF Man stelle sich vor, gmail hätte eine CSRF Verwundbarkeit Sie als Angreifer setzen eine Webseite mit lustigen Katzenbildern auf: http://www.funniest-cats-in-town.com Sie senden Ihrem Opfer diese Webseite und binden versteckt ein Bild auf dieser Webseite ein: Der HTTP Request wird nun ausgeführt und dem Chef im Hintergrund die Mail gesendet, ohne dass es das Opfer mitbekommt. 37 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

CSRF Keine wirksamen Gegenmaßnahmen Nur POST-Request annehmen. Auch POST-Requests können problemlos von einer Webseite im Hintergrund abgesetzt werden. Nur den Referer Header prüfen Viele Proxy-Installationen in Firmen filtern den Referer Header heraus, sodass auch eine legitime Verwendung der Webseite nicht mehr möglich wäre Redirects der Zielseite könnten ausgenutzt werden 38 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

CSRF Daher... CSRF-Tokens verwenden. Bei Erstellung des Formulars wird ein geheimer Token in das Formular integriert, den das Backend generiert hat. Das Backend erwartet auch genau diesen String wieder beim Empfangen des Formulars. Der CSRF Token kann durch den Angreifer nicht mitgeschickt werden. Viele Frameworks bieten Optionen an, dieses Token automatisch zu integrieren. Die Webseite darf über keine XSS-Lücken verfügen! Sonst kann der Angreifer den Token auslesen. Zusammenfassung der Gegenmaßnahmen: https://www.owasp.org/index.php/cross-site_request_forgery_(csrf)_pr evention_cheat_sheet 39 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Hochschule Darmstadt Fachbereich Informatik 5.8. Musterangriffe: Session Highjacking 40 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Session Highjacking Ein eingeloggter Nutzer wird durch seine Session ID identifiziert. Diese befindet sich üblicherweise in einem Session-Cookie und wird bei jedem Request mitgesendet. Angriffsmöglichkeiten? 41 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Session Highjacking Angriffs-Szenario Durch eine Cross Site Scripting Lücke könnte ein Angreifer Javascript in die Webseite einschleusen. Mit diesem Javascript liest der Angreifer dann per document.cookie den Session Cookie des Opfers aus und übermittelt diesen an sich. Der Angreifer setzt sich nun selbst diesen Cookie und besucht die Webseite. Anschließend ist der Angreifer als sein Opfer eingeloggt. 42 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Session Highjacking Daher... Webseite muss absolut frei von XSS-Lücken sein. Die Session-ID des Nutzers sollte bei jedem Seitenaufruf neu generiert werden. Die alten Session-Informationen werden übernommen: http://php.net/manual/de/function.session-regenerate-id.php Session Cookies sollten nicht per Javascript ausgelesen werden dürfen (php.ini Einstellung: https://d-mueller.de/blog/angriffe-auf-webanwendungen-teil-2-session-highja cking-und-session-fixation/) Maximale Session-Laufzeit definieren. 43 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Hochschule Darmstadt Fachbereich Informatik 5.9. Absicherung der Kommunikation 44 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

HTTP und HTTPS HTTP ist unverschlüsselt kann mit Sniffer (z.b. Wireshark) abgehört werden Passwort und persönliche Daten im Klartext Gerade in Internet Caffes und an Hotspots sehr leicht möglich! HTTPS ist verschlüsselt mit TLS erfordert ein Zertifikat Mittlerweile sind auch valide Zertifikate kostenlos dank https://letsencrypt.org/ Konsequenz für Entwickler: jede Website sollte HTTPS verwenden Konsequenz für Anwender: nicht dasselbe Passwort für verschlüsselte und unverschlüsselte Verbindungen verwenden 45 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Hochschule Darmstadt Fachbereich Informatik 5.10. Lesetipps 46 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016

Lesetipps https://www.owasp.org/ - DIE Ressource für sichere Webentwicklung. Cheatsheets, Checklisten, Hintergrundwissen, Top 10 Sicherheitslücken, Best Practices http://seclists.org - Aktuelle Sicherheitslücken (full disclosure, Zero Days ) https://www.owasp.org/index.php/category:owasp_webgoat_proje ct - WebGoat: Hacker spielen und in verschiedenen Levels verschiedene Angriffe ausprobieren https://d-mueller.de/blog/angriffe-auf-webanwendungen-teil-1-xss-bei spielangriff/ - Vierteilige Serie mit Grundlagenwissen zur Websecurity https://d-mueller.de/hackit/level1.htm - Javascript Hackit incl. Bestenliste ;-). 47 Entwicklung webbasierter Anwendungen, SS2016, Stefan Zander / Maximilian Madl/ Thomas Sauer 14.06.2016