Daniel Franke Tim Benedict Jagla Matthias Thimm.

34

Transcript of Daniel Franke Tim Benedict Jagla Matthias Thimm.

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