Les6 SQL Injection

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 14

5.

6 – SQL Injection

Meneer De Bruin (DBN)


Wat is SQL Injection?

‘SQL Injection’ is:


Exploiten = Misbruik maken van
- Het ‘exploiten’ van de communicatie met de database van een website
- Door kwaadaardige SQL-code bij invoervelden te laten uitvoeren
- Om daarmee toegang te krijgen tot de website of de database
Wat is SQL?

SQL (Structured Query Language) is een programmeertaal voornamelijk


bedoeld om informatie uit een database te krijgen
 Door middel van queries Query
Wanneer is SQL Injection mogelijk?
Asterisk (*) betekent
selecteer alles

Enter SELECT *
Username FROM users
&
Web Password WHERE username='me'
Web
Browser AND password='1234' DB
Server
(Client)
admin
geh3im

SELECT * FROM users WHERE username=‘admin’ AND password=‘geh3im’

username password
admin geh3im

Web Server:
“Database heeft een rij gevonden, gebruikersnaam en wachtwoord kloppen!”
admin’ OR 1=1 --

test

SELECT * FROM users WHERE username=‘admin’ OR 1=1 -- ’ AND password=‘test’


SELECT * FROM users WHERE username=‘admin’ OR 1=1 -- ’ AND password=‘test’
username password
admin geh3im
... ...
user1 superGeh3im
Web Server:
“Database heeft een rij gevonden, gebruikersnaam en wachtwoord kloppen!”
Makkelijkste voorbeeld

Invullen als wachtwoord: test‘ OR 1=1 -- (met spatie op het einde)

Wat betekent:
’  Breek uit string in query
OR 1=1  Of 1 is gelijk aan 1, is altijd waar, dus conditie klopt altijd
--  Maak rest van query een comment, dus wordt niet meer uitgevoerd

SELECT * FROM users WHERE username=‘test’ OR 1=1 -- ’ AND password=‘test’


Veel andere verschillende soorten SQL Injections
Zie https://github.com/payloadbox/sql-injection-payload-list
Wanneer is SQL Injection mogelijk?
Mogelijk bij elk niet goed beveiligd invoerveld dat naar de database gaat
Eén van de schadelijkste aanvallen...
2 jun 2011
Risico’s van SQL Injection

Een succesvolle SQL Injection kan leiden tot:

 Lezen van gevoelige informatie van de database

 Aanpassen en toevoegen van data (INSERT, UPDATE, DELETE)

 Soms zelfs op de operating system van de database komen...

Ernstige gevolgen:

 Datacorruptie: Alle data kan gestolen, aangepast of verwijderd worden


Voorkomen van SQL Injection
 ‘Sanitize’ (ontsmet) user inputs

Fout

Goed
Prepared statement: Een
methode om SQL-queries veilig
uit te voeren door vooraf de
structuur van de query vast te
leggen, zodat invoer geen
kwaadaardige code kan
bevatten.
Voorkomen van SQL Injection

 ‘Sanitize’ (ontsmet) user inputs

 Scan query op ongewenste woorden (Insert, Drop)

 Gebruik nieuwste technologie voor databases

NoSQL-databases, zoals MongoDB


Maar nu ook NoSQL-Injections

Vous aimerez peut-être aussi