Hoe SQL injection werkt Door: Marcel-Jan Krijgsman.

Post on 13-May-2015

216 views 0 download

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.

info@transfer-solutions.com | www.transfer-solutions.com

TRANSFER SOLUTIONSICT Advisering | Ontwikkeling | Beheer | Opleidingen

info@transfer-solutions.com