Vous êtes sur la page 1sur 14

Facult polydisciplinaire

de Taza

SQL Injection
Ralis par : Soufian EL YADMANI

Encadr par : Mr. Ismail AKHARAZ


Filire : Science Mathmatique est Informatique (S6)
Anne universitaire : 2014/2015

Sommaire
1.
2.
3.
4.
5.
6.
7.

Cest quoi les attaques par injection?


Comment fonctionne linjection SQL?
Exploiter les Bugs dinjection SQL
Simulation sur DVWA
Comment viter ces attaques ?
Exemples dattaques par linjection SQL
Conclusion

Injection
L'injection

de code est une technique qui


consiste injecter des donnes dans une
application pour modifier le comportement.
interprteurs
Interprter des String comme commandes.
Ex: SQL, shell (cmd.exe, bash), LDAP, XPath
Lide

Les donnes d'entre de l'application est


excute comme code par l'interprteur.

SQL Injection
1.
2.
3.
4.
5.

6.

Attacker

LApp envoie une forme


lutilisateur
L'attaquant soumet le
formulaire.
LApplication construit un
String.
LApp envoie la requte
SQL DB.
La DB execute la
requte,y compris
l'exploitation, et envoie
des donnes l'app.
LApplication retourne
des donnes
Web Server
lutilissateur.

Form

User
Pass

Firewall

DB Server

SQL Injection en PHP


$link = mysql_connect($DB_HOST, $DB_USERNAME,
$DB_PASSWORD) or die ("Couldn't connect: " .
mysql_error());
mysql_select_db($DB_DATABASE);
$query = "select count(*) from users where username =
'$username' and password = '$password ";
$result = mysql_query($query);

Injection SQL Attack #1


Tentative d'accs non autorise :
password = OR 1=1 --

Linstruction SQL devienne:


select count(*) from users where username
= user and password = OR 1=1 -Vrifie si le mot de passe est vide OR 1 = 1, ce
qui est toujours vrai, permettant l'accs.

SQL Injection Attack #2


Database Modification Attack:
password = foo; delete from table users
where username like %

DB excute deux instructions SQL :


select count(*) from users where username =
user and password = foo
delete from table users where username like %

Trouver des bugs dinjection SQL


1.

2.

3.

Proposer une apostrophe l'entre.


Si une erreur se produite, lapp est vulnrable.
Si aucune erreur, vrifier tout changement de
sortie..
Soumettre deux apostrophes.
Bases de donnes utilisent '' pour reprsenter '
Si l'erreur disparat, l'application est vulnrable.
Essayez les chanes ou les oprateurs numriques.

Oracle: ||FOO
MS-SQL: +FOO
MySQL: FOO

2-2
81+19
49-ASCII(1)

Example :
DVWA (Damn Vulnerable Web App) qui est un
environnement PHP ddi tester la scurit , ses
comptences en hacking lgalement sur une
application hberge en local.

Comment viter ces attaques ?

Ces attaques peuvent tre vites de plusieurs faons :


1 - Utiliser des procdures stockes. Les donnes entres
par l'utilisateur sont alors transmises comme paramtres,
qui, s'ils sont correctement utiliss par la procdure (par
exemple injects dans une requte paramtre), vitent
l'injection.
2 -Vrifier de manire prcise l'ensemble des donnes
venant de l'utilisateur. On peut, par exemple, utiliser une
expression rationnelle afin de valider qu'une donne
entre par l'utilisateur est bien de la forme souhaite, ou
profiter de fonctions de transformation spcifiques au
langage ;
3-Utiliser des comptes utilisateurs SQL accs limit (en
lecture-seule) quand cela est possible ;

Exemples dattaques par linjection SQL


Le 13 avril 2008 survient le vol de 10 597 numros de
scurit sociale amricains .
Le 17 aot 2009, le dpartement de la justice
amricaine identifie l'amricain Albert Gonzales et deux
russes comme les auteurs du vol de 130 millions de
numros de cartes de crdit grce une attaque par
injection SQL .
Le 1er juin 2011, le groupe appel LulzSec est accus
dune attaque par injection SQL contre le site de Sony.
Au moins 1 million de clients se font voler coupons, cls
dactivation et mot de passe.
En juillet 2012, Yahoo rapporte le vol de donnes de
plus de 450 000 clients .

Conclusion
LInjection

SQL est la technique pour


exploiter les applications qui utilisent des
bases de donnes relationnelles comme
leur extrmit arrire.
LInjection SQL utilise le fait que
beaucoup de ces applications concatnent
la partie fixe de la dclaration de SQL
avec les donnes fournies par l'utilisateur
qui forme WHERE .

SQL injection Conclusion

La technique est base sur des donnes malforms


fournies par l'utilisateur.
Transformer les appels SQL innocents un appel
malveillant.
Causer un accs non autoris, suppression des
donnes, ou le vol d'informations.
Toutes les bases de donnes peuvent tre une cible
d'injection SQL et tous sont vulnrables cette
technique.
Cette vulnrabilit est dans la couche d'application
l'extrieur de la base de donnes, et le moment o
l'application a une connexion dans la base de
donnes.

Fin
Merci pour votre attention