Einführung in Web-Security



Ähnliche Dokumente
Sicherheit in Webanwendungen CrossSite, Session und SQL

Session Management und Cookies

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

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

SSO-Schnittstelle. Inhalt: Beschreibung der Single Sign-On (SSO) Schnittstelle. NetSlave GmbH Simon-Dach-Straße 12 D Berlin

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

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

Anleitung OpenCms 8 Webformular Auswertung

Internationales Altkatholisches Laienforum

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

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

Was meinen die Leute eigentlich mit: Grexit?

Einrichtung des WS_FTP95 LE

ACCOUNTINFO 1.01 VERWENDEN DER ACCOUNTINFO-SCHNITTSTELLE ABFARGE VON ACCOUNT-INFORMATIONEN IN ECHTZEIT 02. MÄRZ 2010

Inhaltsverzeichnis. Open-Xchange Authentication & Sessionhandling

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

Datenbanken für Online Untersuchungen

Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden.

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

3. Neuen Newsbeitrag erstellen Klicken Sie auf das Datensatzsymbol mit dem +, damit Sie einen neuen Newsbeitrag erstellen können.

PHP-5-Zertifizierung. Block 12 Security.

Übungen zur Softwaretechnik

KURZANLEITUNG CLOUD OBJECT STORAGE

SAMMEL DEINE IDENTITÄTEN::: NINA FRANK :: :: WINTERSEMESTER 08 09

Datensicherheit. Vorlesung 7: Sommersemester 2015 h_da. Heiko Weber, Lehrbeauftragter

Zugriff auf OWA Auf OWA kann über folgende URLs zugegriffen werden:

Aktuelle Angriffstechniken. Steffen Tröscher cirosec GmbH, Heilbronn

ÖVSV Mitglieder-Datenbank. Benutzerhandbuch Version 1.2.1

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Anlegen eines DLRG Accounts

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Verwendung der PayJoe -API zum externen Upload von Belegen und Zahlungen

Inhalt Einführung Was ist SAML Wozu braucht man SAML Wo wird SAML verwendet kleine Demo SAML. Security Assertion Markup Language.

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Sicherheit von Webapplikationen Sichere Web-Anwendungen

Infinigate (Schweiz) AG. Secure Guest Access. - Handout -

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Name des Servers auf dem die Produktiv-IL-Datenbank läuft. Name des Servers auf dem die Test-IL- Datenbank läuft

Inhalt: Ihre persönliche Sedcard... 1 Login... 1 Passwort vergessen... 2 Profildaten bearbeiten... 3

PROSTEP AG: Anmelden für eine mehrtägige Schulung für Opel-Zulieferer

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Fotostammtisch-Schaumburg

Stecken Sie Ihren USB Stick oder Ihre externe USB Festplatte in den USB Steckplatz des Sinus 154 DSL SE.

Wie erhalte ich meine Beitragsrechnung 2014? EINE SCHRITT-FÜR-SCHRITT ANLEITUNG

BusinessMail X.400 Webinterface Gruppenadministrator V2.6

Einrichtung eines neuen -Kontos für s unter in Ihrem programm

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

How to install freesshd

Ihren Kundendienst effektiver machen

Übersicht... 2 Dateiupload... 3 Administratorfunktionen... 4

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

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte

Was ich als Bürgermeister für Lübbecke tun möchte

Websites mit Dreamweaver MX und SSH ins Internet bringen

SAN-Zertifikate anfordern und erstellen

Updatehinweise für die Version forma 5.5.5

Benutzerverwaltung mit Zugriffsrechteverwaltung (optional)

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

my.green.ch... 2 Domänenübersicht... 4

Schritte zum Systempartner Stufe Großhandel

Daten am USB Stick mit TrueCrypt schützen

Mail-Account Unimail mit der Einstellungen für Outlook Express 5.0

Outlook Exp. Konten einrichten, so geht es!

Memeo Instant Backup Kurzleitfaden. Schritt 1: Richten Sie Ihr kostenloses Memeo-Konto ein

SQL-Injection. Seite 1 / 16

Datensicherung EBV für Mehrplatz Installationen

"Ich habe als Vereinsverantwortlicher eine erhalten - was mache ich, um Torwurf.de für meinen Verein einzusetzen?"

