Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

33
Christian Benz 22.06.22 Sicherheit in Webanwendungen - Christian Benz 1

Transcript of Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Page 1: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Christian Benz

11.04.23Sicherheit in Webanwendungen - Christian

Benz 1

Page 2: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

1. Arten von Sicherheitsrisiken2. Phishing

3. Cross-Site Scripting4. Directory Traversal

5. SQL-Injection6. Demonstration SQL-Injection

7. Demonstration Cross-Site Scripting8. Fazit

11.04.23Sicherheit in Webanwendungen - Christian

Benz 2

Page 3: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

PhishingDer moderne „Enkeltrick“

Cross-Site ScriptingEs lebe Web 2.0

Directory TraversalDas kann doch noch nicht

alles sein…

SQL InjectionCode einbinden leicht

gemacht

11.04.23Sicherheit in Webanwendungen - Christian

Benz 3

Page 4: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Phishing Ist eine Weiterführung des „Enkeltricks“

Eine vermeintlich seriöse E-Mail/Privatnachricht/Instant Messenger-Nachricht sendet einen Link zu einer Website mit betrügerischen Absichten

Phishing ist ein Kunstwort. Es setzt sich zusammen aus den englischen Begriffen Password und Fishing („Angeln“)

Häufig auch: Gehackte Social Network- oder Instant Messaging-

Profile von Freunden und Bekannten Unseriöse Smartphone-Apps (z.B. Onlinebanking-Apps)

[Mischung aus Malware und Phishing]

Smartphones besonders anfällig, da Webbrowser und E-Mail-Clients noch nicht so ausgereift sind

11.04.23Sicherheit in Webanwendungen - Christian

Benz 4

[1]

Page 5: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Phishing Spear-Phishing beschreibt den gezielten

Angriff gegen ein bestimmtes Opfer

Pharming ist eine Methode, um Benutzer auf eine gefälschte Webseite (trotz korrekter URL) umzuleiten

Um eine alphanumerische URL aufzulösen kontaktiert das Betriebssystem normalerweise einen DNS-Server

Allerdings besitzt jedes OS auch eine interne Liste (hosts-Datei) in die das Betriebssystem zuerst schaut, ob der Name schon gelistet ist

11.04.23Sicherheit in Webanwendungen - Christian

Benz 5

Page 6: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Phishing Phishing muss nicht immer durch so

genannte „Phishing Mails“ vollzogen werden

Durch Trojanische Pferde, Keylogger etc. kann auch gezieltes Phishing betrieben werden

Dem Phishing dienen 0,57 % aller Spam-Mails

Bei ungefähr 220 Mrd. Spam-Mails pro Tag sind dies allerdings

ca. 1,2 Milliarden Phishing-Mails

11.04.23Sicherheit in Webanwendungen - Christian

Benz 6

[2]

Page 7: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Phishing

11.04.23Sicherheit in Webanwendungen - Christian

Benz 7

[3]

Page 8: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Phishing

11.04.23Sicherheit in Webanwendungen - Christian

Benz 8

Top 10Länder in denen Phishing-Seiten betrieben werden (2010)

Quelle: http://www.antiphishing.org/reports/apwg_report_Q1_2010.pdf

Page 9: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Phishing

11.04.23Sicherheit in Webanwendungen - Christian

Benz 9

Quelle: http://www.antiphishing.org/reports/apwg_report_Q1_2010.pdf

Page 10: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

11.04.23Sicherheit in Webanwendungen - Christian

Benz 10

Quelle: Kaspersky

Page 11: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

PhishingBeispiel aus der Realität

Tunesien 2011

Die tunesische staatliche Internetagentur ATI soll flächendeckend Passwörter für Konten bei Facebook, Gmail und Yahoo gesammelt haben

Dies diente hauptsächlich dazu, Regimekritiker zu überwachen und geplante Protestaktionen frühzeitig zu unterbinden

11.04.23Sicherheit in Webanwendungen - Christian

Benz 11

[4]

Page 12: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Schutz vor Phishing Browser-Erweiterungen und E-Mail-

Clients schützen(Phishing-Hinweis)

Anti-Viren-Software mit Phishingschutz Suchmaschinen warnen zum Teil JavaScript bei E-Mails deaktivieren Augen offen halten!

11.04.23Sicherheit in Webanwendungen - Christian

Benz 12

[5]

Page 13: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site Scripting-Reflexives XSS-Persistentes XSS-Lokales XSSDirectory TraversalSQL InjectionFazit

Cross-Site Scripting (XSS)Manipulation auf dem Server

durch Script-Code in den URL-Parametern

Man unterscheidet unter 3 Arten: Reflexives XSS Persistentes XSS Lokales XSS (DOM-basiert)

