Christian Benz
11.04.23Sicherheit 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
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
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]
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
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]
Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit
Phishing
11.04.23Sicherheit in Webanwendungen - Christian
Benz 7
[3]
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
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
Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit
11.04.23Sicherheit in Webanwendungen - Christian
Benz 10
Quelle: Kaspersky
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]
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]
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
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]
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]
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]
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
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
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
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
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
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
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
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
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
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]
Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit
11.04.23Sicherheit in Webanwendungen - Christian
Benz 27
[6]
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
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
Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit
SQL Injection + Cross-Site Scripting
Demonstration
11.04.23Sicherheit in Webanwendungen - Christian
Benz 30
[7]
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
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
Arten von SicherheitsrisikenÜbersichtPhishingCross-Site ScriptingDirectory TraversalSQL InjectionFazit
Vielen Dank für die Aufmerksamkeit!
Fragen?
11.04.23Sicherheit in Webanwendungen - Christian
Benz 33