SQL-Injection. Seite 1 / 16



Ähnliche Dokumente
Thema: SQL-Injection (SQL-Einschleusung):

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 6: Datenbankabfragen mit SQL und PHP. Stand: Übung WS 2014/2015

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Informatik 12 Datenbanken SQL-Einführung

Abfragen: Grundbausteine

Internationales Altkatholisches Laienforum

Hinweise zur Installation von MySQL

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Informatik für Ökonomen II Übung 0

Professionelle Seminare im Bereich MS-Office

Benutzerhandbuch - Elterliche Kontrolle

Bedienung des Web-Portales der Sportbergbetriebe

Umzug der Datenbank Firebird auf MS SQL Server

Hilfedatei der Oden$-Börse Stand Juni 2014

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Software- und Druckerzuweisung Selbstlernmaterialien

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Pfötchenhoffung e.v. Tier Manager

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

IV. Datenbankmanagement

Adminer: Installationsanleitung

5. Übung: PHP-Grundlagen

Workflows verwalten. Tipps & Tricks

Lehrer: Einschreibemethoden

Datenbanken. Ein DBS besteht aus zwei Teilen:

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Anleitung zur KAT-Datenbank Qualitrail Eingabe Futtermittel

Interaktive Webseiten mit PHP und MySQL

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Schnittstellenbeschreibung SMS Gateway Internext GmbH

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

Datenbanken für Online Untersuchungen

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

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

DB2 Kurzeinführung (Windows)

Zugriff auf Daten der Wago über eine Webseite

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

Beispiele für Datenbank-Struktur-Probleme

ecaros2 - Accountmanager

Kurzübericht der implementierten Funktionen der Fachinformatiker -== Info Datenbank ==-

7. Übung - Datenbanken

SQL - Übungen Bearbeitung der Datenbank Personal (1)

SEMINAR Modifikation für die Nutzung des Community Builders

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

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

Administrator-Anleitung

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Erstellen von x-y-diagrammen in OpenOffice.calc

Internet online Update (Mozilla Firefox)

Handbuch für Redakteure

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

Installation SPSS Netzwerkversion (Mac)

Anleitung für die Einrichtung weiterer Endgeräte in 4SELLERS SalesControl

Unigraphics Schnittstelle entfernen

Angreifbarkeit von Webapplikationen

Kurzer Leitfaden für den Einstieg in PayComm

Das DAAD-PORTAL. Prozess der Antragstellung in dem SAPbasierten Bewerbungsportal des DAAD.

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

8 Access-Abfragen migrieren

MS Access 2010 Kompakt

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Erstellen einer Datenbank. Datenbankabfragen

Installations-Hilfe. blue office Version 3.5

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

teamsync Kurzanleitung

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Um die Rücklagen ordnungsgemäß zu verbuchen, ist es wichtig, Schritt-für-Schritt vorzugehen:

MIN oder MAX Bildung per B*Tree Index Hint

BEDIENUNG ABADISCOVER

Anleitung zum LPI ATP Portal

Dokumentenverwaltung im Internet

Eingangsseite Umwelt-online

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

Erster Schritt: Antrag um Passwort (s. Rubrik -> techn. Richtlinien/Antrag für Zugangsberechtigung)

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

netdocx Virtuelles Prüfbuch

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

Antolin-Titel jetzt automatisch in WinBIAP kennzeichnen

Kurzeinführung Excel2App. Version 1.0.0

Bedienungsanleitung. HABA-Produktgenerator. für unsere Kunden und Interessenten

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Vorgestellt vom mexikanischen Rat für Fremdenverkehr

MindReader Aktivierung auf neuen Rechner übertragen

Umleiten von Eigenen Dateien per GPO

D a s P r i n z i p V o r s p r u n g. Anleitung. - & SMS-Versand mit SSL (ab CHARLY 8.11 Windows)

Projektmanagement in Outlook integriert

Datenbanken Kapitel 2

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Transkript:

SQL-Injection Seite 1 / 16

Allgemein: SQL (Structured Query Language) Datenbanksprache zur Definition von Datenstrukturen in Datenbanken Bearbeiten und Abfragen von Datensätzen Definition: SQL-Injection Ausnutzen einer Sicherheitslücke in SQL-DATENBANKEN Möglich durch mangelnde Überprüfung von Metazeichen in Benutzereingaben Seite 2 / 16

Crashkurs: SQL-Syntax SELECT: SELECT {SPALTE} FROM {TABELLE} WHERE {Variablen} UNION: SELECT...UNION SELECT... ORDER BY: SELECT {SPALTE} ORDER BY {SPALTE} INFORMATION_SCHEMA: ab MySQL-Version 5 = Informations-DB, welche sämtliche Tabellen-Infos enthält Interessante Felder: table_name, column_name Allgemeine MySQL-Funktionen: version(), database(), user() Seite 3 / 16

