4. Wer seid Ihr ?
» Wieviele von Euch denken security aware zu sein?
3
5. Wer seid Ihr ?
» Wieviele von Euch denken security aware zu sein?
» Wer kennt XSS?
3
6. Wer seid Ihr ?
» Wieviele von Euch denken security aware zu sein?
» Wer kennt XSS?
» Wer kennt CSRF?
3
7. Wer seid Ihr ?
» Wieviele von Euch denken security aware zu sein?
» Wer kennt XSS?
» Wer kennt CSRF?
» Wer kennt SQL Injections?
3
8. Wer seid Ihr ?
» Wieviele von Euch denken security aware zu sein?
» Wer kennt XSS?
» Wer kennt CSRF?
» Wer kennt SQL Injections?
3
9. Wer seid Ihr ?
» Wieviele von Euch denken security aware zu sein?
» Wer kennt XSS?
» Wer kennt CSRF?
» Wer kennt SQL Injections?
» Was erwartet ihr von diesem Workshop?
3
10. Wer seid Ihr ?
» Wieviele von Euch denken security aware zu sein?
» Wer kennt XSS?
» Wer kennt CSRF?
» Wer kennt SQL Injections?
» Was erwartet ihr von diesem Workshop?
3
11. Wer seid Ihr ?
» Wieviele von Euch denken security aware zu sein?
» Wer kennt XSS?
» Wer kennt CSRF?
» Wer kennt SQL Injections?
» Was erwartet ihr von diesem Workshop?
» Oh, sorry, daran haben wir nicht gedacht.
3
27. Warum noch einmal die Grundlagen?
» Pentesting ist
» bekannte Lücken finden
» fehlende Sicherheitsmaßnahmen entdecken
» Fehler in den Sicherheitsmaßnahmen finden
6
28. Warum noch einmal die Grundlagen?
» Pentesting ist
» bekannte Lücken finden
» fehlende Sicherheitsmaßnahmen entdecken
» Fehler in den Sicherheitsmaßnahmen finden
» Proportional zur Education
» bekannte Lücken unwahrscheinlich
» fehlende Sicherheitsmaßnahmen selten
» Fehler in Sicherheitsmaßnahmen oft
6
29. Warum noch einmal die Grundlagen?
» Pentesting ist
» bekannte Lücken finden
» fehlende Sicherheitsmaßnahmen entdecken
» Fehler in den Sicherheitsmaßnahmen finden
» Proportional zur Education
» bekannte Lücken unwahrscheinlich
» fehlende Sicherheitsmaßnahmen selten
» Fehler in Sicherheitsmaßnahmen oft
» Es geht also um die entdeckbaren Fehler
6
47. XSS in Scripts
» <script>
var search=“mystring“;alert(1);//“
» aus dem JS-Stringkontext in den JS-
Kontext ausbrechen
» var number=1;alert(1);
» Stringkontext: korrektes Escaping hilft
» Tag-Filterung hilft nicht
10
49. XSS in Style-Sheets
» Als Style-Definition:
<style>a: expression(alert(1))</style>
» Als Style im Attribut:
<a style=“background-color:expression(..
» Ausnutzung des URL-Kontextes: url()
» Firefox: Ausnutzung über Behaviors
» Escaping hilft bei Strings
» Tag-Filterung hilft nicht
12
50. XSS in HTML
» <script>alert(1)</script>
» Wechsel zu Url: <a href=“javascript:...“>
» Wechsel zu Event: <a onmouseover=“...“>
» Wechsel zu Style: <a style=“a:expression..
» Tag-Filterung hilft
» Escaping in HTML-Entitäten hilft
13
53. Codepage-basierte Kontextwechsel
» Jedes Escaping ist abhängig von der
Code-Page
» Fehlendes Multibyte-Handling kann
Escaping boykottieren
Beispiel: %C0“ -> %C0“
14
54. Codepage-basierte Kontextwechsel
» Jedes Escaping ist abhängig von der
Code-Page
» Fehlendes Multibyte-Handling kann
Escaping boykottieren
Beispiel: %C0“ -> %C0“
» Die Codepage kann forciert werden
UTF-7-Bug in den ersten 1024 Bytes:
+ADw-script+AD4-alert(1);+ADw-/script
+AD4+
14
57. Fazit: Probleme bei XSS
» Ein Tagfilter helfen nur in 1/4 aller Fälle
» 4 Escaping-Verfahren
15
58. Fazit: Probleme bei XSS
» Ein Tagfilter helfen nur in 1/4 aller Fälle
» 4 Escaping-Verfahren
» HTML-Entititäten
15
59. Fazit: Probleme bei XSS
» Ein Tagfilter helfen nur in 1/4 aller Fälle
» 4 Escaping-Verfahren
» HTML-Entititäten
» String-Enkodierung für value=““
15
60. Fazit: Probleme bei XSS
» Ein Tagfilter helfen nur in 1/4 aller Fälle
» 4 Escaping-Verfahren
» HTML-Entititäten
» String-Enkodierung für value=““
» String-Escaping für JS/CSS-Strings
15
61. Fazit: Probleme bei XSS
» Ein Tagfilter helfen nur in 1/4 aller Fälle
» 4 Escaping-Verfahren
» HTML-Entititäten
» String-Enkodierung für value=““
» String-Escaping für JS/CSS-Strings
» URL-Enkodierung in Links
15
62. Fazit: Probleme bei XSS
» Ein Tagfilter helfen nur in 1/4 aller Fälle
» 4 Escaping-Verfahren
» HTML-Entititäten
» String-Enkodierung für value=““
» String-Escaping für JS/CSS-Strings
» URL-Enkodierung in Links
» Escaping hilft nicht bei Non-String-
Injections in Javascript/Event-Kontext
15
66. Probleme bei XSS-Blacklists
» Browser nutzen HTML tolerant
» fehlerhaftes HTML ist trotzdem gültig
» Kontext-Wechsel durch Interpretation
16
67. Probleme bei XSS-Blacklists
» Browser nutzen HTML tolerant
» fehlerhaftes HTML ist trotzdem gültig
» Kontext-Wechsel durch Interpretation
» Boykottierung des Escapings durch Interpretation
16
68. Probleme bei XSS-Blacklists
» Browser nutzen HTML tolerant
» fehlerhaftes HTML ist trotzdem gültig
» Kontext-Wechsel durch Interpretation
» Boykottierung des Escapings durch Interpretation
» Es gibt keine finale Liste dieser
„Verbesserungen“
16
69. Probleme bei XSS-Blacklists
» Browser nutzen HTML tolerant
» fehlerhaftes HTML ist trotzdem gültig
» Kontext-Wechsel durch Interpretation
» Boykottierung des Escapings durch Interpretation
» Es gibt keine finale Liste dieser
„Verbesserungen“
» pro Monat wird etwa eine neue gefunden
16
70. Probleme bei XSS-Blacklists
» Browser nutzen HTML tolerant
» fehlerhaftes HTML ist trotzdem gültig
» Kontext-Wechsel durch Interpretation
» Boykottierung des Escapings durch Interpretation
» Es gibt keine finale Liste dieser
„Verbesserungen“
» pro Monat wird etwa eine neue gefunden
» Inhalt ist kontextabhängig
16
71. Probleme bei XSS-Blacklists
» Browser nutzen HTML tolerant
» fehlerhaftes HTML ist trotzdem gültig
» Kontext-Wechsel durch Interpretation
» Boykottierung des Escapings durch Interpretation
» Es gibt keine finale Liste dieser
„Verbesserungen“
» pro Monat wird etwa eine neue gefunden
» Inhalt ist kontextabhängig
» der gleiche String kann je nach Ausgabeort
neutral oder vergiftet sein
16
75. Probleme bei XSS-Blacklists 2
» HTML wird extern erweitert
» Attribute wie dojotype=...
» URL-Moniker wie skype: oder tel:
17
76. Probleme bei XSS-Blacklists 2
» HTML wird extern erweitert
» Attribute wie dojotype=...
» URL-Moniker wie skype: oder tel:
» Browser-Plugins wie Greasemonkey
17
77. Probleme bei XSS-Blacklists 2
» HTML wird extern erweitert
» Attribute wie dojotype=...
» URL-Moniker wie skype: oder tel:
» Browser-Plugins wie Greasemonkey
» JavaScript-Includes für Adserver
17
78. Probleme bei XSS-Blacklists 2
» HTML wird extern erweitert
» Attribute wie dojotype=...
» URL-Moniker wie skype: oder tel:
» Browser-Plugins wie Greasemonkey
» JavaScript-Includes für Adserver
» Blacklists sind immer unvollständig
17
79. Fehlerhafte XSS-Filter
» String-Operationen als Filter
» <script>-Tags werden automatisch entfernt
» Was ist mit <scr<script>ipt> ?
» XSS Cheat Sheet
» http://ha.ckers.org/xss.html
18
89. Cross Site Request Forgery
» Ist wirklich kritisch: wurde vor kurzem für
Erpressung über Domain-Transfer genutzt
» Häufigster Schutz: Token-basiert
» Ist mit einem XSS zu boykottieren
» -> bei vorhandener CSRF-Protection nach
XSS suchen
20
110. SQL Blacklisting Evasions
» SQL Comment Filter Evasions
» mehrzeilige Comments: /* */
» einzeilige Comments: -- ,#
» können innerhalb von Statements genutzt
werden: u/**/nion
24
111. SQL Blacklisting Evasions
» SQL Comment Filter Evasions
» mehrzeilige Comments: /* */
» einzeilige Comments: -- ,#
» können innerhalb von Statements genutzt
werden: u/**/nion
» Umgehen von Escaping mit Funktionen
24
112. SQL Blacklisting Evasions
» SQL Comment Filter Evasions
» mehrzeilige Comments: /* */
» einzeilige Comments: -- ,#
» können innerhalb von Statements genutzt
werden: u/**/nion
» Umgehen von Escaping mit Funktionen
» char(65) an Stelle von ‘a‘
24
133. Motivation Pentesting für Entwickler
» Know your enemy
» Der Entwickler ist der Hebel für Security
30
134. Motivation Pentesting für Entwickler
» Know your enemy
» Der Entwickler ist der Hebel für Security
» Risikoanalyse
30
135. Motivation Pentesting für Entwickler
» Know your enemy
» Der Entwickler ist der Hebel für Security
» Risikoanalyse
» offensichtliche Probleme werden gefunden
30
136. Motivation Pentesting für Entwickler
» Know your enemy
» Der Entwickler ist der Hebel für Security
» Risikoanalyse
» offensichtliche Probleme werden gefunden
» „Oberkante“ des Eigenrisikos wird gefunden
30
137. Motivation Pentesting für Entwickler
» Know your enemy
» Der Entwickler ist der Hebel für Security
» Risikoanalyse
» offensichtliche Probleme werden gefunden
» „Oberkante“ des Eigenrisikos wird gefunden
» Security Awareness
30
138. Motivation Pentesting für Entwickler
» Know your enemy
» Der Entwickler ist der Hebel für Security
» Risikoanalyse
» offensichtliche Probleme werden gefunden
» „Oberkante“ des Eigenrisikos wird gefunden
» Security Awareness
» Security ist komplex
30
139. Motivation Pentesting für Entwickler
» Know your enemy
» Der Entwickler ist der Hebel für Security
» Risikoanalyse
» offensichtliche Probleme werden gefunden
» „Oberkante“ des Eigenrisikos wird gefunden
» Security Awareness
» Security ist komplex
» Ohne Verständnis der Angreiferseite sind
manche Abwehrmaßnahmen nicht möglich
30
146. Information Gathering - Infrastruktur
» Welcher Hoster, welcher Netzblock
» Sind andere Server in der Nähe, zum Beispiel
SQL-Server?
» Staging-Server?
32
147. Information Gathering - Infrastruktur
» Welcher Hoster, welcher Netzblock
» Sind andere Server in der Nähe, zum Beispiel
SQL-Server?
» Staging-Server?
» Tools
» whois, Nmap, BSI OSS Security Suite, fierce
32
148. Information Gathering - Infrastruktur
» Welcher Hoster, welcher Netzblock
» Sind andere Server in der Nähe, zum Beispiel
SQL-Server?
» Staging-Server?
» Tools
» whois, Nmap, BSI OSS Security Suite, fierce
» Fehler in der Infrastruktur
» offenen Zone-Listen im DNS, offene
Datenbank-Server etc
32
153. Information Gathering Host
» Nmap: offene Ports, welche Services
» Banner: Welche Versionen?
» HTTPrint
» Andere Domains auf der gleichen IP
http://myipneighbors.com
33
157. Information Gathering Webserver
» Google Dorks
» http://johnny.ihackstuff.com/ghdb.php
» Goolag Scanner von Cult of the Dead Cow
34
158. Information Gathering Webserver
» Google Dorks
» http://johnny.ihackstuff.com/ghdb.php
» Goolag Scanner von Cult of the Dead Cow
» Wikto Web Server Scanner
34
159. Information Gathering Webserver
» Google Dorks
» http://johnny.ihackstuff.com/ghdb.php
» Goolag Scanner von Cult of the Dead Cow
» Wikto Web Server Scanner
» OpenSource Perl Scanner mit grosser Library
34
160. Information Gathering Webserver
» Google Dorks
» http://johnny.ihackstuff.com/ghdb.php
» Goolag Scanner von Cult of the Dead Cow
» Wikto Web Server Scanner
» OpenSource Perl Scanner mit grosser Library
» http://www.netcraft.co.uk/
34
161. Information Gathering Webserver
» Google Dorks
» http://johnny.ihackstuff.com/ghdb.php
» Goolag Scanner von Cult of the Dead Cow
» Wikto Web Server Scanner
» OpenSource Perl Scanner mit grosser Library
» http://www.netcraft.co.uk/
» FoundStone SuperScan
34
189. XSS Pentest
» Typ 0 XSS
Einfache Prüfung:
wird im JavaScript der Seite
location.search oder
document.location verwendet?
40
190. XSS Pentest
» Typ 0 XSS
Einfache Prüfung:
wird im JavaScript der Seite
location.search oder
document.location verwendet?
» Wird die Seite mit diesem String
manipuliert?
40
191. XSS Pentest
» Typ 0 XSS
Einfache Prüfung:
wird im JavaScript der Seite
location.search oder
document.location verwendet?
» Wird die Seite mit diesem String
manipuliert?
» Typisches Beispiel: Frames und Iframes
40
193. XSS Pentest
» Typ 1 / Typ 2 XSS
Alle Formularfelder oder GET-Variablen
mit einer Signatur absenden und prüfen,
ob sie nach dem Submit wieder auftritt
41
194. XSS Pentest
» Typ 1 / Typ 2 XSS
Alle Formularfelder oder GET-Variablen
mit einer Signatur absenden und prüfen,
ob sie nach dem Submit wieder auftritt
» Anhand des Auftrittsortes eine passende
XSS-Payload konstruieren
41
195. XSS Pentest
» Typ 1 / Typ 2 XSS
Alle Formularfelder oder GET-Variablen
mit einer Signatur absenden und prüfen,
ob sie nach dem Submit wieder auftritt
» Anhand des Auftrittsortes eine passende
XSS-Payload konstruieren
» Falls ein Filter greift Filter-Evasions aus
dem XSS-Cheat-Sheet verwenden
41
200. CSRF Pentesting
» Prüfung: Existiert ein Tokenschutz?
» Falls ja
» Ist der Token vorhersehbar?
» wird der Token überprüft?
42
201. CSRF Pentesting
» Prüfung: Existiert ein Tokenschutz?
» Falls ja
» Ist der Token vorhersehbar?
» wird der Token überprüft?
» Falls nein
42
202. CSRF Pentesting
» Prüfung: Existiert ein Tokenschutz?
» Falls ja
» Ist der Token vorhersehbar?
» wird der Token überprüft?
» Falls nein
» existiert ein Referer-Check?
42
203. CSRF Pentesting
» Prüfung: Existiert ein Tokenschutz?
» Falls ja
» Ist der Token vorhersehbar?
» wird der Token überprüft?
» Falls nein
» existiert ein Referer-Check?
» Prüfung auf XSS und Flash-Angriffe, um
das Token auszulesen
42
207. SQL Injection Pentesting
» Parametermanipulation
» Test mit Escape-Parametern und
Sonderzeichen
» Lassen sich Fehlermeldungen provozieren?
43
208. SQL Injection Pentesting
» Parametermanipulation
» Test mit Escape-Parametern und
Sonderzeichen
» Lassen sich Fehlermeldungen provozieren?
» Ändert sich etwas an den dargestellten
Werten?
43
212. SQL Injection Pentesting
» Rekonstruktion der Query
» Wird der Wert direkt verwand oder escaped?
» Position der Injection durch Tests und Fehler
44
213. SQL Injection Pentesting
» Rekonstruktion der Query
» Wird der Wert direkt verwand oder escaped?
» Position der Injection durch Tests und Fehler
» Union-Versuch
44
214. SQL Injection Pentesting
» Rekonstruktion der Query
» Wird der Wert direkt verwand oder escaped?
» Position der Injection durch Tests und Fehler
» Union-Versuch
» Klammern-Tests
44
215. SQL Injection Pentesting
» Rekonstruktion der Query
» Wird der Wert direkt verwand oder escaped?
» Position der Injection durch Tests und Fehler
» Union-Versuch
» Klammern-Tests
» Feldzahl und -namen Erkennung mit Union
44
216. SQL Injection Pentesting
» Rekonstruktion der Query
» Wird der Wert direkt verwand oder escaped?
» Position der Injection durch Tests und Fehler
» Union-Versuch
» Klammern-Tests
» Feldzahl und -namen Erkennung mit Union
» Neutralisierung von Filtern durch Kommentare
44
217. SQL Injection Pentesting
» Rekonstruktion der Query
» Wird der Wert direkt verwand oder escaped?
» Position der Injection durch Tests und Fehler
» Union-Versuch
» Klammern-Tests
» Feldzahl und -namen Erkennung mit Union
» Neutralisierung von Filtern durch Kommentare
» Erkennung der Datenbank und Version
44
218. SQL Injection Pentesting
» Rekonstruktion der Query
» Wird der Wert direkt verwand oder escaped?
» Position der Injection durch Tests und Fehler
» Union-Versuch
» Klammern-Tests
» Feldzahl und -namen Erkennung mit Union
» Neutralisierung von Filtern durch Kommentare
» Erkennung der Datenbank und Version
» SELECT /*!32302 1/0, */1 FROM tablename
44
220. SQL Injection Pentesting - Blind SQL Injection
» Nicht jede Query liefert ein sichtbares
Ergebnis
45
221. SQL Injection Pentesting - Blind SQL Injection
» Nicht jede Query liefert ein sichtbares
Ergebnis
» Aber: man kann das Laufzeitverhalten
ändern, oder Fehler provozieren
45
222. SQL Injection Pentesting - Blind SQL Injection
» Nicht jede Query liefert ein sichtbares
Ergebnis
» Aber: man kann das Laufzeitverhalten
ändern, oder Fehler provozieren
» index.jsp?field=name&direction=ASC
45
223. SQL Injection Pentesting - Blind SQL Injection
» Nicht jede Query liefert ein sichtbares
Ergebnis
» Aber: man kann das Laufzeitverhalten
ändern, oder Fehler provozieren
» index.jsp?field=name&direction=ASC
» ..direction=,Benchmark(1...0, md5(1)) ASC
45
224. SQL Injection Pentesting - Blind SQL Injection
» Nicht jede Query liefert ein sichtbares
Ergebnis
» Aber: man kann das Laufzeitverhalten
ändern, oder Fehler provozieren
» index.jsp?field=name&direction=ASC
» ..direction=,Benchmark(1...0, md5(1)) ASC
» Kann zur Passwortenumeration genutzt
werden
45
237. Andere Vektoren
» XPATH injections
» Similar to SQL injections using XPATH syntax
» XXE
» XML external Entity Injections
47
238. Andere Vektoren
» XPATH injections
» Similar to SQL injections using XPATH syntax
» XXE
» XML external Entity Injections
» Upload an XML file including references to
local files
47
239. Andere Vektoren
» XPATH injections
» Similar to SQL injections using XPATH syntax
» XXE
» XML external Entity Injections
» Upload an XML file including references to
local files
» LDAP injections
47
240. Andere Vektoren
» XPATH injections
» Similar to SQL injections using XPATH syntax
» XXE
» XML external Entity Injections
» Upload an XML file including references to
local files
» LDAP injections
» Logical Flaws
47
241. Andere Vektoren
» XPATH injections
» Similar to SQL injections using XPATH syntax
» XXE
» XML external Entity Injections
» Upload an XML file including references to
local files
» LDAP injections
» Logical Flaws
» Missing authorization checks
47
242. Andere Vektoren
» XPATH injections
» Similar to SQL injections using XPATH syntax
» XXE
» XML external Entity Injections
» Upload an XML file including references to
local files
» LDAP injections
» Logical Flaws
» Missing authorization checks
» /user/edit.php?id=1 for admin editing
47
Warum noch einmal Grundlagen kommen, erkl&#xE4;r ich gleich \n
Warum noch einmal Grundlagen kommen, erkl&#xE4;r ich gleich \n
Warum noch einmal Grundlagen kommen, erkl&#xE4;r ich gleich \n
Warum noch einmal Grundlagen kommen, erkl&#xE4;r ich gleich \n
Warum noch einmal Grundlagen kommen, erkl&#xE4;r ich gleich \n
File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
Penetration Testing ist eine Form von Subversivit&#xE4;t- es geht darum, nicht den offensichtlichen weg zu finden, sondern die seltsame Konstruktion, die trotzdem einen Hack erlaubt. Vermutlich ist das einer der Gr&#xFC;nde, warum Security-Experten komische Leute sind :-) \nEigentlich gibt es eine Bauanleitung, wie man die Applikationen trotzdem wieder kaputt bekommt. \n
Penetration Testing ist eine Form von Subversivit&#xE4;t- es geht darum, nicht den offensichtlichen weg zu finden, sondern die seltsame Konstruktion, die trotzdem einen Hack erlaubt. Vermutlich ist das einer der Gr&#xFC;nde, warum Security-Experten komische Leute sind :-) \nEigentlich gibt es eine Bauanleitung, wie man die Applikationen trotzdem wieder kaputt bekommt. \n
Penetration Testing ist eine Form von Subversivit&#xE4;t- es geht darum, nicht den offensichtlichen weg zu finden, sondern die seltsame Konstruktion, die trotzdem einen Hack erlaubt. Vermutlich ist das einer der Gr&#xFC;nde, warum Security-Experten komische Leute sind :-) \nEigentlich gibt es eine Bauanleitung, wie man die Applikationen trotzdem wieder kaputt bekommt. \n
Gestern Im Talk von Arne wurde ja das Thema XSS schon angesprochen. Wir gehen hier noch einmal mehr in die Tiefe, um die diversen Vektoren aufzuzeigen. Ein einfacher Test mit <script> reicht definitiv nicht aus.\n
Gestern Im Talk von Arne wurde ja das Thema XSS schon angesprochen. Wir gehen hier noch einmal mehr in die Tiefe, um die diversen Vektoren aufzuzeigen. Ein einfacher Test mit <script> reicht definitiv nicht aus.\n
Gestern Im Talk von Arne wurde ja das Thema XSS schon angesprochen. Wir gehen hier noch einmal mehr in die Tiefe, um die diversen Vektoren aufzuzeigen. Ein einfacher Test mit <script> reicht definitiv nicht aus.\n
Gestern Im Talk von Arne wurde ja das Thema XSS schon angesprochen. Wir gehen hier noch einmal mehr in die Tiefe, um die diversen Vektoren aufzuzeigen. Ein einfacher Test mit <script> reicht definitiv nicht aus.\n
Gestern Im Talk von Arne wurde ja das Thema XSS schon angesprochen. Wir gehen hier noch einmal mehr in die Tiefe, um die diversen Vektoren aufzuzeigen. Ein einfacher Test mit <script> reicht definitiv nicht aus.\n
Gestern Im Talk von Arne wurde ja das Thema XSS schon angesprochen. Wir gehen hier noch einmal mehr in die Tiefe, um die diversen Vektoren aufzuzeigen. Ein einfacher Test mit <script> reicht definitiv nicht aus.\n
Gestern Im Talk von Arne wurde ja das Thema XSS schon angesprochen. Wir gehen hier noch einmal mehr in die Tiefe, um die diversen Vektoren aufzuzeigen. Ein einfacher Test mit <script> reicht definitiv nicht aus.\n
Gestern Im Talk von Arne wurde ja das Thema XSS schon angesprochen. Wir gehen hier noch einmal mehr in die Tiefe, um die diversen Vektoren aufzuzeigen. Ein einfacher Test mit <script> reicht definitiv nicht aus.\n
Es gibt 4 Default- Kontexte, in denen Javascript ausgef&#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&#xFC;hrt selbst wieder in dieser JS aus.\n
Es gibt 4 Default- Kontexte, in denen Javascript ausgef&#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&#xFC;hrt selbst wieder in dieser JS aus.\n
Es gibt 4 Default- Kontexte, in denen Javascript ausgef&#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&#xFC;hrt selbst wieder in dieser JS aus.\n
Es gibt 4 Default- Kontexte, in denen Javascript ausgef&#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&#xFC;hrt selbst wieder in dieser JS aus.\n
Es gibt 4 Default- Kontexte, in denen Javascript ausgef&#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&#xFC;hrt selbst wieder in dieser JS aus.\n
Es gibt 4 Default- Kontexte, in denen Javascript ausgef&#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&#xFC;hrt selbst wieder in dieser JS aus.\n
URL-Encoding sch&#xFC;tzt hier nur, weil der Doppelpunkt escaped wird. Gleichzeitig sch&#xFC;tzt das Encoding gegen das Verlassen des Attribut-Kontextes.\nEs muss nicht per se javascript: sein, im IE-6 werden auch andere Scriptsprachen wie vbscript etc unterst&#xFC;tzt.Besser ist nat&#xFC;rlich, wenn man das Protokoll hart vorgibt - oder durch ein / schlicht ignoriert. \n
Korrektes Escaping heisst in diesem Fall, dass die Anf&#xFC;hrungszeichen in den Werten escaped werden.Ohne den String-Kontext hat man ein Problem: hier reichen n&#xE4;mlich ganze normale Zeichen aus, um eine Injection zu provozieren.\n
In Tags selbst wird XSS nur in Event-Handlern ausgef&#xFC;hrt. Innerhalb eines Tags k&#xF6;nnen auch andere Kontexte - etwa Style oder bei Url-Attributen JavaScript-Url-Kontext - eingef&#xFC;hrt werden. Dabei ist nicht immer ein Doublequote notwendig - Beispiele finden sich genug im XSS Cheat Sheet\n
Mit dem URL-Kontext k&#xF6;nnen wiederum die klassischen Url-JavaScripts genutzt werden.\n
Endlich ein Fall, in dem Tag-Filterung tats&#xE4;chlich hilft! Und endlich ein Fall, in dem die ganzen Penetration-Tester und Tools, die nur auf <script>-Tags testen, eine Injection finden! \n
Das gilt tats&#xE4;chlich f&#xFC;r jedes Escaping - diese Probleme findet man auch in Datenbanken, in Codeausf&#xFC;hrungen, in Services - &#xFC;berall, wo Parameter als Teil eines Strings &#xFC;bergeben werden.\n
Das gilt tats&#xE4;chlich f&#xFC;r jedes Escaping - diese Probleme findet man auch in Datenbanken, in Codeausf&#xFC;hrungen, in Services - &#xFC;berall, wo Parameter als Teil eines Strings &#xFC;bergeben werden.\n
Das gilt tats&#xE4;chlich f&#xFC;r jedes Escaping - diese Probleme findet man auch in Datenbanken, in Codeausf&#xFC;hrungen, in Services - &#xFC;berall, wo Parameter als Teil eines Strings &#xFC;bergeben werden.\n
Fazit: Es gibt kein silver bullet f&#xFC;r XSS-Schutz, und kein Silver-Bullet f&#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
Fazit: Es gibt kein silver bullet f&#xFC;r XSS-Schutz, und kein Silver-Bullet f&#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
Fazit: Es gibt kein silver bullet f&#xFC;r XSS-Schutz, und kein Silver-Bullet f&#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
Fazit: Es gibt kein silver bullet f&#xFC;r XSS-Schutz, und kein Silver-Bullet f&#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
Fazit: Es gibt kein silver bullet f&#xFC;r XSS-Schutz, und kein Silver-Bullet f&#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
Fazit: Es gibt kein silver bullet f&#xFC;r XSS-Schutz, und kein Silver-Bullet f&#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
Fazit: Es gibt kein silver bullet f&#xFC;r XSS-Schutz, und kein Silver-Bullet f&#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
Und, wie oben genannt, nat&#xFC;rlich auch Plugins. Auch Flash-Movies k&#xF6;nnen Cross-Site-Scripting-L&#xFC;cken, zum Beispiel &#xFC;ber die URL, enthalten.\n
Und, wie oben genannt, nat&#xFC;rlich auch Plugins. Auch Flash-Movies k&#xF6;nnen Cross-Site-Scripting-L&#xFC;cken, zum Beispiel &#xFC;ber die URL, enthalten.\n
Und, wie oben genannt, nat&#xFC;rlich auch Plugins. Auch Flash-Movies k&#xF6;nnen Cross-Site-Scripting-L&#xFC;cken, zum Beispiel &#xFC;ber die URL, enthalten.\n
Und, wie oben genannt, nat&#xFC;rlich auch Plugins. Auch Flash-Movies k&#xF6;nnen Cross-Site-Scripting-L&#xFC;cken, zum Beispiel &#xFC;ber die URL, enthalten.\n
Und, wie oben genannt, nat&#xFC;rlich auch Plugins. Auch Flash-Movies k&#xF6;nnen Cross-Site-Scripting-L&#xFC;cken, zum Beispiel &#xFC;ber die URL, enthalten.\n
Und, wie oben genannt, nat&#xFC;rlich auch Plugins. Auch Flash-Movies k&#xF6;nnen Cross-Site-Scripting-L&#xFC;cken, zum Beispiel &#xFC;ber die URL, enthalten.\n
Dieses Beispiel stammt von einem bekannten offenen Businessclub. \n
Das ist nur eine unvollst&#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&#xFC;ssen nicht per se Daten sein, sondern k&#xF6;nnen nat&#xFC;rlich auch Fehlermeldungen etc sein.\n
Das ist nur eine unvollst&#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&#xFC;ssen nicht per se Daten sein, sondern k&#xF6;nnen nat&#xFC;rlich auch Fehlermeldungen etc sein.\n
Das ist nur eine unvollst&#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&#xFC;ssen nicht per se Daten sein, sondern k&#xF6;nnen nat&#xFC;rlich auch Fehlermeldungen etc sein.\n
Das ist nur eine unvollst&#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&#xFC;ssen nicht per se Daten sein, sondern k&#xF6;nnen nat&#xFC;rlich auch Fehlermeldungen etc sein.\n
Das ist nur eine unvollst&#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&#xFC;ssen nicht per se Daten sein, sondern k&#xF6;nnen nat&#xFC;rlich auch Fehlermeldungen etc sein.\n
Das ist nur eine unvollst&#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&#xFC;ssen nicht per se Daten sein, sondern k&#xF6;nnen nat&#xFC;rlich auch Fehlermeldungen etc sein.\n
Das ist nur eine unvollst&#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&#xFC;ssen nicht per se Daten sein, sondern k&#xF6;nnen nat&#xFC;rlich auch Fehlermeldungen etc sein.\n
Dieser Fall ist mit GMAIL vor 2 Monaten passiert, &#xFC;ber eine Filter-Regel, die per XSS ausgef&#xFC;hrt werden konnte.\n
Das sind die klassischen Schutzma&#xDF;nahmen. Gibts Wege drumherum? \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Das ist uns etwas peinlich, das h&#xE4;tten wir eigentlich validieren m&#xFC;ssen. Aber alle Security-Experten, die wir angerufen haben, wussten nicht, wie sich die Shell da verh&#xE4;lt. Wird per Blog-Posting nachgereicht. \n