330 likes | 476 Views
Sicherheit in Webanwendungen. Christian Benz. Inhalt. Arten von Sicherheitsrisiken Phishing Cross-Site Scripting Directory Traversal SQL-Injection Demonstration SQL-Injection Demonstration Cross-Site Scripting Fazit. Arten von Sicherheitsrisiken. Übersicht Phishing
E N D
Sicherheit in Webanwendungen Christian Benz Sicherheit in Webanwendungen - Christian Benz
Inhalt Arten von Sicherheitsrisiken Phishing Cross-Site Scripting Directory Traversal SQL-Injection Demonstration SQL-Injection Demonstration Cross-Site Scripting Fazit Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • Phishing • Der moderne „Enkeltrick“ • Cross-Site Scripting • Es lebe Web 2.0 • Directory Traversal • Das kann doch noch nicht alles sein… • SQL Injection • Code einbinden leicht gemacht Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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 [1] Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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 Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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 [2] Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • Phishing [3] Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • Phishing Top 10Länder in denen Phishing-Seiten betrieben werden (2010) Quelle: http://www.antiphishing.org/reports/apwg_report_Q1_2010.pdf Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • Phishing Quelle: http://www.antiphishing.org/reports/apwg_report_Q1_2010.pdf Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit Quelle: Kaspersky Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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 [4] Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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! [5] Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Reflexives XSS Persistentes XSS Lokales XSS Directory Traversal SQL Injection Fazit • 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) Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Reflexives XSS Persistentes XSS Lokales XSS Directory Traversal SQL Injection Fazit • Reflexives Cross-Site Scripting [6] Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Reflexives XSS Persistentes XSS Lokales XSS Directory Traversal SQL Injection Fazit • Persistentes Cross-Site Scripting [7] Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Reflexives XSS Persistentes XSS Lokales XSS Directory Traversal SQL Injection Fazit • Lokales Cross-Site Scripting [8] Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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 Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • Directory Traversal • Beschreibt 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. Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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. Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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? Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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() Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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. Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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 Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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. wird ignoriert Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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 (‘baduser@test.net',‘password123',‘baduser',‘Mad Man');--'; Legt einen neuen Benutzer namens baduseran Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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 Produktaktivierungskeysper 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. [9] Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit [6] Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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; --'; Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • 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 • StoredProcedures verwenden • Hierdurch werden dem Benutzer nur die Möglichkeiten gegeben, die der Entwickler auch vorgesehen hat. Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • SQL Injection + Cross-Site Scripting Demonstration [7] Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit • Fazit • Mit 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 Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Quellen • 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.jpg Sicherheit in Webanwendungen - Christian Benz
Arten von Sicherheitsrisiken Übersicht Phishing Cross-Site Scripting Directory Traversal SQL Injection Fazit Vielen Dank für die Aufmerksamkeit! Fragen? Sicherheit in Webanwendungen - Christian Benz