Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.
Transcript of Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.
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.
2© Copyright Transfer Solutions B.V.
SQL injection
select * from verzekeringwhere achternaam='Potter';
Normaal gebruik van een applicatie
select * from verzekeringwhere achternaam='Potter';
SURNAME FIRSTNAME PACKAGE----------- ----------- ------------------Potter Harry Care Plus
6© Copyright Transfer Solutions B.V.
De kracht van quotes
’
select * from verzekeringwhere achternaam='Potter' or
'x'='x';
Een voorbeeld van SQL injection
select * from verzekeringwhere achternaam='Potter' or
'x'='x';
SURNAME FIRSTNAME PACKAGE----------- ----------- ------------------Blofeld Ernst Stavr Care ExtraluxBond James Care BasicPotter Harry Care Basic PlusSkywalker Luke Care Basic PlusVader Darth Care VIPetc.. etc..
select * from verzekeringwhere achternaam='Potter';select * from dba_users where 'x'='x';
Eens kijken of men hier de rechten beperkt heeft…
SURNAME FIRSTNAME PACKAGE
----------- ----------- ------------------
Potter Harry Care Plus
USERNAME PASSWORD ACCOUNT_STATUS---------- ---------------- --------------SYS 5638228DAF52805F OPENSYSTEM D4DF7931AB130E37 OPENetc.. etc..
select * from verzekeringwhere achternaam='Potter';select * from dba_users where 'x'='x';
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.
11© Copyright Transfer Solutions B.V.
Preventie
1.
Voorkomen dat SQL injection constructies toegestaan zijn in de applicatie.
15© Copyright Transfer Solutions B.V.
select * from verzekeringwhere achternaam= :BIND;
Bind variables
Rechten in de database beperken tot
het strikt nodige.2.
17© Copyright Transfer Solutions B.V.
The DBA role
DROP DATABASECREATE SPFILE
CREATE SPFILE CREATE SPFILE
ALTER DATABASE
ALTER ANY CLUSTER
CREATE DIRECTORY
CREATE DATABASE LINK
GRANT ANY PRIVILEGE
GRANT ANY OBJECT PRIVILEGE
ALTER ANY SQL PROFILE
ALTER ANY SQL PROFILE
CREATE ANY CONTEXT
ALTER SYSTEM
AUDIT SYSTEM
DEBUG CONNECT SESSIONALTER ANY TABLE
CREATE DIMENSION
CREATE INDEXTYPE
CREATE ANY INDEX
ALTER ANY INDEX
CREATE LIBRARY
CREATE EXTERNAL JOB
CREATE ANY MATERIALIZED VIEW
GLOBAL QUERY REWRITE
FLASHBACK ANY TABLECREATE ANY OPERATOR
CREATE ANY PROCEDURE
ALTER ANY PROCEDURE
CREATE TABLESPACEUNLIMITED TABLESPACE
DROP ANY TRIGGER
CREATE USER
ALTER USER
DROP ANY VIEW
FORCE TRANSACTIONCREATE DATABASE
ANALYZE ANY
SELECT ANY DICTIONARY
SELECT ANY TRANSACTION
FORCE TRANSACTION
APP_USERcreate session
APP_OWNERcreate session
create table
objects
APP_TABLE
APP_PCK
create procedure
execute on app_pck
Toepassen minimale rechten
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/top-15-sql-injection-scanner/
19© Copyright Transfer Solutions B.V.
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/
20© Copyright Transfer Solutions B.V.
[email protected] | www.transfer-solutions.com
TRANSFER SOLUTIONSICT Advisering | Ontwikkeling | Beheer | Opleidingen