Hoe SQL injection werkt Door: Marcel-Jan Krijgsman SQL Injection Een methode die gebruik maakt van invoer in de applicatie: invoervelden, argumenten in code, etc.. SQL Injection werkt doordat een hacker SQL code toevoegt aan de SQL die de applicatie uitvoert. Traditionele firewalls en virusscanners kunnen SQL Injection niet tegenhouden. © Copyright Transfer Solutions B.V. 2 SQL injection Normaal gebruik van een applicatie select * from verzekering where achternaam='Potter'; select * from verzekering where achternaam='Potter'; SURNAME FIRSTNAME PACKAGE ----------- ----------- -----------------Potter Harry Care Plus De kracht van quotes © Copyright Transfer Solutions B.V. 6 Een voorbeeld van SQL injection select * from verzekering where achternaam='Potter' or 'x'='x'; select * from verzekering where achternaam='Potter' or 'x'='x'; SURNAME ----------Blofeld Bond Potter Skywalker Vader etc.. etc.. FIRSTNAME ----------Ernst Stavr James Harry Luke Darth PACKAGE -----------------Care Extralux Care Basic Care Basic Plus Care Basic Plus Care VIP Eens kijken of men hier de rechten beperkt heeft… select * from verzekering where achternaam='Potter'; select * from dba_users where 'x'='x'; select * from verzekering where achternaam='Potter'; select * from dba_users where 'x'='x'; SURNAME FIRSTNAME PACKAGE ----------- ----------- -----------------Potter Harry Care Plus USERNAME PASSWORD ---------- ---------------SYS 5638228DAF52805F SYSTEM D4DF7931AB130E37 etc.. etc.. ACCOUNT_STATUS -------------OPEN OPEN Creatief met SQL Injection or 'x'='x : laat mijn conditie zien of alles. ; gebruiken om een statement voortijdig te beëindigen of andere statements te laten volgen. UNION: compleet andere tabellen bij resultaat voegen. © Copyright Transfer Solutions B.V. 11 Preventie 1. Voorkomen dat SQL injection constructies toegestaan zijn in de applicatie. Bind variables select * from verzekering where achternaam= :BIND; © Copyright Transfer Solutions B.V. 15 2. Rechten in de database beperken tot het strikt nodige. CREATE ALTER ANY SPFILE SQL PROFILE ANALYZE ANY CREATE ANY PROCEDURE ALTER ANY CLUSTER ALTER REATE ANY MATERIALIZED VIEWSYSTEM ALTER USER CREATE DIRECTORY AUDIT SYSTEM SELECT ATE EXTERNAL JOBANY DICTIONARY ALTER ANY PROCEDUR CREATE DATABASE LINK CREATE USER DEBUG CONNECT SESSION CREATE LIBRARYThe ALTER ANY TABLE DBA role LASHBACK ANY TABLE CREATE ANY OPERATOR RCE TRANSACTION GRANT ANY PRIVILEGE RANSACTION ALTER ANY INDE CREATE DATABASE GRANT ANY OBJECT PRIVILEGE ROP ANY TRIGGER DROP DATABASE CREATE ANY INDE ALTER ANY SQL PROFILE FORCE TRANSACTI CREATE SPFILE GLOBAL QUERY REWRITE CREATE INDEXTYP NLIMITEDCREATE TABLESPACE ANY CONTEXT ALTER DATABASE DROP ANY VIEW CREATE DIMENSION CREATE TABLESPA © Copyright Transfer Solutions B.V. 17 Toepassen minimale rechten objects APP_PCK APP_TABLE create procedure execute on app_pck create table create session create session APP_USER APP_OWNER SQL injection detectie Er is software om SQL Injection in webapplicaties te detecteren. Een aantal daarvan is gratis. Overzicht: http://maestro-sec.com/blogs/2008/10/top15-sql-injection-scanner/ © Copyright Transfer Solutions B.V. 19 Kortom… SQL Injection is een methode met veel potentie. U zult wellicht veel zeilen moeten bijzetten om SQL Injection te voorkomen. Laat dit u niet overkomen: http://xkcd.com/327/ © Copyright Transfer Solutions B.V. 20 [email protected] TRANSFER SOLUTIONS ICT Advisering | Ontwikkeling | Beheer | Opleidingen [email protected] | www.transfer-solutions.com