Oracle database security

advertisement
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
Download