34

Daniel Franke Tim Benedict Jagla Matthias Thimm

Embed Size (px)

Citation preview

Page 1: Daniel Franke Tim Benedict Jagla Matthias Thimm
Page 2: Daniel Franke Tim Benedict Jagla Matthias Thimm

Cross-Site-Scripting und

Cross-Site-Request Schwachstellen in Web Applikationen

Daniel FrankeTim Benedict Jagla

Matthias Thimm

Page 3: Daniel Franke Tim Benedict Jagla Matthias Thimm

Cross-Site-Scripting

Page 4: Daniel Franke Tim Benedict Jagla Matthias Thimm

4

XSS Allgemein Cross Site Scripting• Einschleusen von

Schadcode um Browserausgabe zu manipulieren

Folge: Manipulation• HTML-Formulare• Cookies• URL‘s

Zugang• Clientseitige Sprachen• Z.B.• JavaScript• VBScript• Flash

Page 5: Daniel Franke Tim Benedict Jagla Matthias Thimm

XSS (non-persistent/reflected)

5

Page 6: Daniel Franke Tim Benedict Jagla Matthias Thimm

6

XSS (non-persistent/reflected)

Page 7: Daniel Franke Tim Benedict Jagla Matthias Thimm

7

XSS (non-persistent/reflected)

Page 8: Daniel Franke Tim Benedict Jagla Matthias Thimm

8

XSS (non-persistent/reflected)

Page 9: Daniel Franke Tim Benedict Jagla Matthias Thimm

9

Gefahren• CookieCatcher• Link obfuscating

• „Nice to know“• Auch in <img> tag kann eine HTTP GET Request

eingebettet werden

XSS (non-persistent/reflected)

Page 10: Daniel Franke Tim Benedict Jagla Matthias Thimm

XSS (persistent/stored)

10

Page 11: Daniel Franke Tim Benedict Jagla Matthias Thimm

11

XSS (persistent/stored)

Page 12: Daniel Franke Tim Benedict Jagla Matthias Thimm

12

XSS (persistent/stored)

Page 13: Daniel Franke Tim Benedict Jagla Matthias Thimm

13

XSS (persistent/stored)

Page 14: Daniel Franke Tim Benedict Jagla Matthias Thimm

14

XSS (persistent/stored)

Page 15: Daniel Franke Tim Benedict Jagla Matthias Thimm

15

XSS (persistent/stored)

MySpace Oktober 2005

• „Samy Worm“ by Samy Kamkar• OZ: “but most of all, Samy is my hero“

• In 20 Stunden über eine Million “Infizierungen”

Page 16: Daniel Franke Tim Benedict Jagla Matthias Thimm

XSS (DOM-based)

16

Page 17: Daniel Franke Tim Benedict Jagla Matthias Thimm

17

XSS (DOM-based)

Page 18: Daniel Franke Tim Benedict Jagla Matthias Thimm

18

XSS (DOM-based) Twitter Anfang 2011

(function(g){var a=location.href.split("#!")[1];

if(a){ g.location=g.HBR=a;}

})(window);

http://twitter.com/#!javascript:alert(document.domain);

Page 19: Daniel Franke Tim Benedict Jagla Matthias Thimm

Cross-SiteRequest-Forgery

Page 20: Daniel Franke Tim Benedict Jagla Matthias Thimm

20

CSRF

Was ist CSRF?• Unterschieben eines URL-Aufrufes• Automatisches authentifizieren & ausführen

Page 21: Daniel Franke Tim Benedict Jagla Matthias Thimm

21

CSRF

Vorgehen

Page 22: Daniel Franke Tim Benedict Jagla Matthias Thimm

22

CSRF

Gefahr• Jede Serverseitige Aktion ist

anfällig• Ja: JEDE !!!

Bsp: http://www.example.com/Logout

Page 23: Daniel Franke Tim Benedict Jagla Matthias Thimm

23

CSRF

Ursache• Zustandslosigkeit• Automatische Authentifikation

(Cookies)

