Erkennung von Datenbank- Angriffen über Webserver und automatische Gegenmaßnahmen (am Beispiel von einer Oracle RDBMS)

Ähnliche Dokumente
SW-Entwurf von selbstverteidigenden Systemen

<Insert Picture Here> Security-Basics. Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update. Carsten Czarski, ORACLE Deutschland B.V. Co.

Username and password privileges. Rechteverwaltung. Controlling User Access. Arten von Rechten Vergabe und Entzug von Rechten DBS1 2004

Übung PL/SQL Trigger Lösungen

Entwicklungsumgebung für die Laborübung

DOAG Regional-Treffen München

Individuelles Auditing von vielen Datenbanken

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

NoSQL mit Postgres 15. Juni 2015

Neue Features Oracle Database 12.2 Wann denn endlich?

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

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

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

XML in der Oracle Datenbank

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #6. SQL (Teil 4)

Entwicklungsumgebung für die Laborübung

Datenbank Rootkits. Alexander Kornbrust 01-April Red-Database-Security GmbH. Alexander Kornbrust, 01-Apr-2005 V1.07 1

SQL and PL/SQL unleashed. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL

Prozedurale Datenbank- Anwendungsprogrammierung

Transaktionen in der Praxis. Dr. Karsten Tolle

Kapitel 14. Objekt-relationales Mapping (ORM) mit Hibernate bzw. Java Persistance API (JPA) Prof. Dr. Wolfgang Weber Vorlesung Datenbanken

Oracle 10g Einführung

Isolationsstufen für Transaktionen. Dr. Karsten Tolle

Erzeugung und Veränderung von Tabellen

Übersicht der wichtigsten MySQL-Befehle

Neuerungen in Marco Patzwahl MuniQSoft GmbH Unterhaching

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

MySQL Queries on "Nmap Results"

Transaktionen in Praxis. Dr. Karsten Tolle Vorl

select DISTINCT Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf - DISTINCT steht dass keine Zeile mehrfach vorkommt

XML in der Oracle Datenbank "relational and beyond"

SQL (Structured Query Language) Schemata Datentypen

Oracle Virtual Private Database

Historisierung und Versionierung

Relationales Datenbanksystem Oracle

XML in Oracle 12c. Wolfgang Nast

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

Informationen protokollieren

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

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

Datenbanken erstellen Liste von Datenbanken anzeigen Datenbanken löschen. MySQL 4, 5. Kapitel 06: Datenbanken. Marcel Noe

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

quick documentation Inhalt Datenmodellierung

QMF Tabelle Q.OBJECT_DATA in DB2

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS XMLType. Christian Senger/Andreas Schmidt XMLType 1/32

1. General information Login Home Current applications... 3

Abfragen (Queries, Subqueries)

Datenschutz: Zugriffsrechte in SQL

Oracle9i Designer. Rainer Willems. Page 1. Leitender Systemberater Server Technology Competence Center Frankfurt Oracle Deutschland GmbH

Kapitel 4 Dynamisches SQL

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

MySQL Installation. AnPr

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Die Datenmanipulationssprache SQL

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

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

Erzeugen von Constraints

Wiederholung VU Datenmodellierung

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Benutzerverwaltung, Sichten und Datenintegrität

Paper: Automated Discovery of Parameter Pollution Vulnerabilities in Web Applications

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

EE SE1 Oracle RDBMS. Andrew Lacy Solution Architect. OPITZ CONSULTING Deutschland GmbH. Foto: Siobhan Bickerdike

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

ODBC-Verbindungen in Oracle-Datenbanken nutzen

Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators

Willkommen. Datenbanken und Anbindung

Geschäftslogik in die Datenbank Umstellung eines Kernbanksystems

Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT

Interaktive Webseiten mit PHP und MySQL

SQL-INJECTIONS. N E T D E V E L O P E R S G R O U P B E R L I N B R A N D E N B U R G,

Oracle Rootkits & Oracle Würmer - neue Bedrohungen für Datenbanken? Alexander Kornbrust 27-September Red-Database-Security GmbH

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

Oracle und.net sind ein populäres Gespann. Doch wie lassen sich Oracle Features mit.net nutzen?

Wählen Sie das MySQL Symbol und erstellen Sie eine Datenbank und einen dazugehörigen User.

Vergessene (?) SQL- und PL/SQL- Funktionen

SQL-Injection in the news Stand: :00

1.1 Datenbankprogramm Oracle für MCIS MDA

Arbeiten mit einem lokalen PostgreSQL-Server

Zeilen in SAS-Datensatz einfügen

Der SAS DataStep und die Prozedur SQL Cellent Finance Solutions GmbH Seite: 1

Oracle SQL Tutorium - Wiederholung DB I -

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Debugging in APEX. Christina Funke Apps Associates GmbH Dortmund

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken.

XML-Datenaustausch in der Praxis Projekt TOMIS bei der ThyssenKrupp Stahl AG

Firebird 2.1 Das freie RDBMS. Robert Dollinger

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel

SQL-Injection. Seite 1 / 16

Oracle 9i Einführung Performance Tuning