11.04.23Sicherheit in Webanwendungen - Christian

Benz 13

Page 14: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site Scripting-Reflexives XSS-Persistentes XSS-Lokales XSSDirectory TraversalSQL InjectionFazit

Reflexives Cross-Site Scripting

11.04.23Sicherheit in Webanwendungen - Christian

Benz 14

[6]

Page 15: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site Scripting-Reflexives XSS-Persistentes XSS-Lokales XSSDirectory TraversalSQL InjectionFazit

Persistentes Cross-Site Scripting

11.04.23Sicherheit in Webanwendungen - Christian

Benz 15

[7]

Page 16: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site Scripting-Reflexives XSS-Persistentes XSS-Lokales XSSDirectory TraversalSQL InjectionFazit

Lokales Cross-Site Scripting

11.04.23Sicherheit in Webanwendungen - Christian

Benz 16

[8]

Page 17: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Schutz vor Cross-Site Scripting

Für Webseitenbetreiber: „Schwarze Liste“ mit ungültigen Parametern

(nicht immer aktuell)

„Weiße Liste“ mit allen erlaubten Parametern (beste Lösung)

In Benutzereingaben <SCRIPT> nicht zulassen

Schutz vor lokalem XSS ist nicht so einfach, weil Benutzereingaben nicht serverseitig geprüft werden können

Für Webseitenbesucher: Es gibt auch hierfür wieder Browser-

Erweiterungen

JavaScript und ähnliches deaktivieren

11.04.23Sicherheit in Webanwendungen - Christian

Benz 17

Page 18: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Directory TraversalBeschreibt den Zugriff auf

Dateien und Verzeichnisse durch Manipulation der Pfadangaben

Ein wichtiger Bestandteil eines Directory Traversal-Angriffs ist der Einsatz von ../ durch den der Angreifer eine Verzeichnisebene nach oben gehen kann.

11.04.23Sicherheit in Webanwendungen - Christian

Benz 18

Page 19: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Directory TraversalBeispiel

Man betrachte folgende URL:

http://www.example.com/index.foo?item=datei1.html

Wenn man nun die Parameter wie folgt abändert…

http://www.example.com/index.foo?item=../../../Config.sys

…erhält man Zugang zu nicht erlaubten Pfaden und Dateien.

11.04.23Sicherheit in Webanwendungen - Christian

Benz 19

Page 20: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Directory TraversalBeispiel

Weitere Beispiele:

http://www.example.com/index.foo?item=../../../Windows/System32/cmd.exe?/C+dir+C:\

http://www.example.com/showimage.foo?item=bild1.jpg

http://www.example.com/showimage.foo?item=bild3.jpg

Es gibt bild1.jpg und bild3.jpg Gibt es auch eine Datei bild2.jpg?

11.04.23Sicherheit in Webanwendungen - Christian

Benz 20

Page 21: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Schutz vor Directory Traversal

Blockieren aller Vorkommen der Zeichenkette ../

Das gilt auch für die URI-Prozentkodierung %2e%2e%2f

Verwendung der PHP-Funktionen realpath(), basename(), dirname() und pathinfo()

11.04.23Sicherheit in Webanwendungen - Christian

Benz 21

Page 22: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

SQL Injection Bezeichnet das Injizieren von

schadhaftem SQL-Code durch Benutzereingaben in Formularfeldern, Cookies, etc.(in Eingabefeldern oder per Parameter)

Es gibt mehrere Arten der Injektion: Eingabefelder Cookies Sessionwerte usw.

11.04.23Sicherheit in Webanwendungen - Christian

Benz 22

Page 23: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

SQL Injection Es gibt mehrere

Angriffsmöglichkeiten Zugriff auf Daten, für die keine

Berechtigung vorhanden ist. Veränderung von Daten in der Datenbank Root Status (Passwortänderung vom root-

Benutzer) Einrichten einer Shell auf dem

Datenbankserver

11.04.23Sicherheit in Webanwendungen - Christian

Benz 23

Page 24: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

SQL InjectionBeispiel

SQL-Befehl um ein Userpasswort zu ändern:

$query = "UPDATE usertable SET pwd='$pwd' WHERE uid='$uid';";

Nun übergibt man als Username:

' or uid like'%admin%'; --

Und erhält folgenden Befehl:

$query = "UPDATE usertable SET pwd='...' WHERE uid='' or uid like '%admin%'; --";

Wegen der OR-Verknüpfung ist diese Abfrage in jedem Fall wahr.Das Admin-Passwort wurde geändert.

11.04.23Sicherheit in Webanwendungen - Christian

Benz 24

wird ignoriert

Page 25: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

SQL InjectionBeispiel

SELECT email, passwd, login_id, full_nameFROM membersWHERE email = ‘$eingabe’;

