Sie müssen in der Webentwicklung zahlreiche Schwachstellen beachten, die sonst dafür sorgen, dass Ihr Code zum Einfallstor für Hacker und Schadsoftware wird. Welche Gefahren auf Ihre Webanwendungen lauern, zeigt Ihnen dieser praxisorientierte Guide: von Authentifizierungsproblemen bis zum Cross Site Scripting, von Code Injections bis zu Architektur-Angriffen. Mit kommentierten Codebeispielen echter Schadsoftware und Beispielanwendung zum Ausprobieren.
Aus dem Inhalt:
Carsten Eilers (Dipl.-Inf.) ist Pen-Tester und hat zahlreiche Projekte im Bereich der IT-Sicherheit und des Datenschutzes erfolgreich durchgeführt. Seit 2005 ist er als freier Berater und Coach für IT-Sicherheit und technischen Datenschutz selbständig tätig.
Materialien zum Buch ... 16
1. Über dieses Buch ... 17
1.1 ... Was dieses Buch ist ... 17
1.2 ... Welche Schwachstellen gibt es? ... 18
1.3 ... Wie findet man Schwachstellen? ... 23
1.4 ... Einige Tools im Überblick ... 24
1.5 ... Die Demo-Anwendung ... 32
1.6 ... OWASP Top 10 Platz 10: Insufficient Logging & Monitoring ... 53
1.7 ... Links ... 57
2. Das Ziel erkunden ... 59
2.1 ... Offensichtliche Informationen sammeln ... 59
2.2 ... Nicht offensichtliche Informationen sammeln ... 62
2.3 ... Die Untersuchung des Clients ... 63
2.4 ... Die Demo-Anwendung ... 69
2.5 ... Links ... 104
3. Zustandsbasierte Angriffe ... 105
3.1 ... Angriffe auf Zustandsinformationen ... 105
3.2 ... URL-Jumping ... 111
3.3 ... Session-Hijacking ... 114
3.4 ... Session-Fixation ... 117
3.5 ... Clickjacking ... 120
3.6 ... Cross-Site-Request-Forgery ... 126
3.7 ... Die Demo-Anwendung ... 129
3.8 ... Links ... 143
4. Angriffe auf die Authentifizierung ... 145
4.1 ... Einführung: Authentifizierung -- einfach, und doch so schwer ... ... 145
4.2 ... Designfehler ... 154
4.3 ... Ungeschützt übertragene Zugangsdaten ... 163
4.4 ... Funktion zum Ändern des Passworts ... 173
4.5 ... Passwort-Reset ... 178
4.6 ... »Remember me« ... 182
4.7 ... User Impersonation ... 184
4.8 ... »Halbe Passwörter« ... 186
4.9 ... Nicht eindeutige Benutzernamen und doppelte Benutzer ... 188
4.10 ... Vorhersagbare Benutzernamen ... 191
4.11 ... Vorhersagbare Passwörter ... 193
4.12 ... Übertragung der Zugangsdaten »out of band« ... 194
4.13 ... Fehler in mehrstufigen Systemen ... 196
4.14 ... Unsichere Speicherung von Zugangsdaten ... 198
4.15 ... Fail-Open-Mechanismen ... 206
4.16 ... Die Demo-Anwendung ... 206
4.17 ... Sichere Authentifizierung ... 212
4.18 ... Links ... 221
5. Cross-Site-Scripting ... 227
5.1 ... XSS-Schwachstellen im Überblick ... 227
5.2 ... Schutzmaßnahmen im Browser ... 232
5.3 ... Angriffe über XSS ... 238
5.4 ... Webwürmer ... 263
5.5 ... Reflektiertes XSS finden ... 282
5.6 ... Persistentes XSS finden ... 288
5.7 ... DOM-basiertes XSS finden ... 293
5.8 ... XSS verhindern ... 295
5.9 ... Die Demo-Anwendung ... 298
5.10 ... Links ... 340
6. SQL-Injection ... 345
6.1 ... Einführung ... 345
6.2 ... SQL-Injection im Überblick ... 348
6.3 ... SQL-Injection: Schwachstellen finden ... 351
6.4 ... Angriffe »in the wild« ... 371
6.5 ... SQL-Injection verhindern ... 378
6.6 ... Die Demo-Anwendung ... 382
6.7 ... Links ... 406
7. Injection jenseits von SQL ... 407
7.1 ... OS-Command-Injection ... 407
7.2 ... SMTP-Injection ... 413
7.3 ... LDAP-Injection ... 419
7.4 ... NoSQL-Injection ... 424
7.5 ... Scriptcode-Injection ... 425
7.6 ... SOAP-Injection ... 429
7.7 ... XPath-Injection ... 434
7.8 ... Injection-Angriffe abwehren ... 437
7.9 ... Die Demo-Anwendung ... 440
7.10 ... Links ... 451
8. Dateioperationen: von Directory-Traversal bis Datei-Uploads ... 453
8.1 ... Directory-Traversal ... 453
8.2 ... Sonderfall PHP: Local File Inclusion ... 461
8.3 ... Der Schadcode: Webshells ... 463
8.4 ... Suche nach Directory-Traversal-Schwachstellen ... 475
8.5 ... Abwehr von Directory-Traversal-Angriffen ... 479
8.6 ... Remote File Inclusion ... 481
8.7 ... Datei-Uploads ... 485
8.8 ... Die Demo-Anwendung ... 496
8.9 ... Links ... 506
9. Ein kleiner Exkurs: Pufferüberläufe, Integer-Schwachstellen und Format-Strings ... 509
9.1 ... Pufferüberlauf ... 510
9.2 ... Integer-Schwachstellen ... 519
9.3 ... Format-String-Schwachstellen ... 522
9.4 ... Die Demo-Anwendung ... 524
9.5 ... Links ... 525
10. Angriffe auf die Architektur ... 527
10.1 ... Schichtenarchitekturen ... 527
10.2 ... Shared Environments ... 531
10.3 ... Kurz zur Cloud ... 537
10.4 ... Die Demo-Anwendung ... 537
10.5 ... Links ... 537
11. Angriffe auf den Webserver ... 539
11.1 ... Webserver identifizieren ... 539
11.2 ... Webserver angreifen ... ... 542
11.3 ... Abwehr der Angriffe ... 553
11.4 ... Sichere Konfiguration ... 558
11.5 ... Die Demo-Anwendung ... 559
11.6 ... Links ... 563
Index ... 569