Schlafen Sie gut!? - Autodesk Vault System Überwachung

Persistenz. Ralf Gitzel

Transkript:

Erkennung von Datenbank- Angriffen über Webserver und automatische Gegenmaßnahmen (am Beispiel von einer Oracle RDBMS)

Agenda Einführung Typischer Angriff auf einen Webserver Erkennung des SQL Injection Angriffes Gegenmaßnahmen Zusammenfassung

Einführung Webanwendungen werden regelmäßig aus dem Internet angegriffen (erfolgreich/nicht erfolgreich). Eine Vielzahl der Angreifer verwendet dabei automatisierte Werkzeuge, die oft nur geringes Wissen erfordern, aber dennoch extrem schnell durchgeführt werden können. Manuelle Angriffe sind normalerweise etwas langsamer, werden aber mit der identischen Strategie ausgeführt. Im Falle eines Angriffs mit Hilfe eines Werkzeugs können Daten in weniger als 2 Minuten aus der Datenbank extrahiert werden.

Einführung Die folgende Vorgehensweise wird am Beispiel einer Oracle Datenbank gezeigt. Das Konzept kann aber auch in anderen DB Derivaten wie MSSQL oder MySQL (mit Anpassungen) implementiert werden. Wichtig!!! Bei dem hier vorgestellten Konzept ist es NICHT notwendig, die Anwendung/Verfahren anzupassen, da die Lösung für die Anwendung transparent ist.

Typisches Vorgehen bei einem SQL Injection Web Angriff 1. Verwendung eines Tools (z.b. Havij, Netsparker, Matrixay, Pangolin, SQLMap, ), um eine gesamte Webseite zu scannen und SQL Injection Lücke zu finden (via Fehlermeldung) 2. Metadaten sammeln(tabellen, Spalten, Benutzer, ) 3. Tabelleninhalte extrahieren 4. (Privilegien eskalieren)

Vielzahl von (automatischen) SQL Injection Tools existiert

Beispiel 1. SQL Injektion Lücke finden und Exploit erstellen

2. (Meta-)Daten Erheben

3. Daten extrahieren

4. Privilegien eskalieren, Hintertüren einbauen, Entkommen auf das Betriebssystem,...

Und die Daten sind weg (bzw. kopiert)... (oft in weniger als 2 Minuten)

Kann auf einen solchen SQL Injektion Angriff realistisch innerhalb von 2 Minuten reagiert werden?

Jein! Zeit für menschliche Reaktion ist zu langsam Vorgehen bei einem Angriff in der Regel nicht vorab definiert Seiteneffekte auf andere Systeme möglich. Verantwortlicher Manager würde Datenbank nicht abschalten Automatische Reaktion auf den Angriff erlaubt sehr schnelle Reaktionszeiten

Was kann man gegen SQL Injection-Angriffe unternehmen?

Ansatz Ein SQL Injection Angriff besteht aus einer Vielzahl von unterschiedlichen Schritten (Finden einer SQL Injection, Enumeration, Daten abziehen, Privilegien Eskalation). Der Schutz vor diesen Angriffen besteht aus 2 Teilen 1. Erkennung der verschiedenen Stufen eines Angriffs 2. Entsprechende Gegenmaßnahmen, die automatisch ausgeführt werden

Erkennung (Schichten) Die Erkennung eines SQL Injection Angriffs kann auf unterschiedlichen Ebenen stattfinden. Während eine Web Application Firewall (WAF) bzw. der Webserver Angriffe architekturbedingt nur teilweise erkennen kann. Ist die Angriffserkennung in der Datenbank die sinnvollste Option, da man dort SQL Fehler abfangen und interpretieren kann. Dadurch wird die Anzahl der False-Positives fast auf 0 reduziert.

Erkennung von SQL Injection Angriffen Finden von SQL Injection Fehlern (Prio 1) Mit Hilfe eines Error Triggers (Oracle) können für SQL Injection typische Fehler (z.b. Quoted string not properly terminated) gefunden werden Enumeration (Prio 2) Nachdem eine Lücke gefunden und ein Exploit identifiziert wurde, werden nun interessante Daten gesucht. Dabei liest man bspw Tabellen oder Spaltennamen (password, creditcard,...) aus. Solch ein Zugriff wird normalerweise nicht von einer Application ausgeführt, kann aber überwacht werden (z.b. View ALL_TAB_COLUMNS mit Alarm-Funktion) Download Data (Prio 3) Mit sogenannten Honey oder Fake Tables (z.b. myusers) oder entsprechenden Funktionen kann das System erkennen, ob Daten abgezogen werden und auch hier reagieren.

Typischer SQL Injection Angriff I Original SQL Befehl select custname, custid, custorder from customer; Erweiterter SQL Befehl des Angreifers select custname, custid, custorder from customer union select username, null, null from all_users;

Typischer SQL Injection Angriff II http://myserver:8889/reports/rwservlet?report=sqlinject3.rdf+use rid=scott/tiger@ora9206+destype=cache+desformat=html

Typischer SQL Injection Angriff III

Typischer SQL Injection Angriff IV

