Download pdf - Ajax Security - GBV

Transcript

Carsten Eilers

Ajax Security Sichere Web-2.0-Anwendungen

ntwickier

Inhaltsverzeichnis

Ajax, aber sicher!

Geschichte

Der Aufbau des Buchs

Danksagung und Widmung

Der Autor

Ajax - Grundlagen

Vom Web 1.0 zum Web 2.0

XMLHttp und XMLHttpRequest Funktionsweise des XMLHttpRequest

Ajax und die Architektur

Die Angriffsfläche Größere Angriffsfläche? Jein! Angriffspunkte von Webanwendungen Angriffspunkte von Webservices Angriffspunkte von Ajax-Anwendungen

Angriffe auf Webanwendungen

SQL-Injection Was ist SQL-Injection? Einige Beispiele Weitere Angriffe Blind SQL-Injection SQL-Injection verhindern

XPath-Injection Ein einfaches Beispiel XPath-Injection verhindern

Command Injection Command Injection verhindern

Cross-Site Scripting Wie funktioniert XSS? Reflektiertes XSS Persistentes XSS 0avaScript-Injection) DOM-basiertes XSS Was kann XSS? Cross-Site Scripting verhindern

13

13

14

14

15

17

17

18 18

19

19 19 20 20 21

23

23 23 23 25 26 26

30 30 31

31 33

CO

C

O

CO

CO

34 35 36 39 40

Ajax Security 5

Inhaltsverzeichnis

2.5 Cross-Site Request Forgery (CSRF) 42 CSRF - Ein alter Hut? 42 Wie funktioniert CSRF? 43 Wie wird der CSRF-Request eingeschleust? 45 CSRF-Schwachstellen finden 46 CSRF verhindern 46

2.6 Lesen lokaler Dateien / Directory Traversal 47 Einbinden lokaler Dateien in PHP-Skripte 48 Directory Traversal verhindern 49

2.7 Einbinden entfernter Dateien 51 Einbinden entfernter Dateien verhindern 52

2.8 Session-Hijacking 52 Session-Hijacking verhindern 54

2.9 Session Fixation 54 Session Fixation verhindern 55

2.10 Cookie Poisoning 56

Cookie Poisoning verhindern 56

2.11 Denial of Service (DoS) 57

2.12 Buffer Overflow 57 Was passiert bei einem Pufferüberlauf? 57 Schutzmaßnahmen 59 Pufferüberläufe verhindern 60

2.13 Formatstring-Schwachstellen 61 Formatstring-Schwachstellen verhindern 62

2.14 Nicht verlinkte Ressourcen 62 Gegenmaßnahmen 62

2.15 Brute-Force 62 Brute-Force-Angriffe verhindern 63

2.16 Indirekte Angriffe 63 Man in the Middle 63 Social Engineering 63

3 Angriffe auf HTTP 65

3.1 HTTP Request Smuggling 65 Vergiften des Webcaches 65 Request Hijacking 67 Request Credential Hijacking 68 Täuschung von Firewalls und Intrusion-Detection- bzw.

Prevention Systemen 69 HTTP Request Smuggling erkennen und verhindern 71

3.2 HTTP Response Splitting 72 Durchführung eines Angriffs 72 Schwierigkeiten beim HTTP Response Splitting 75

Inhaltsverzeichnis

Vergiften von Webcaches 76 Angriffe erkennen 82 Angriffe verhindern 83

4 Angriffe auf TCP/IP 85

4.1 Denial of Service-Angriffe 85

4.2 Spoofing 87 IP-Spoofing 87

4.3 TCP-Hijacking 89 Vor dem Angriff: Sniffen 90 Es geht los: Verbindung stören, Pakete einschleusen 90 ARP-Spoofing 91

4.4 DNS-Spoofing 93 Die Namens-Auflösung 93 Cache Verschmutzung 97

4.5 HTTP-Hijacking 98 Beispiel: HTTPS-Hijacking 99

4.6 Distributed Denial of Service Angriffe 101 DDoS am Beispiel von Trinoo 102 DDoS durch Botnets 102 DDoS durch DNS Amplification Attacks 103 Gegenmaßnahmen 105

4.7 Weitere Schutzmaßnahmen 105

5 Was kann Cross-Site-Scriptinq? 107

5.1 Ausspähen von Cookies 107

5.2 Ausspähen von Tastatureingaben 108

5.3 Auslesen von Passwörtern 109

5.4 Einschleusen falscher Informationen 110

5.5 Ausspähen der Browser-History 114

5.6 Portscan über JavaScript 114

Zusammenfassung 119

5.7 HTTP-Auth-Popup verhindern 120

5.8 Ziel erkannt - Attacke! 120 Cross-Site Request Forgery 121

Ausprobieren von Default-Passwörtern 122

5.9 Weitere Ziele 122

5.10 Fernsteuerung 123

5.11 Ausnutzen von Browser-Schwachstellen 123

5.12 Fazit 124

Ajax Security

Inhaltsverzeichnis

6 Webservices 125

6.1 Geschichte 125

6.2 SOA 126

6.3 REST 126 Grundlagen von REST Webservices 126 Aufbau von REST Webservices 127

