Manuel Ziegler
Web Hacking
Sicherheitslücken in Webanwendungen - Lösungswege für Entwickler. Mit Playground im Internet.
Inhalt
7
Vorwort
13
1 Sicherheitsprobleme
1 Sicherheitsprobleme
19
19
1.1 Sicherheitsprobleme auf kleinen Webseiten
19
1.2 Sicherheitsprobleme auf großen
1.2 Sicherheitsprobleme auf großen
21
21
1.2.1 Mangelhafte Verschlüsselung und Authentifizierung
1.2.1 Mangelhafte Verschlüsselung und Authentifizierung
21
21
1.2.2 Die Facebook-Neujahrspanne 2012/2013
22
1.2.3 Der Hack des Facebook-Profils von Mark Zuckerberg
22
1.3 Sicherheitsprobleme mit großen Folgen für die Nutzer
23
1.3.1 Angriff auf das Playstation Network
24
1.3.2 Datendiebstahl bei Vodafone
24
2 Grundlagen
25
2.1 Die Macht der Fantasie
25
2.1.1 Anwendungsbeispiel: Zugang zu einem Content-Management-System
25
2.1.2 Seiten- und Servicenamen erraten
28
2.2 Code-Injection
30
2.3 Physischer und virtueller Zugang
32
3 Passwörter knacken: eine Frage von Sekunden?
33
3.1 Brute Force - einfach, aber effektiv
33
3.1.1 Passwörter mit bekannter Länge
33
3.1.2 Passwörter mit unbekannter Länge
34
3.1.3 Das Problem des Flaschenhalses
36
3.1.4 Partitionierung des Alphabets
37
3.1.5 Informationen über ein Passwort
38
3.2 Die Arbeit mit Passwort-Listen
40
3.2.1 Credential Recycling
40
3.2.2 Reverse-Brute-Force-Attacke
43
3.3 Verschlüsselte Passwörter knacken
43
3.3.1 Wie werden Passwörter gespeichert?
44
3.3.2 Brute-Force Attacke auf Hashwerte
45
3.3.3 Rainbow-Tables
46
3.4 Den Aufwand verteilen
47
3.4.1 Wann ist eine Aufteilung sinnvoll?
3.4.1 Wann ist eine Aufteilung sinnvoll?
3.4.1.1 Verteilung auf mehrere Prozessoren
48
3.4.1.2 Verteilung zwischen physikalischen Computern
50
3.4.2 Organisation der beteiligten Rechner
52
3.4.2.1 Client-Server-Prinzip
52
3.4.2.2 Dezentrale Kommunikation
54
3.4.2.2.1 Vollständig vermaschtes Netz
54
3.4.2.2.2 Ringtopologie
55
3.4.3 Eine sinnvolle Aufteilung
56
3.5 Timeouts, Captchas und Co.
62
3.5.1 Die Sicherheitsfrage
63
3.5.2 Timeouts
64
3.5.3 Captchas
66
4 Der Entwurf sicherer Authentifikationssysteme
71
4.1 Die Benutzername-Passwort-Authentifizierung
71
4.1.1 Anforderungen an Passwörter
72
4.1.2 Speichern von Passwörtern
76
4.1.2.1 Hashing
77
4.1.2.2 Kryptografische Verfahren
79
4.1.3 Speicherung von Benutzerdaten
79
4.1.3.1 Benutzerdaten mit globalem Schlüssel speichern
81
4.1.3.2 Benutzerdaten mit benutzerspezifischem Schlüssel speichern
82
4.2 Weitere Authentifikationskonzepte
85
4.2.1 Passwortschutz einzelner Seiten
85
4.2.2 E-Mail-Versand benutzerdefinierter Links
86
4.2.3 Sicherheitsfragen
87
4.2.4 Authentifikation mit Systemeigenschaften als Passwort
87
4.3 Generelle Sicherheitshinweise
88
4.3.1 Brute-Force-Attacken verhindern
88
4.3.2 Wenn möglich, sichere Verbindungen nutzen
91
5 SQL-Injection: Zugriff auf die Datenbank
93
5.1 Was ist SQL?
93
5.1.1 Das relationale Datenbankkonzept
94
5.1.2 SQL-Befehlssyntax
95
5.1.2.1 Daten abfragen mittels SELECT
95
5.1.2.2 Bestehende Datensätze mittels UPDATE ändern
96
5.1.2.3 Neue Datensätze in eine Tabelle einfügen – INSERT
96
5.1.2.4 DELETE: Werte aus einer Tabelle löschen
96
5.1.2.5 Ganze Tabellen löschen – DROP
97
5.2 SQL-Code einschleusen
97
5.3 SQL-Injection erfolgreich verhindern
103
5.3.1 Rechte des Datenbankbenutzers
104
5.3.2 Prepared Statements
105
6 Cross-Site-Scripting (XSS)
107
6.1 Motive des Cross-Site-Scriptings
107
6.2 Varianten des Cross-Site-Scriptings
108
6.2.1 Reflektiertes Cross-Site-Scripting
108
6.2.2 Persistentes Cross-Site-Scripting
112
6.2.3 Clientseitiges Cross-Site-Scripting
113
6.2.4 Angriffe durch Suchmaschinen und andere Personen auslösen
114
6.3 Cross-Site-Tracing
116
6.4 Cross-Site-Scripting verhindern
118
7 Denial-of-Service-Attacken (DoS)
121
7.1 Maßnahmen gegen DoS-Attacken
122
7.1.1 DoS-Attacken erkennen
122
7.1.2 Die Performance von PHP-Programmen steigern
123
7.1.2.1 Sinnvolle Anordnung von Anweisungen
124
7.1.2.2 Ergebnisse von Berechnungen wiederverwenden
124
7.1.2.3 Keine unnötigen Vergleiche oder unnötiges Kopieren von Variablen
127
7.1.2.4 Stringoperationen
128
7.1.2.5 Einsatz des ternären Operators
129
7.1.3 Kritische Aufrufe cachen
129
7.2 Fortgeschrittene DoS-Angriffe
131
7.2.1 Reflektierte DoS-Attacken
132
7.2.2 SYN-Flooding
132
8 Phishing
135
8.1 Phishing-Techniken
135
8.1.1 Phishing via E-Mail
136
8.1.2 Phishing in sozialen Netzwerken
137
8.1.3 Phishing durch Spam-Kommentare auf Webseiten
138
8.1.4 Phishing durch Cross-Site-Scripting
138
8.2 Phishing verhindern
139
8.2.1 Login über externe Webseiten verhindern
139
8.2.2 Phishing durch Spam-Kommentare verhindern
141
9 Social Engineering
143
9.1 Die Geschichte von Kevin Mitnick
143
9.2 Muster und Ziele des Social
9.2 Muster und Ziele des Social
144
144
9.2.1 Social Engineering in sozialen Netzwerken und auf Online-Dating-Plattformen
145
9.2.2 Dumpster Diving
146
9.3 Abwehr von Social Engineering
147
9.3.1 Generelle Maßnahmen gegen Social Engineering
147
9.3.2 Technische Maßnahmen gegen Social Engineering
147
10 Kryptografie, Protokolle und fortgeschrittene Hacking-Technologien
151
10.1 Sessions
151
10.1.1 Die Funktionsweise von Sessions
151
10.1.2 Session Hijacking
154
10.1.2.1 TCP-Session Hijacking
154
10.1.2.2 Web-Session Hijacking
155
10.1.3 Session Fixation
155
10.2 Kryptografische Verfahren
157
10.2.1 Symmetrische Verschlüsselung
157
10.2.1.1 Substitutionschiffren
157
10.2.1.2 Permutationsverfahren
158
10.2.1.3 Moderne Blockverschlüsselungsverfahren – der AES
159
10.2.2 symmetrische Verschlüsselung
165
10.3 Das TLS/SSL-Protokoll
168
10.4 Geheimdienste und ihre Methoden
10.4 Geheimdienste und ihre Methoden
169
169
10.4.1 DNS-Spoofing
169
10.4.1.1 Das Domain Name System
169
10.4.1.2 Angriffsmöglichkeiten auf die Namensauflösung
170
10.4.1.2.1 Änderung der hosts-Datei
170
10.4.1.3 DNS-Spoofing durch einen Provider (DNS-Injection)
171
10.4.1.3.1 Temporäres DNS-Spoofing
171
10.4.2 Abhören von Kommunikation im Internet
172
10.5 Grundlegende Low-Level-
10.5 Grundlegende Low-Level-
174
174
10.5.1 Simple Programmierfehler: Off-by-One-Fehler
174
10.5.2 Buffer-Overflows
175
11 Exkurs A: Alphabet zum Knacken eines Passwortes
179
12 Exkurs B: Bäume, Listen und Graphen
181
12.1 Verkettete Linien
181
12.2 Binärbäume
183
12.3 Graphen
187
13 Exkurs C: Netzwerkprogrammierung
13 Exkurs C: Netzwerkprogrammierung
191
191
14 Exkurs D: Rasteralgorithmus (Brute-Force-Attacke)
197
14.1 Ein festes Raster
197
14.2 Statistische Partitionierung
14.2 Statistische Partitionierung
198
198
15 Exkurs E: Die grundlegende Funktionsweise
15 Exkurs E: Die grundlegende Funktionsweise
211
211
15.1 Aufbau eines Prozessors
211
15.2 Der Befehlssatz eines Prozessors
214
Index
215
© 2009-2024 ciando GmbH