Typischer SQL Injection Angriff V Typische Fehlermeldung: ERROR at line 1: ORA-01789: query block has incorrect number of result columns è Angreifer fügt so lange NULL Werte hinzu, bis ein korrektes SQL Statement erzeugt wird.

Typischer SQL Injection Angriff VI

SQL Injection Fehler Codes Oracle - I Error code Error Message Typical Command ORA-00900 ORA-00906 ORA-00907 invalid SQL statement missing left parenthesis missing right parenthesis ORA-00911 invalid character e.g. PHP MAGIC_QUOTES_GPC activated and attempt to inject a single quote ORA-00917 ORA-00920 ORA-00923 ORA-00933 ORA-00970 missing comma invalid relational operator FROM keyword not found where expected SQL command not properly terminated missing WITH keyword ORA-01031 insufficient privileges Attempted privilege escalation ORA-01476 divisor is equal to zero Blind SQL Injection attempt (e.g. sqlmap) ORA-01719 outer join operator not allowed in operand of OR or IN ORA-01722 invalid number Enumeration with rownum and current rownum does not exist

SQL Injection Fehler Codes Oracle - II Fehlernr Fehlermeldung Auslöser ORA-01742 comment not properly terminated inline comment, e.g optimizer hint is not properly terminated ORA-01756 quoted not properly terminated single quote not properly ORA-01789 ORA-01790 ORA-24247 query block has incorrect number of result columns expression must have same datatype as corresponding network access denied by access control list terminated Attempt to use UNION SELECT Attempt to use UNION SELECT Oracle ACL has blocked the usage of UTL_INADDR (or similar) ORA-29257 Host %S unknown Attempted SQL Injection via utl_inaddr ORA-29540 Class does not exist Attempted utl_inaddr attempt but Java is not installed ORA-31011 XML parsing failed SQL Injection attempt via xmltype ORA-19202 Error occurred in XML processing SQL Injection via extractvalue

Oracle Error Sample code Download Code: http://www.red-database-security.com/bsi/sqlinjection.zip

CREATE OR REPLACE TRIGGER after_error AFTER SERVERERROR ON DATABASE DECLARE sql_text ORA_NAME_LIST_T; v_stmt CLOB; -- SQL statement causing the problem n NUMBER; -- number of junks for constructing the sql statement causing the error v_program VARCHAR2(64); v_serial number; v_sid number; BEGIN -- Version 1.00 select program,serial#,sid into v_program,v_serial,v_sid from v$session where sid=sys_context('userenv', 'SID'); -- construct the sql text n := ora_sql_txt(sql_text); -- IF n >= 1 THEN FOR i IN 1..n LOOP v_stmt := v_stmt sql_text(i); END LOOP; END IF; -- FOR n IN 1..ora_server_error_depth LOOP

IF (lower(v_program) = 'iis.exe') -- add your own application server and (ora_server_error(n) in ('942','900','906','907','911','917','920','923','933','970','1031','1476','1719','1722','1742','1756','17 89','1790','19202','24247','29257','29540','31011')) THEN -- Potential attack was detected -- 1. Angriff mitloggen -- 2. Email an Verantwortlichen versenden (DBA/MoD) -- send_email (e.g. via utl_smtp ) -- 3. Benutzer sperren execute immediate ('ALTER USER /* Error_Trigger */ "' sys_context('userenv','session_user') '" account lock'); -- 4. Session beenden execute immediate ('ALTER SYSTEM /* Error_Trigger */ KILL SESSION ''' v_sid ',' v_serial ''' account lock'); alter system kill session 'session-id,session-serial' END IF; END LOOP; -- END after_error; /

Was ist sinnvoll? Service nicht verfügbar oder Daten werden dupliziert und veröffentlicht

Weitere Wege, um SQL Injektion Angriffe zu erkennen

Weitere Möglichkeiten Fake-Tabellen (CREDITCARD) oder Fake-Funktionen (decrypt), deren Zugriff überwacht wird Anlage von eigenen Views (ALL_USERS, ALL_TAB_COLUMNS, ) im Schema der Datenbank, die falsche Daten zurückliefern Privilegien-Eskalation bzw. DDL Befehle vom Application Server Verwendung von bisher nicht genutzten Packages, via 3rd-party- Lösung Ungewöhnliche Fragmente in SQL Befehlen (or 1=1--), via 3rdparty-Lösung Whitelisting von SQL Befehlen auf kritische Tabellen (z.b. Zugriff auf Benutzer-Tabelle), via 3rd-party-Lösung

Zusammenfassung SQL Injection Angriffe aus dem Web können zuverlässig, d.h. mit Bordmitteln (=keine Lizenzkosten) erkannt werden, ohne dass die Anwendung angepasst werden muss 3rd-party-DB-Security-Lösungen erlauben zusätzlichen Schutz Schwierigstes Problem bleibt die Definition des Vorgehens bei der Erkennung eines Angriffes. Dies ist ein organisatorisches Problem. Dilemma: Anwendung/Service stoppen oder Daten verlieren

F & A?

Danke Kontakt: Red-Database-Security GmbH Eibenweg 42 D-63150 Heusenstamm Deutschland