SEMINAR Modifikation für die Nutzung des Community Builders

Flash, Network und Facebook. Steven Mohr

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Wie Sie sich einen eigenen Blog einrichten können

Scharl 2010 Dokument ist Urheberrechtlich geschützt. Port Forwarding via PuTTY und SSH. Was ist Port forwarding?

Inhaltsverzeichnis. Vorwort Einleitung... 15

DB2 Kurzeinführung (Windows)

WordPress. Dokumentation

FastViewer Remote Edition 2.X

Positionierungsspiel. Statements und Fragen zu Werbung im Social Web

Erstellen einer digitalen Signatur für Adobe-Formulare

Reporting Services und SharePoint 2010 Teil 1

Modul 2.2: Zugang zu Ihren Teilnehmer-Ordnern via ftp (zum Dateientransfer):

Schwachstellenanalyse 2012

Kurzanleitung MAN E-Learning (WBT)

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

Die Bundes-Zentrale für politische Bildung stellt sich vor

Aufruf der Buchungssystems über die Homepage des TC-Bamberg


Internet Explorer Version 6

Online-Dateienablage und Datenaustauschdienst Box.net Stand: September 2011

Informatik 12 Datenbanken SQL-Einführung

Flowy Apps erzählt eine kurze Geschichte über REDS. Remotely Encrypted Distributed Storage

Erstellung botoptimierter Partnerlinks

ecaros2 - Accountmanager

Lokale Installation von DotNetNuke 4 ohne IIS

PHP Kurs Online Kurs Analysten Programmierer Web PHP

OP-LOG

Stand: Adressnummern ändern Modulbeschreibung

Transkript:

Einführung in Web-Security Alexander»alech«Klink Gulaschprogrammiernacht 2013

Agenda Cross-Site-Scripting (XSS) Authentifizierung und Sessions Cross-Site-Request-Forgery ([XC]SRF) SQL-Injections Autorisierungsprobleme Code-/Command-Injections aus der Sicht von Angreifer, Entwickler und User

Cross-Site-Scripting (XSS) <html> [ ] <div class= attacker_controlled > ungefilterte Nutzereingaben </div> [ ] reflexiv vs. permanent (in der URL vs. in der Datenbank)

Cross-Site-Scripting (XSS) Angreifersicht <script>alert("xss")</script> als Minimalbeispiel Session-Cookie auslesen und weiterleiten beliebige Aktionen in der Anwendung durchführen Informationen/Dateien exfiltrieren (ggf. von interner Anwendung ins Internet)

Cross-Site-Scripting (XSS) Entwicklersicht Eingabevalidierung/Ausgabeencodierung aber: kontextabhängig (innerhalb eines Tags und eines Attributs unterschiedlich) Gute Frameworks/Templatingsysteme verwenden ggf. Content-Security-Policy

Cross-Site-Scripting (XSS) Entwicklersicht Eingabevalidierung/Ausgabeencodierung aber: kontextabhängig (innerhalb eines Tags und eines Attributs unterschiedlich) Gute Frameworks/Templatingsysteme verwenden ggf. Content-Security-Policy

Cross-Site-Scripting (XSS) Nutzersicht Javascript abschalten (?) NoScript o.ä. Browsertrennung Medienkompetenz Backups von in der Cloud gespeicherten Daten

Sessions und Authentifizierung HTTP hat keinen State daher Session-IDs mitübertragen meistens als Session-Cookie Authentifizierung mit Username & Passwort wie sinnvoll speichern? salted hashes, Runden,...

Sessions und Authentifizierung Angreifersicht Session-Cookie erlangen (z.b. durch XSS) heißt komplette (und einfache!) Kontrolle über die Anwendung im Nutzerkontext Session Fixation Passwörter raten Hashes bruteforcen Angriffe auf Passwortspeicherung im Browser Passwort-Wiederbenutzung

Sessions und Authentifizierung Entwicklersicht Session-Cookies wirklich zufällig? secure und httponly-flags Muss ich wirklich eigene Accounts haben? Passwortspeicherung überdenken Verschlüsselung Hashing

Sessions und Authentifizierung Nutzersicht Unterschiedliche Passwörter für unterschiedliche Dienste Aber: wo speichern?

