Carsten Eilers Ajax Security Sichere Web-2.0-Anwendungen ntwickier
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 CO CO CO 34 35 36 39 40 Ajax Security 5
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
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
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
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
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
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