Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

21
Hoe SQL injection werkt Door: Marcel-Jan Krijgsman

Transcript of Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

Page 1: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

Hoe SQL injection werkt

Door: Marcel-Jan Krijgsman

Page 2: 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.

Page 3: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

SQL injection

Page 4: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

select * from verzekeringwhere achternaam='Potter';

Normaal gebruik van een applicatie

Page 5: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

select * from verzekeringwhere achternaam='Potter';

SURNAME FIRSTNAME PACKAGE----------- ----------- ------------------Potter Harry Care Plus

Page 6: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

6© Copyright Transfer Solutions B.V.

De kracht van quotes

Page 7: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

select * from verzekeringwhere achternaam='Potter' or

'x'='x';

Een voorbeeld van SQL injection

Page 8: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

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..

Page 9: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

select * from verzekeringwhere achternaam='Potter';select * from dba_users where 'x'='x';

Eens kijken of men hier de rechten beperkt heeft…

Page 10: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

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';

Page 11: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

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.

Page 12: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.
Page 13: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

Preventie

Page 14: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

1.

Voorkomen dat SQL injection constructies toegestaan zijn in de applicatie.

Page 15: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

15© Copyright Transfer Solutions B.V.

select * from verzekeringwhere achternaam= :BIND;

Bind variables

Page 16: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

Rechten in de database beperken tot

het strikt nodige.2.

Page 17: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

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

Page 18: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

APP_USERcreate session

APP_OWNERcreate session

create table

objects

APP_TABLE

APP_PCK

create procedure

execute on app_pck

Toepassen minimale rechten

Page 19: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

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.

Page 20: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

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.

Page 21: Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

[email protected] | www.transfer-solutions.com

TRANSFER SOLUTIONSICT Advisering | Ontwikkeling | Beheer | Opleidingen

[email protected]