Cross-Site-Request-Forgery (CSRF) Aktionen in Webapplikationen sind erstmal nur GET/POST-Requests Authentisierung mittels Session-Cookie Dieser wird immer übermittelt

Cross-Site-Request-Forgery (CSRF) Angreifersicht Angemeldeten Nutzer einen Request unterschieben z.b. <img src= http://www.webapp.example.com/delete/all > POST via IFrame und JS-Submit ggf. müssen IDs erraten/durchprobiert werden Social Engineering-Aspekt

Cross-Site-Request-Forgery (CSRF) Entwicklersicht Zufällige Tokens in Formulare einbinden und auch überprüfen! <input type= hidden name= csrf_token value= deafbeefdeadbeefdeadbeef /> auch hier hilft ein geeignetes Framework

Cross-Site-Request-Forgery (CSRF) Nutzersicht Browsertrennung z.b. Onlinebanking vs. Random links from the interwebs

SQL-Injections Datenbank als Storage-Backend für Webapps oft ein technischer User mit Vollzugriff auf alle Applikationsdaten ist als Vektor mittlerweile recht gut erkannt und wird gefühlt seltener

SQL-Injections Angreifersicht $sql_statement = SELECT * FROM privmsgs WHERE subject LIKE '% + $req['query'] + %' AND user_id = ' + $session['user_id'] + ' ; /searchmsgs?query=' OR 1=1 - Query: SELECT * FROM privmsgs WHERE subject LIKE '%' OR 1=1 -- ggf. Statement Stacking, UNIONs, blind,

SQL-Injections Entwicklersicht Bind parameters: $sql_statement = SELECT * FROM privmsgs WHERE subject LIKE '%?%' AND user_id = '?' $result = execute_bind_params($req['query'], $session['user_id']) alternativ auch gerne Object Relational Mapper (dann muss man auch kein SQL können ;-))

SQL-Injections Entwicklersicht Bind parameters: $sql_statement = SELECT * FROM privmsgs WHERE subject LIKE '%?%' AND user_id = '?' $result = execute_bind_params($req['query'], $session['user_id']) alternativ auch gerne Object Relational Mapper (dann muss man auch kein SQL können ;-))

SQL-Injections Nutzersicht ähmja.

Autorisierungsprobleme Authentifizierung und Autorisierung sind nicht dasselbe! Nur weil ich eingeloggt bin, muss ich nicht alles tun dürfen. Dämlicher aber typischer Fehler: fortlaufende IDs, kein Check ob ID zu User gehört: /invoices?customer_id=2342

Autorisierungsprobleme Angreifersicht Numerische IDs immer mal probeweise modifizieren Wenn Zugriff auf höher priviligierten Account vorhanden: Requests mitschneiden und mit niedrig priviligierten Account ausprobieren

Autorisierungsprobleme Entwicklersicht Konsequente Autorisierungsprüfung: gehört das Objekt wirklich dem User, darf der das? Frameworks nutzen Quick-and-dirty: ausreichend lange zufällige IDs

Autorisierungsprobleme Nutzersicht ähmja.

Code-/Command-Injections Nice to have, aber an die Daten kommt man ja auch anders (s.o.) Schön für die Botnetzbetreiber

Code-/Command-Injections Angreifersicht eval require Foo::Bar::$request['module']; /foo?module=baz; `touch /tmp/pwned` $output = `git log $request['reflike']` /gitlog?reflike=head; touch /tmp/pwned

Code-Injections Entwicklersicht Inputvalidierung. Inputvalidierung. Inputvalidierung. Vorsicht mit eval und ähnlichen Konstrukten. Bei Aufrufen von externen Programmen mal auf die Shell verzichten Achtung: auch beliebige Parameter können Probleme machen (ssh -oproxycommand)

Code-Injections Nutzersicht ähmja.

und sonst so? Logische Fehler File Disclosure uralte Serverversionen XML-Parsing (XML Entity Expansion, etc.) eigene/statische Krypto Debugfunktionen etc. pp. Selber ausprobieren: Altaro Mutual (http://demo.testfire.net)

Q & A Fragen? Antworten? Diskussionsbedarf?