6.4 SOAP 128

Arbeitsweise von SOAP 128

6.5 UDDI 130

6.6 WSDL 130

6.7 Sicherheit und Webservices 131 Identifizierung 131 Authentifizierung 131 Autorisierung 132 Sicherheit auf Transportebene 132 Sicherheit auf Nachrichtenebene 133 Alle Schwachstellen sind schon da 134

7 Mashups 135

7.1 Die Grundlagen 135

7.2 Einmal mischen, bitte! 136

7.3 Konstruktion von Mashups 137

7.4 Ajax-Proxies und Sicherheit 139 Wie kann ein Angreifer den Ajax-Proxy nutzen? 139 Angriffe verhindern 141

7.5 Ajax-Portale oder »Aggregate-Sites« 143 Schutzmaßnahmen 144

7.6 Vertraulichkeit und Integrität 146 Vertrauen und Vertraulichkeit 147 Integrität 148 Gefahren für Mashup-Betreiber 148 Schutzmaßnahmen 148

7.7 Verfügbarkeit 149

8 JSON und JavaScript-Hijackinq 151

8.1 JSON is evil 151

8.2 Ajax-Hijacking 152 Funktionen umdefinieren 152 Ajax-Hijacking verhindern 156 Probleme beim Hijacking 156 On-Demand-Ajax und Hijacking 156

Inhaltsverzeichnis

8.3 JSON-Hijacking 158 Angriff mit Mozilla-spezifischen Funktionen 158 Angriff ohne Mozilla-spezifische Funktionen 159 Verhindern von JSON-Hijacking 161

9 Requests und ihre Herkunft 163

9.1 Wer oder was ist der Client? 163 Mensch oder Maschine? 164 Gegenmaßnahmen 165

10 Webwürmer 167

10.1 Der erste seiner Art: Samy 167 Die Technik hinter Samy 167

10.2 Nach Samy kam Yamanner 170 Der Wurm-Code 171 Die Folgen 171

10.3 Ein letztes Beispiel: Der Orkut-XSS-Wurm 171 Der Code 172 Die Folgen 172

10.4 Zusammenfassung 173 Was wäre wenn... 174 Wieso ist es bisher nicht passiert? 174 Worm for fun - und wo bleibt der Profit? 175 Web würmer verhindern 175

11 Zertifikate und SSL/TLS 179

11.1 Identitätsprüfung 179 Hierarchische Zertifizierungssysteme 179

11.2 Das TLS-Protokoll 181 Einsatz von Zertifikaten bei SSL/TLS 183 X.509-Zertifikat 183 Verwendung der Zertifikate 184

11.3 Nutzung von SSL/TLS in eigenen Programmen 186

12 Der Ajax-Client 187

12.1 Allgemeine Probleme im Client 187 Ein Beispiel 187

12.2 Datenumwandlungen auf dem Client 188 Beispiel: SQL-Injection 189 Gegenmaßnahmen 189

12.3 Der Ajax-Quelltext 190 Gegenmaßnahmen 190

12.4 Asynchronität 190 Race Conditions 190

12.5 Schlussbemerkung 192

Ajax Security 9

Inhaltsverzeichnis

A

A.l

A.2

B

B.l

B.2

B.3

C

C.l

D

D.l

D.2

D.3

E

E.l

E.2

E.3

F

El

F.2

Literaturverzeichnis

Vorbemerkung

Literaturverzeichnis

Die Same Origin Policy

Die Funktion der Same Origin Policy

Umgehen der Same Origin Policy

Anti-DNS-Pinning

JavaScript-Portscan

Quelltext Der Quelltext eines JavaScript-Portscanners: Die Ausgabe

Quelltexte der Webwürmer

Samy, der MySpace-Wurm Der eigentliche Quelltext von Samy Der formatierte Quelltext von Samy

Yamanner, der Yahoo!-Wurm Der Quelltext von Yamanner

Der Orkut-XSS-Wurm Die Flash-Datei des Orkut-Wurms Der getarnte Schadcode des Orkut-Wurms Der entpackte Schadcode des Orkut-Wurms

Kryptographie

Grundlagen Symmetrische Systeme Asymmetrische Systeme Konzelationssysteme Authentikationssysteme Hash-Funktionen

Vorstellung einiger Verfahren Symmetrische Verfahren Asymmetrische Verfahren Ein hybrides Verfahren Hash-Algorithmen

Links & Literatur

TCP/IP Grundlagen

Das TCP/IP-Schichtenmodell

Die Netzzugangsschicht Ethernet-Paket (Version 2)

193

193

193

197

197

197

198

201

201 201 203

205

205 205 206

214 214

219 219 219 221

227

227 227 228 229 230 231

232 232 233 238 239

240

241

241

243 243

10 B

Inhaltsverzeichnis

Die Netzwerkschicht IP-Paket (RFC 791) ICMP-Paket (RFC 792)

Die Transportschicht TCP-Paket (RFC 793) UDP-Paket (RFC 768)

Kapselung der Daten

Aufbau eines Botnets

Der Aufbau

Die Nutzung

Stichwortverzeichnis

243 243 244

244 244 244

245

247

247

250

251

Ajax Security 11


Recommended