Professional Documents
Culture Documents
Licence professionnelle :
Sommaire :
A. E-Commerce
I. Définition ………………………………………………………………………………………………………………….3
B. Injections SQL
II. Explications……………………………………………………………………………………………………………..14
V. Conclusion……………………………………………………………………………………………………………….19
1
E-commerce / Injections SQL LP Administration Parc PC
2
E-commerce / Injections SQL
I. Définition
3
E-commerce / Injections SQL LP Administration Parc PC
• Le paiement sécurisé en ligne (accounting) est souvent assuré par un tiers de confiance
(une banque) via une transaction sécurisée ;
4
E-commerce / Injections SQL
Internaute acheteur
Platform Télécommerce
5
E-commerce / Injections SQL LP Administration Parc PC
6
E-commerce / Injections SQL
a) la signature électronique :
b) le certificat de chiffrement :
Ce procédé est basé sur le principe de la création d'un système bi-clés, clé publique
et clé privée, unies par une communauté d'algorithme.
7
E-commerce / Injections SQL LP Administration Parc PC
c) le certificat de signature :
• de préparer des formalités légales ou requêtes en ligne, sur les sites Internet des
administrations averties, inscription de sociétés auprès du greffe du tribunal de
commerce de Paris.
8
E-commerce / Injections SQL
9
E-commerce / Injections SQL LP Administration Parc PC
Sous peine d’induire des risques supplémentaires, n’utilisez pas d’additifs, tels
les plug-ins, pour le navigateur.
N’utilisez jamais les versions test des navigateurs car elles sont réputées
contenir encore de nombreuses failles.
10
E-commerce / Injections SQL
VIII. Conclusion :
Enfin, l’achat d’un bien via le réseau des réseaux permet également d’épargner
certaines taxes, telles que la TVA. La TVA étant une taxe nationale, il est souvent plus
intéressant d’acheter un bien dans un autre pays. Par exemple, le Grand-duché de
Luxembourg et l’Allemagne appliquent des taux inférieurs (15%) au Maroc (20%). Toutefois,
ce gain intéressant de prime abord doit être mis en balance avec les frais d’envoi plus
importants qui devront être supportés par l’acheteur. Un calcul s’impose donc, si le leitmotiv
de votre achat se focalise sur la compétitivité du prix.
11
E-commerce / Injections SQL LP Administration Parc PC
12
E-commerce / Injections SQL
Suite aux nombreuses vulnérabilités de types "sql injection" que l'on a pu rencontrer
dans le passé, et que l'on retrouve encore et toujours aujourd'hui, j'ai décidé de vous
écrire un petit article pour présenter ce qu'est vraiment une injection sql d'une part,
mais nous verrons aussi comment un attaquant peut les utiliser et comment s'en
protéger le mieux possible.
Ce type d'attaque vise les serveurs web et plus particulièrement les erreurs de
programmation au niveau des scripts asp, cgi, php, etc. Ces mêmes scripts exécutant des
requêtes sql... Ce sujet, comme nous l'avons vu auparavant, est assez ancien mais on
peut voir qu'il est toujours resté d'actualité ne serait-ce que suite à l'utilisation
abondante du asp et du php. Aussi, pas mal d'articles sur ce sujet ont précéder celui-ci et
il est bien entendu que certains n'y verront, pour sûr, que le côté rébarbatif. Mais
l'important pour nous, en écrivant cet article est d'expliquer cela par nos propres
mots de façon à aider les débutants, et d'adapter ce type de vulnérabilité à l'actualité.
13
E-commerce / Injections SQL LP Administration Parc PC
II. Explications :
Comme vous le savez certainement déjà, SQL (Structured Query Language) est un
language de base de données, celles-ci représentant le coeur de beaucoup d'applications
web de nos jours. C'est un language basé sur des requêtes utilisant des instructions
telles que :
Mais cette simplicité en fait aussi une proie facile aux détections de failles.
Exemple de requête :
Cette requêtes aura pour effet de sélectionner l'utilisateur (extrait de la table "users") dont
le login est "soof".
"SELECT *" signifiant qu'on sélectionne tous les champs de cette table mais peu importe
pour le moment.
Continuons sur cet exemple pour bien vous faire comprendre ce qu'est une attaque de type
sql injection (Mon exemple n'étant pas du pur hasard puisqu'une attaque de ce type dans le
but de récuperer un mot de passe ou de s'identifier est certainement la plus courante).
Maintenant imaginons que ma page contienne un formulaire d'identification de ce type :
14
E-commerce / Injections SQL
2. L'attaque en question
Sachant que sur mon exemple la variable $login contient ce que j'ai tapé dans mon premier
champ de texte et que la variable $password contient de même ce que j'ai tapé dans le
deuxième champ de texte (mot de passe), imaginez ce que cela pourrait donner si j'entrais
ceci dans le premier champ de texte
Ou bien encore :
Et elle permettrait certainement de s'identifier car la requête est vraie si un utilisateur "a"
existe OU si 1=1. Comme il est évident que 1 est égal à 1, elle serait vraie , puis toute la table
users sera supprimée.
15
E-commerce / Injections SQL LP Administration Parc PC
Sachant que je suis repassé dans une syntaxe sql utilisée sur asp, cette requête ci-
dessus aurait pour effet d'exécuter une commande shell "net stop firewall" qui
stopperait l'exécution du service "firewall". Et puisque le serveur sql est lancé en tant
que SYSTEM par défaut, nous aurions tout à fait ce droit d'arrêter des services.
Mais ce ne sont que quelques exemples car les possibilités sont nombreuses.
16
E-commerce / Injections SQL
Injections PHP-MySQL :
17
E-commerce / Injections SQL LP Administration Parc PC
Comme vous pouvez vous en douter, le seul moyen de prévenir ces attaques se trouve
au niveau de la programmation.
Si celle-ci est bien réalisée, elles ne sont normalement plus possibles. Alors...quelles sont
les règles de programmation à prendre en compte ?
Tout d'abord, évitez d'utiliser un compte ayant tous les pouvoirs pour l'exécution de
votre serveur SQL si possible.
Supprimer les fonctions que vous n'utilisez pas telle que celle que nous avons vu :
master..xp_cmdshell, et demanière générale toutes celles commencant par
"master..xp".
Vérifiez les entrées utilisateurs telles que les champs de texte. Vérifiez aussi que les
nombres attendus soient biendes nombres avec une fonction telle que IsNumeric()
par exemple.
Vous pouvez aussi empêcher d'une manière générale certaines séquences d'entrées
utilisateurs telles que ";","insert", "select", "//", "--", etc.
Attention aussi à limiter le nombre de caractères qu'un utilisateur peut entrer dans
un champ de texte, car ceci peut fort bien lui compliquer la tâche.
Pour finir, attention à ce que vous mettez dans les cookies, car un mot de passe
(même crypter en md5) est vite contourné par une attaque de ce type. Et par la suite
un remplacement de cette valeur dans le cookie évite à l'attaquant une attaque de
type brute force ; c'est donc un joli cadeau.
18
E-commerce / Injections SQL
V. Conclusion
Nous avons pu voir différents types d'attaques réalisables par injection SQL ainsi que
des moyens de les prévenir, en espérant que votre vision de la programmation SQL aura
évoluée du côté de la sécurité, et que vous pourrez vous-même essayer de remédier à ces
failles dans vos applications web si besoin.
19
E-commerce / Injections SQL LP Administration Parc PC
Bibliographie :
https://epass.cases.lu/
https://www.cases.lu/
http://hackers2600.info/
http://phpsec.org/library/
20