Download de presentatie
De presentatie wordt gedownload. Even geduld aub
1
Hoe SQL injection werkt
Hoe SQL injection werkt Door: Marcel-Jan Krijgsman
2
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.
3
SQL injection Het draait allemaal om invoer.
4
select * from verzekering where achternaam='Potter';
Normaal gebruik van een applicatie select * from verzekering where achternaam='Potter';
5
select * from verzekering where achternaam='Potter';
SURNAME FIRSTNAME PACKAGE Potter Harry Care Plus
6
’ De kracht van quotes Bij SQL Injection draait alles om quote tekens.
’ De kracht van quotes Bij SQL Injection draait alles om quote tekens. © Copyright Transfer Solutions B.V.
7
select * from verzekering where achternaam='Potter' or 'x'='x';
Een voorbeeld van SQL injection select * from verzekering where achternaam='Potter' or 'x'='x';
8
select * from verzekering where achternaam='Potter' or 'x'='x';
SURNAME FIRSTNAME PACKAGE Blofeld Ernst Stavr Care Extralux Bond James Care Basic Potter Harry Care Basic Plus Skywalker Luke Care Basic Plus Vader Darth Care VIP etc.. etc..
9
select * from verzekering where achternaam='Potter';
Eens kijken of men hier de rechten beperkt heeft… select * from verzekering where achternaam='Potter'; select * from dba_users where 'x'='x'; Dit werkt alleen als de ; ook doorgegeven wordt door de applicatie heen.
10
select * from verzekering where achternaam='Potter';
select * from verzekering where achternaam='Potter'; select * from dba_users where 'x'='x'; SURNAME FIRSTNAME PACKAGE Potter Harry Care Plus USERNAME PASSWORD ACCOUNT_STATUS SYS DAF52805F OPEN SYSTEM D4DF7931AB130E37 OPEN etc.. etc..
11
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.
12
Een nieuwsgierige binnendringer hoeft nu alleen maar de puzzelstukjes bij elkaar te zoeken om te achterhalen hoe bij uw data te komen.
13
Preventie Hoe voorkomen we SQL Injection?
14
1. Voorkomen dat SQL injection constructies toegestaan zijn in de applicatie.
15
select * from verzekering where achternaam= :BIND;
Bind variables select * from verzekering where achternaam= :BIND; Met bind variables voorkomt u dat stukken SQL achter elkaar geplakt worden. © Copyright Transfer Solutions B.V.
16
2. Rechten in de database beperken tot het strikt nodige.
17
CREATE ANY MATERIALIZED VIEW ALTER USER CREATE DIRECTORY AUDIT SYSTEM
CREATE SPFILE CREATE SPFILE ALTER ANY SQL PROFILE ANALYZE ANY CREATE ANY PROCEDURE ALTER ANY CLUSTER ALTER SYSTEM CREATE ANY MATERIALIZED VIEW ALTER USER CREATE DIRECTORY AUDIT SYSTEM SELECT ANY DICTIONARY CREATE EXTERNAL JOB ALTER ANY PROCEDURE CREATE DATABASE LINK CREATE USER DEBUG CONNECT SESSION CREATE LIBRARY ALTER ANY TABLE The DBA role FLASHBACK ANY TABLE CREATE ANY OPERATOR FORCE TRANSACTION GRANT ANY PRIVILEGE SELECT ANY TRANSACTION ALTER ANY INDEX CREATE DATABASE GRANT ANY OBJECT PRIVILEGE “Voor deze applicatie hebben we de DBA rol nodig”, zeggen sommige leveranciers van applicatie of ontwikkelaars. Dat is heel, heel, heel erg onwaarschijnlijk. Het is namelijk heel, heel, heel onwaarschijnlijk dat de applicatie de ruim honderden verschillende system privileges nodig heeft om te kunnen functioneren. In deze sheet ziet u slechts een kleine subset van rechten die aan de DBA rol hangen. Welke rechten de applicatie dan wel nodig heeft, zal uitgezocht moeten worden en dat kost meestal de nodige manuren. Laat de leverancier deze manuren besteden en met een veilige set van benodigde rechten komen. DROP ANY TRIGGER DROP DATABASE CREATE ANY INDEX ALTER ANY SQL PROFILE FORCE TRANSACTION CREATE SPFILE GLOBAL QUERY REWRITE CREATE INDEXTYPE UNLIMITED TABLESPACE CREATE ANY CONTEXT ALTER DATABASE DROP ANY VIEW CREATE DIMENSION CREATE TABLESPACE © Copyright Transfer Solutions B.V.
18
Toepassen minimale rechten
Toepassen minimale rechten objects APP_PCK APP_TABLE create procedure execute on app_pck create table Schema eigenaars zijn Oracle users die recht hebben objecten aan te maken, aan te passen en verwijderen. Gebruikers die aanloggen hebben die rechten normaal gesproken niet nodig. In plaats daarvan krijgen zij een user met rechten op de objecten van de schema eigenaar. Die rechten kunnen ook in een role opgenomen worden. create session create session APP_USER APP_OWNER
19
SQL injection detectie
Er is software om SQL Injection in webapplicaties te detecteren. Een aantal daarvan is gratis. Overzicht: © Copyright Transfer Solutions B.V.
20
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: © Copyright Transfer Solutions B.V.
21
info@transfer-solutions.com TRANSFER SOLUTIONS
ICT Advisering | Ontwikkeling | Beheer | Opleidingen |
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.