Page 24: Daniel Franke Tim Benedict Jagla Matthias Thimm

24

CSRF

ING-Direct Sept. 2008• U.a. Überweisungen möglich• Automatische Authentifikation

(Cookies)

Google Mail 2007• Filteränderungen und

Umleitungen möglich

Page 25: Daniel Franke Tim Benedict Jagla Matthias Thimm

25

CSRF

Aspekte • Authentizität• Integrität• (Verfügbarkeit)• (Vertraulichkeit)

Page 26: Daniel Franke Tim Benedict Jagla Matthias Thimm

Schutzmaßnahmen

Page 27: Daniel Franke Tim Benedict Jagla Matthias Thimm

27

Allgemeine Schutzmaßnamen

Clientseitig• Session IDs• Erweiterungen wie NoScript• Cookies verbieten

Serverseitig• Tokens• HTML Entities verwenden• URL Encode verwenden

Page 28: Daniel Franke Tim Benedict Jagla Matthias Thimm

28

Exkurs: HTML Entities & URL Encode

Beispiel• Anfrage in Formularfeld:

<script>alert('XSS')</script>• Anfrage in HTML Entities:

&lt;script&gt;alert(&#039;XSS&#039;)&lt;/script&gt;

• Anfrage in URL Encode: %3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E

• JavaScript Interpreter:

„?“

Page 29: Daniel Franke Tim Benedict Jagla Matthias Thimm

29

Üblicher Schutz vor CSRF

Funktion• Serverseitig werden

HTTP Requests (bis auf POST) eingeschränkt

• Token werden verwendet

Nachteile• Server muss Token

verwalten• Token muss

Formularfeld zugeordnet sein• Abgelaufene Token

müssen ungültig gemacht werden

DoS[T1]

Page 30: Daniel Franke Tim Benedict Jagla Matthias Thimm

30

Schutz vor CSRF:Double-Submit Cookie [ZF08] Funktion• Braucht keine

serverseitigen Zustände mehr

• Zwei Tokens• Einer im Cookie• Einer im Request

Vorteile• „Same-Origin-Policy“ für

Cookies• Sind die Tokens identisch

kommen Cookie und Request von derselben Ressource

Nachteile• Modifikationen im

Applikation Code

Page 31: Daniel Franke Tim Benedict Jagla Matthias Thimm

31

Schutz vor CSRF:Double-Submit Cookie+ [LTJ12] Funktion Serverseitig• Proxy („Gatekeeper“)

validiert Token• Whitelist für

Einstiegspunkte in Applikation ohne Token (Bilder, JavaScript, CSS)

• „Gatekeeper“ fügt jedem ausgehenden HTML eine JavaScript Library hinzu

HTTP Request Möglichkeiten• Requests durch

Interaktion mit DOM• Implizite Requests durch

HTML tags• Requests von JavaScripts

XMLHttpRequest• Weiterleitungen seitens

des Servers

Page 32: Daniel Franke Tim Benedict Jagla Matthias Thimm

Quellen [SJW07]

• A. Wiegenstein, Dr. M. Schuhmacher, X. Jia, F. Weidemann, „The Cross Site Scripting Threat“

[Kurtz10]• A. Kurtz, „Bedrohung Cross-Site

Request-Forgery – Grenzüberschreitung: Die „andere“ Schwachstelle in Web-Applikationen

[LTJ12]• S. Lekies, W. Tighzert, M. Johns,

„Towards stateless, client-side driven Cross-Site Request Forgery protection für Web applications“

[ST12]• L. K. Shar, H. B. K. Tan,

„Defending against Cross-Site Scripting Attacks“

[Klein05]• A. Klein, “DOM Based

Cross Site Scripting or XSS of the Third Kind”

[T1]• http://wp.dynaperl.de/

2008/11/29/tcp-syn-dos/

Page 33: Daniel Franke Tim Benedict Jagla Matthias Thimm

FRAGEN!?

Page 34: Daniel Franke Tim Benedict Jagla Matthias Thimm

Vielen Dank für die Aufmerksamkeit