Verteidigung gegen SQL Injection Attacks



Ähnliche Dokumente
6.9 Java Server Pages

OP-LOG

SQL-Injection. Seite 1 / 16

Datenbanken auf Sybase SQL-Anywhere

Oracle: Abstrakte Datentypen:

IV. Datenbankmanagement

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel Michael Kluge (michael.kluge@tu-dresden.

Informationstechnik & System-Management SQL INJECTION. Selbstgemachte Sicherheitslücken. SQL-Injection ITSB2006 Michael Donabaum

Hacker-Methoden in der IT- Sicherheitsausbildung. Dr. Martin Mink

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

Inhaltsverzeichnis. Beschreibung. Hintergrund

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Referenzielle Integrität SQL

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Grundlagen der Informatik 2

Sicherheit in Webanwendungen CrossSite, Session und SQL

Typo 3 installieren. Schritt 1: Download von Typo3

Datenbanksysteme SS 2007

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

Loggen Sie sich in Ihrem teamspace Team ein, wechseln Sie bitte zur Verwaltung und klicken Sie dort auf den Punkt Synchronisation.

Business-Rule-Management als Instrument des Software-Reengineering

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Anleitung öffentlicher Zugang einrichten

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Verteidigung gegen SQL-Injection-Angriffe

SEMINAR Modifikation für die Nutzung des Community Builders

Interaktive Webseiten mit PHP und MySQL

Verbinden von IBM Informix mit Openoffice mittels JDBC

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Der vorliegende Konverter unterstützt Sie bei der Konvertierung der Datensätze zu IBAN und BIC.

Anleitung Grundsetup C3 Mail & SMS Gateway V

Updatehinweise für die Version forma 5.5.5

RGS Homepage Arbeiten im Administratorbereich (Backend)

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Autoresponder Unlimited 2.0

Kurzanleitung des Netzwerk Video Rekorders

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Erstellen eines Formulars

JDBC. Allgemeines ODBC. java.sql. Beispiele

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Oracle APEX Installer

Anleitung Jahreswechsel

SQL Injection Funktionsweise und Gegenmaßnahmen

PC Software PPS-FM11 Windows Auswertung und Monitor BDE Betriebsdatenerfassung mit Terminals, RFID und SQL Client

Datensicherung. Mögliche Vorgehensweisen:

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

HVS32 Datenbank Archivierungs Dienst

Daten Sichern mit dem QNAP NetBak Replicator 4.0

Anlegen eines DLRG Accounts

SharePoint Demonstration

Session Management und Cookies

DOKUMENTATION ky2help V 3.6 Servertests

Datenmanagement in Android-Apps. 16. Mai 2013

BACHER Informatik - we do IT Alte Gasse 1, CH-6390 Engelberg Telefon info@hostdomain.ch

Anleitung Team-Space Einladung Annehmen. by DSwiss AG, Zurich, Switzerland V

Datenbanken. Ein DBS besteht aus zwei Teilen:

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Sophia Business Leitfaden zur Administration

ModeView Bedienungsanleitung

Kleines Handbuch zur Fotogalerie der Pixel AG

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Sicherheit von Webapplikationen Sichere Web-Anwendungen

Sicherheit von PDF-Dateien

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

MSSQL Server Fragen GridVis

Fehlermonitor. Software zur seriellen Verbindung PC-Airdos Visualdatensignale und Fehlermeldungen-Ausagabe per SMS / Drucker

Brainloop Dox Häufig gestellte Fragen

RIGGTEK. Dissolution Test Systems. DissoPrep Browser-Interface

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

telpho10 Update 2.1.6

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

- Einstellungen. Microsoft Outlook Express. 2. Geben Sie hier die -Adresse ein.

ACCOUNTINFO 1.01 VERWENDEN DER ACCOUNTINFO-SCHNITTSTELLE ABFARGE VON ACCOUNT-INFORMATIONEN IN ECHTZEIT 02. MÄRZ 2010

Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010

Einfügen von Bildern innerhalb eines Beitrages

Schwachstellenanalyse 2012

Planung für Organisation und Technik

Fusion 2015 Änderungen Ihres Zahlungverkehrsprogrammes VR-Networld

Man liest sich: POP3/IMAP

Serviceanweisung Austausch Globalsign Ausstellerzertifikate

Anleitung zur Anmeldung beim EPA zur Nutzung von OPS 3.1

TECHNISCHE INFORMATION LESSOR LOHN/GEHALT BEITRAGSNACHWEIS-AUSGLEICH BUCH.-BLATT MICROSOFT DYNAMICS NAV

Dieses Dokument soll dem Administrator helfen, die ENiQ-Software als Client auf dem Zielrechner zu installieren und zu konfigurieren.

Sophia Business Leitfaden zur Administration

End User Manual EveryWare SPAM Firewall

Benutzerhandbuch. bintec elmeg GmbH. Benutzerhandbuch. be.ip. Workshops. Copyright Version 1.0, 2015 bintec elmeg GmbH

Informatik 12 Datenbanken SQL-Einführung

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Übung - Datensicherung und Wiederherstellung in Windows 7

Einleitung: Frontend Backend

Betroffene Produkte: Alle Versionen von Oracle Forms (3.0-10g, C/S und Web), Oracle Clinical, Oracle Developer Suite

INSTALLATIONSANLEITUNG der Version 2.1 (Jänner 2014)

Softwaren Engineering I

Transkript:

Verteidigung gegen SQL Injection Attacks Semesterarbeit SS 2003 Daniel Lutz danlutz@watz.ch 1

Inhalt Motivation Demo-Applikation Beispiele von Attacken Massnahmen zur Verteidigung Schlussfolgerungen 2

Motivation Aktuelles Problem Web-Applikationen Allgemein: Datenbank-basierte Applikationen Auch kommerzielle Applikationen/Frameworks betroffen Beispiel: Xpressions Software: Multiple SQL Injection Attacks To Manage WebStore (Juni 2003) Ziele der Semesterarbeit Problem-Analyse "Anleitung" zur Entwicklung einer sicheren Applikation Framework: Java-Klassen zur Unterstützung 3

Demo-Applikation Praktischer Nachvollzug der Attacken 2 Versionen: unsichere Version sichere Version Message Board Architektur: Java 2 Enterprise Edition (J2EE) JSP, JavaBeans HSQL Database Engine (HSQLDB) 4

Beispiele von Attacken (1) Authentifizierung: Felder: username password 5

Beispiele von Attacken (1) Authentifizierung: authenticate.jsp: 6

Beispiele von Attacken (1) Authentifizierung: SELECT * FROM users WHERE username = $ username AND password = $ password username: (leer) password: or = SELECT * FROM users WHERE username = AND password = or = Bedingung des Statements ist für alle Datensätze erfüllt! ResultSet enthält alle Datensätze, der erste Datensatz wird verwendet. 7

Beispiele von Attacken (2) Beliebiger SQL-Code: showmsg.jsp: SELECT * FROM messages WHERE messageid = $ messageid Tabelle löschen: Ursprünglicher URL: https://localhost:8443/insecure/showmsg.jsp?messageid=1 URL mit SQL-Injection: https://localhost:8443/insecure/showmsg.jsp?messageid=1;drop+table+users SELECT * FROM messages WHERE messageid = 1;drop table users Tabelle users wird gelöscht! 8

Weitere Attacken Nur 2 Beispiele von mehreren möglichen Attacken. Weitere Attacken: Einloggen als spezifischer Benutzer Daten einfügen Datenbank-Konto erstellen Daten anzeigen Systemvariablen anzeigen Tabellenstruktur ermitteln... (Vgl. Semesterarbeit) 9

Massnahmen zur Verteidigung 1. Überprüfung der Eingabewerte 2. Prepared Statements 3. Auslagerung der Business-Logik in Beans 4. Spezielles Konto für Datenbankzugriff 5. Passwörter nicht als Plaintext speichern 6. Fehlermeldungen vermeiden 7. Code-Review Defence in Depth 10

1. Überprüfung der Eingabewerte String, Zahl (Integer, Float), Datum Regular Expressions (Einschränkung der zulässigen Werte) Hilfsmittel: Verifier-Klassen für String, Integer, Float und Date String username = request.getparameter("username"); StringVerifier usernameverifier = new StringVerifier(username, "[a-za-z0-9]+", true); if (!usernameverifier.verify()) // error try username = usernameverifier.stringvalue(); catch (VerifierException e) // error 11

2. Prepared Statements Daten nicht direkt in SQL-Code einbetten Daten separat an Datenbank-Server senden Überprüfung der Datentypen durch Datenbank-Server String sql = "SELECT * FROM users" + " WHERE username =?" + " AND password =?"; PreparedStatement ps = conn.preparestatement(sql); ps.setstring(1, username); ps.setstring(2, passworddigest); ResultSet rs = ps.executequery(); Daten werden als Zeichenkette/Zahl, nicht als SQL-Code interpretiert Typen-Fehler werden vom Datenbank-Server erkannt 12

3. Auslagerung der Business-Logik in Beans Trennung von Business-Logik und Präsentation Schutz vor Fehlkonfiguration des Application-Servers (Anzeige des Quellcodes) authenticate.jsp authenticate.jsp, UserAuthenticator.java 13

4. Spezielles Konto für Datenbankzugriff Konto mit möglichst wenigen Rechten Konto darf nur Datensätze lesen, einfügen, ändern und löschen können Konto darf keine Tabellen löschen können! Konto darf keine Benutzer erstellen können! etc. Statt Konto sa z. B. Konto messageboard. Für jede Applikation eigenes Konto (Applikation funktioniert mit sa, Massnahme bringt aber zusätzliche Sicherheit.) 14

5. Passwörter nicht als Plaintext speichern Schutz, falls Passwörter gelesen werden können Zwei Möglichkeiten: Passwörter als Hash speichern (z. B. SHA) Passwörter verschlüsseln (reversibel) Hilfsklasse: PasswordDigest // calculate SHA digest String passworddigest; try passworddigest = PasswordDigest.calculateDigest(password); catch (NoSuchAlgorithmException e) // error secret e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4 15

6. Fehlermeldungen vermeiden Exceptions falls möglich abfangen Eigene Fehler-Seite anzeigen Informationen über Anwendungslogik verbergen web.xml:...... <error-page> <exception-type>java.lang.throwable</exception-type> <location>/error.jsp</location> </error-page> 16

7. Code-Review Durchsicht des Codes durch anderen Entwickler Übersehene Probleme können entdeckt werden Keine technische, sondern organisatorische Massnahme. 17

Schlussfolgerungen Zentral: Überprüfung der Eingabewerte Kein Verlass auf nur eine Massnahme Verkettung Die meisten Massnahmen können auf beliebigen Systemen angewendet werden (ASP.NET, PHP, CGI, C, C++,...). Signifikante Unterschiede zwischen Datenbanken und -Treibern verschiedener Produkte Demo-Applikation dient als Illustration und zu Ausbildungszwecken Details: schriftliche Arbeit 18