Angriffsvektoren (Angriffswege): Eindringen von Schadcode üblicherweise über Nutzereingaben in die Anwendung. Angreifer versucht eigenen SQL-Code in vorhandene DB-Abfragen einzufügen um neue SQL-Befehle zu erzeugen. Möglich durch Ausnutzung von Programmschwächen: Werteübergabe ohne umschließende Hochkommas Fehlende Typenprüfung der Werte Fehlende Längenprüfung der Werte Fehlende Maskierung von Sonderzeichen Seite 4 / 16

Angriffsformen Seite 5 / 16

Logische Verknüpfungen ändern: Username und password werden über ein Formular entgegengenommen und mit den DB-Inhalten abgeglichen. Angriff über Forumulareingabe: Seite 6 / 16

Die Abfrage, die an MySQL übermittelt wird, lautet nach der Injizierung des Schadcodes: => Das Ergebnis der OR-Verknüpfung ist WAHR. Da OR vor AND ausgewertet wird, lautet die Abfrage somit: Sie ist WAHR, sofern ein Nutzer admin existiert und liefert den entsprechenden Datensatz. Seite 7 / 16

Teilabfragen entfernen: Teile der SQL-Abfrage können durch Einfügen von Kommentarzeichen sogar komplett aus der Ausführung entfernt werden. Diese Nachricht zeigt auf einer Webseite Pressenachrichten an. Bestimmte Nachrichten können gesperrt bzw. freigegeben werden (mittels DB-Spalte freigabe ). Falls der Angreifer vermutet, dass die Datumsangaben direkt in eine SQL-Abfrage eingefügt werden, könnte er folgende Anfrage an das Skript senden: Seite 8 / 16

Wird das Datum ungeprüft übernommen, ändert sich durch diese Eingabe die Datenbankabfrage wie folgt: Die Zeichengruppe (/*) bedeutet in der MySQL-Syntax einen Kommentar-Anfang. Daher wird der folgende SQL-Code nicht weiter beachtet. Eine weitere Möglichkeit um einzelne Zeilen zu kommentieren ist der doppelte Bindestrich ( ). Seite 9 / 16

Zusätzliche Abfragen: Die MySQL-Datenbank unterstützt keine multiplen Queries, sprich es können immer nur einzelne Befehle abgearbeitet werden. Durch das Kommando UNION können über den eigentlichen Befehl weitere Anfragen abgesetzt werden. Das Problem dabei ist, dass der Angreifer eine Vorstellung von der Struktur der Datenbank haben muss. Oft werden hier Standard-Tabellennamen probiert, oder via INFORMATION_SCHEMA (ab MySQL V 5.0) entsprechende Daten gezielt abgerufen. Hier ist ID die Schwachstelle, da diese dynamisch abgefragt wird. Seite 10 / 16

Der Angreifer kann nun mit dem UNION-Befehl eine weiter Tabelle anfragen und gegebenenfalls auslesen. Der Angreifer erhält als Antwort eine Liste mit Usernamen und Passwörtern, die danach möglicherweise durch eine Rainbow- Table* wieder in Klartext entschlüsselt werden könnten. *Spezielle Datenstruktur, die eine schnelle Suche nach einem Passwort anhand eines gegebenen Hashwerts ermöglicht. Seite 11 / 16

Durch den UNION-Befehl wird hier eine Menge der beiden SELECT- Anweisungen gebildet, was bedeutet, dass keine News aber dafür alle Usernamen und Passwörter aus der Tabelle mysql.user als Antwort vom Server zu erwarten sind. Anschliesende Befehle werden durch das /* einfach auskommentiert. Seite 12 / 16

Datenbankprozesse beeinflussen: Das SQL-Kommando BENCHMARK ermöglicht es zu ermitteln wie schnell eine bestimmte SQL-Anfrage behandelt wird. Um den Befehl einzuschleusen benutzen wir wieder das bereits bekannt UNION Kommando. Durch folgende Ergänzung wird der der BENCHMARK auf dem SQL-Server ausgeführt: Seite 13 / 16

Hier wird der der Server angewiesen 1 Millionen mal den MD5-Hash des Buchstaben 'A' zu berechnen. => Durch mehrere Angriffe dieser Art wäre es möglich, dass der MySQL-Server andere Anfragen nicht mehr bearbeitet. Der fertige SQL-Befehl sieht wie folgt aus: Diese Funktion könnte von einem Angreifer verwendet werden um einen Server lahmzulegen (DoS: Denial of Service) Seite 14 / 16

Quellenangaben: Wikipedia: SQL-Injection http://de.wikipedia.org/wiki/sql-injection Erich Kachel: SQL-Injections - eine Analyse an PHP & MySQL http://www.erich-kachel.de/?p=223 Ali Recai Yekta: Advanced SQL-Injection in MySQL http://www.alirecaiyekta.com/uploads/advanced-sql-injectionin-mysql-german.pdf Seite 15 / 16

ENDE Seite 16 / 16