Web Hacking - Sicherheitslücken in Webanwendungen - Lösungswege für Entwickler. Mit Playground im Internet.

Manuel Ziegler

Web Hacking

Sicherheitslücken in Webanwendungen - Lösungswege für Entwickler. Mit Playground im Internet.

2014

247 Seiten

Format: PDF, Online Lesen

E-Book: €  23,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446441125

 

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