SELECT email, passwd, login_id, full_nameFROM membersWHERE email = 'x'; DROP TABLE members; --';

Löscht die komplette members-Tabelle

SELECT email, passwd, login_id, full_nameFROM membersWHERE email = 'x'; INSERT INTO members ('email','passwd','login_id','full_name') VALUES (‘[email protected]',‘password123',‘baduser',‘Mad Man');--';

Legt einen neuen Benutzer namens baduser an

11.04.23Sicherheit in Webanwendungen - Christian

Benz 25

Page 26: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

SQL InjectionBeispiel aus der Realität

Im Februar 2009 schafften es türkische Hacker auf der US-amerikanischen Homepage von Kaspersky (http://usa.kaspersky.com/) Kundendaten, wie E-Mail-Adressen, und Produktaktivierungskeys per SQL Injection auszulesen.

30 Minuten nach Bekanntwerden des Sicherheitslecks wurde dieses Problem behoben.

Allerdings kann man daraus die Lehre ziehen, dass selbst Sicherheitsexperten nicht immer dagegen gefeilt sind.

11.04.23Sicherheit in Webanwendungen - Christian

Benz 26

[9]

Page 27: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

11.04.23Sicherheit in Webanwendungen - Christian

Benz 27

[6]

Page 28: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Schutz vor SQL Injection

Auf Applikationsseite:

Validierung der Benutzereingaben Filterung: nur erlaubte Zeichen in Eingabefeldern zulassen

(Regular Expression) Single Quote (') bei allen Benutzereingaben verwenden, auch

bei numerischen Angaben Fehlermeldungen mit wenigen Informationen (am besten nur

eine Fehler-ID und keine SQL-Fehler) Längeneinschränkungen für Parameter

Im PHP-Skript mysql_query() verwenden. Dieses lässt nur eine SQL-Anweisung auf einmal zu.So etwas ist nun nicht mehr möglich:

SELECT email, passwd, login_id, full_nameFROM membersWHERE email = 'x'; DROP TABLE members; --';

11.04.23Sicherheit in Webanwendungen - Christian

Benz 28

Page 29: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Schutz vor SQL Injection

Auf Datenbankseite:

Sinnvolle Rechtevergabe z.B. DB-User für Login erhält keine Schreib- und Löschrechte DB-User für Registrierung erhält keine Löschrechte usw.

mysql_connect("localhost","root", "d73ube3d893");

Strenge Typisierung Nummerische Werte wie Sitzungs-Ids oder Postleitzahlen als ganze Zahlen und nicht als Strings

Stored Procedures verwenden Hierdurch werden dem Benutzer nur die Möglichkeiten gegeben, die der Entwickler auch

vorgesehen hat.

11.04.23Sicherheit in Webanwendungen - Christian

Benz 29

Page 30: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

SQL Injection + Cross-Site Scripting

Demonstration

11.04.23Sicherheit in Webanwendungen - Christian

Benz 30

[7]

Page 31: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

FazitMit den hier vorgestellten

Schutzmechanismen lassen sich die gröbsten Sicherheitslücken eventuell vermeiden

Eine Garantie für absolute Sicherheit gibt es nicht

Man hat gesehen, dass selbst Experten, wie Kaspersky, Probleme kriegen können

Eine gesunde Paranoia entwickeln

11.04.23Sicherheit in Webanwendungen - Christian

Benz 31

Page 32: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenQuellen Quellen:

[1] http://www.geekyplanet.com/2010/03/31/phishing/ [2] http://

www.absolit-blog.de/studien/220-milliarden-e-mails-pro-tag.html

[3]http://de.academic.ru/dic.nsf/dewiki/1105247http://www.customvinyldecalsnstickers.com/cute_skull.gif

[4] http://www.sueddeutsche.de/politik/proteste-in-tunesien-von-der-strasse-ins-netz-1.1046518

[5] http://de.wikipedia.org/wiki/Phishing [6],[7],[8] http://

www.h-online.com/security/features/Web-application-security-747201.html

[7] http://www.cix-blog.de/thm/Undichte-SQL-Injection-auf-Kaspersky-Website

SQL Injection-Bildhttp://www.mygeekpal.com/208/sanitizing-variables-in-php-without-regular-expressions/http://network-tutorial.com/wp-content/uploads/2010/01/sql-injection.jpg

[7] http://www.msc-computer.com/Computer_1.jpg11.04.23

Sicherheit in Webanwendungen - Christian Benz 32

Page 33: Christian Benz 23.01.2014 Sicherheit in Webanwendungen - Christian Benz 1.

Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit

Vielen Dank für die Aufmerksamkeit!

Fragen?

11.04.23Sicherheit in Webanwendungen - Christian

Benz 33