Ajax Security - GBV
Embed Size (px)
Transcript of Ajax Security - GBV

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