You are on page 1of 21

Université Mohamed V

Faculté des Sciences Rabat

Licence professionnelle :

Administration Parc PC « 2007/2008 »

Réalisé par : Encadré par :

Makranou Soufiane Mr. El Hajji Said


El Kandoussi Houssam
E-commerce / Injections SQL

Sommaire :

A. E-Commerce

I. Définition ………………………………………………………………………………………………………………….3

II. Type E-Commerce………………………………………………………………………………….………………….4

III. Composants E-Commerce………………………………………………………………………………………….4

IV. Les intervenants du E-Commerce ………………………………………………………………………………5

V. Etapes d’une transaction ………………………………………………….…………………………………….. 6

VI. Sécurité d’une transaction………………………………………………………………………………………...7

VII. E-Commerce en toute sécurité………………………………….………………………………………………9

VIII. Conclusion ………………………………………………………………………………………………………………11

B. Injections SQL

I. Introduction à l’injection SQL……………………………………………………………………………………13

II. Explications……………………………………………………………………………………………………………..14

III. Autres types d’attaques……………………………………………………………………………………………16

IV. Protection contre les Injections SQL…………………………………………………………………………18

V. Conclusion……………………………………………………………………………………………………………….19

1
E-commerce / Injections SQL LP Administration Parc PC

2
E-commerce / Injections SQL

I. Définition

Globalement, le commerce électronique (ou e-commerce) désigne l'échange de biens et


de services entre deux entités (personnes privées, sociétés, administrations,…) sur les
réseaux, principalement Internet. Il représente un cas particulier de l’ebusiness.
L’ecommerce offre de nombreux avantages, tant pour la personne (physique ou morale)
qui offre le service ou les biens que pour la personne (physique ou morale) en
bénéficiant.

Il s’agit premièrement de l’accélération des transactions. En quelques clicks, les parties


contractantes échangent leurs consentements et sont liés irrémédiablement par un contrat
ayant force de loi (sous réserve, bien entendu des éventuels vices du consentement, telles
que l’erreur, le dol, la violence ou la contrainte).
La variété et la disponibilité des offres constituent également un adjuvent important pour
les personnes (physique ou morale) qui souhaitent contracter rapidement. En effet, avant
l’avènement de l’Internet, il fallait parfois se déplacer à l’étranger pour trouver un produit
spécifique. Bien évidemment, il était possible de commander des produits par téléphone,
mais il est inéluctable qu’un tel procédé était bien moins sécurisant et sécurisé.
Aujourd’hui, il est possible de choisir son produit, de le voir en photo (l’utilisation des
webcam connaissant également une évolution importante,…), d’accepter l’offre qui nous
est faite (valant échange de consentements) et de payer le prix…. Le tout en moins de 5
minutes.

3
E-commerce / Injections SQL LP Administration Parc PC

II. Type E-Commerce

• B to C (business to consumer) : Le commerce grand public ou la vente en ligne

• B to B (business to business) : commerce interentreprise (Réseaux d'achat, marchés…

• C to C (consumer to consumer) : ventes aux enchères

• A to B (administration to business) : appels d'offres enligne, télédéclarations…

III. Composants E-Commerce

La plupart des sites de commerce électronique contiennent au minimum les éléments


suivants au niveau du front-office :

• Un catalogue électronique en ligne (produits disponible à la vente,prix, disponibilité,


nombre de jour avant livraison) ;

• Un moteur de recherche (marque, gamme de prix, mot clé, ...) ;

• Un système de caddie virtuel (appelé parfois panier virtuel) : il s'agit du coeur du


système de e-commerce. Le caddie virtuel permet de conserver la trace des achats du
client tout au long de son parcours et de modifier les quantités pour chaque référence ;

• Le paiement sécurisé en ligne (accounting) est souvent assuré par un tiers de confiance
(une banque) via une transaction sécurisée ;

• Un système de suivi des commandes, permettant de suivre le processus de traitement


de la commande et parfois d'obtenir des éléments d'information sur la prise en charge
du colis par le transporteur.

4
E-commerce / Injections SQL

IV. Les intervenants du E-Commerce

 Internaute acheteur

 Commerçant avec module TLC « Télécommerce »

 Platform Télécommerce

 Banque « tiers de confiance »

5
E-commerce / Injections SQL LP Administration Parc PC

V. Etapes d’une transaction

1) L'Internaute navigue dans la boutique du marchand et choisit ses articles.

2) Le site du marchand lui transmet, en ligne, le bon de commande électronique.

3) L'Internaute valide la commande et saisit ses coordonnées,celles de sa Carte


Bancaire. L'ensemble est chiffré, et routé automatiquement vers la plate-
forme Télé-commerce.

4) La plate-forme vérifie les informations reçues, et se connecte au Crédit


Agricole pour le traitement du paiement.

5) Le Crédit Agricole gère la demande d'autorisation via les circuits


interbancaires, et transmet la réponse à la plate-forme.

6) La réponse est stockée sur les bases de données de la plate-forme Télé-


commerce.

7) La réponse est transmise à l'Internaute, en ligne avec la référence de la


transaction.

8) La réponse est communiquée au marchand, suivant des modalités convenues


au préalable (e-mail, fax…) .

9) Le Crédit Agricole traite ensuite le paiement, et l'introduit dans les circuits de


compensation interbancaires.

10) Après règlement par la banque de l'Internaute, le Crédit Agricole crédite le


compte de commerçant.

6
E-commerce / Injections SQL

VI. Sécurité d’une transaction

La sécurité des transactions demeure le principale frein au développement du


commerce électronique.

L’encryptage et la signature électronique permettent de confirmer l’identité des


contractants et de garantir l’authenticité et la confidentialité et l’intégrité des
transmissions électroniques.

a) la signature électronique :

La signature électronique est l'analogue de la signature sur un document


papier, elle partage avec cette dernière les propriétés suivantes :

• Le lecteur doit être convaincu que le signataire a bien signé le document.


• La signature ne peut pas être falsifiée.
• La signature n'est pas réutilisable. Elle fait partie du document signé et ne peut être
déplacée sur un autre document.
• Un document signé est inaltérable. Une fois signé, on ne peut le modifier.

b) le certificat de chiffrement :

Pour préserver la confidentialité des échanges, il faut rendre les données


incompréhensibles à tous sauf aux destinataires. Grâce à une procédure de chiffrement,
le certificat de chiffrement rend la compréhension d’un document impossible à toute
personne ne disposant pas du secret nécessaire au décodage.

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 :

Le certificat de signature permet notamment :

• d’assurer l’authentification et l’intégrité des données contenues dans les messages


électroniques, ou dans les pièces jointes à ces messages,

• pour les professionnels ayant droit à l’exercice, de rédiger des prescriptions, de


constituer les doubles d’ordonnances, d’assumer la tenue de l’ordonnancier,

• 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

VII. Ecommerce en toute sécurité :

A la base de toute manipulation informatique sécurisée, ces "Règles d’or" sont à


respecter impérativement :

Les mots de passe : verrouiller le coffre-fort


Les mots de passe sont les clés d’accès à vos informations et à vos comptes en ligne. Bien
évidemment, la tentation est grande de les choisir simples à retenir, comme le prénom
de vos enfants ou votre date de naissance. Le défi consiste donc à les choisir de manière
à ce qu’ils soient aisément mémorisables tout en étant difficiles à deviner par autrui.

L’antivirus : vacciner son ordinateur


Tout comme vous, votre ordinateur a besoin d’être vacciné pour rester en bonne santé
et ainsi se préserver des vers et des virus. Installer un logiciel antivirus et le maintenir à
jour est un indispensable de la sécurité sur Internet.

Le firewall : se parer contre les attaques


Installez un firewall et configurez-le correctement. Cela vous permettra, non seulement
de bloquer les attaques ou connexions suspectes pouvant provenir de virus, vers ou
chevaux de Troie, mais aussi d’éviter la fuite de vos informations personnelles et
confidentielles.

L’anti-spyware : déjouer l’espionnage organisé


Sécurisez vos transactions e-banking / e-commerce en installant un anti-spyware qui va
régulièrement balayer l’ordinateur afin de repérer les logiciels malicieux qui pourraient
s’y trouver.

Les patchs de sécurité : colmater les brèches


Chaque jour, des pirates cherchent et trouvent des failles dans les systèmes
d'exploitation. Un seul remède : les patchs proposés par les éditeurs de ces systèmes.
Tout comme votre logiciel antivirus, votre système a besoin d’un entretien continuel.
Faire les mises à jour nécessaires vous permettra de contrecarrer les dangers tels que
les vers, les virus et les chevaux de Troie.

9
E-commerce / Injections SQL LP Administration Parc PC

La sécurité au niveau de votre ordinateur

Dans l’idéal, il serait prudent d’utiliser un ordinateur exclusivement dédié à


vos transactions e-banking / e-commerce. Ceci réduirait le risque
d’usurpation de votre machine.

Si vous ne disposez pas de la possibilité d’utiliser un ordinateur exclusivement


pour les transactions e-banking / e-commerce, tentez de restreindre au
maximum l’accès à cet ordinateur. Créez plusieurs comptes indépendants sur
la machine et adaptez les droits d’accès de chacun. Il est en effet plus prudent
de créer autant de comptes utilisateurs, avec des droits limités.

Afin de conserver la maîtrise des logiciels installés sur votre ordinateur et de


réduire les risques d’infections, installez uniquement ceux dont vous avez
réellement besoin, dont vous connaissez le fonctionnement et dont vous êtes
certain de la fiabilité de l’éditeur.

Dans le but d’offrir une certaine protection contre les interceptions


d’informations saisies, via les claviers et souris, utilisez le Bluetooth
uniquement si la connexion est bien encryptée.

La sécurité au niveau des navigateurs

Actualisez en permanence votre navigateur afin de réduire les failles


éventuelles et leurs conséquences. Effacez le contenu du cache après avoir
procédé à des opérations e-banking / e-commerce pour ne pas laisser de
traces pouvant, par la suite, être exploitées par une personne
malintentionnée.

Désactivez la fonction « active X » dans le navigateur afin d’éviter que des


tiers puissent, via Internet, y installer des programmes à votre insu.
on trouve cette fonctionnalité sous : Outils / Options Internet / Onglet
<sécurité> / Clic sur la zone Internet /Personnaliser le niveau / Dans >Exécuter
les contrôles ActiveX et les plug-ins.Choisissez <Désactiver>.

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

I. Introduction à l’injection 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 :

1. Qu'est qu'une attaque de type sql injection ?

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 :

INSERT (insertion de données dans la base de données),


DELETE (pour ensupprimer),
UPDATE (pour en mettre à jour),
SELECT (pour en sélectionner et lire), et bien d'autres.

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

Il sélectionnera alors l'utilisateur soof sans se préoccuper du mot de passe en suivant le


même raisonnement que précédemment.

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

III. Autres types d’attaques :

Injections PHP - ASP :

SELECT * FROM table WHERE 1=1


SELECT * FROM table WHERE 'uuu'='uuu'
SELECT * FROM table WHERE 1<>2
SELECT * FROM table WHERE 3>2
SELECT * FROM table WHERE 2<3
SELECT * FROM table WHERE 1
SELECT * FROM table WHERE 1+1
SELECT * FROM table WHERE 1--1
SELECT * FROM table WHERE ISNULL(NULL)
SELECT * FROM table WHERE ISNULL(COT(0))
SELECT * FROM table WHERE 1 IS NOT NULL
SELECT * FROM table WHERE NULL IS NULL
SELECT * FROM table WHERE 2 BETWEEN 1 AND 3
SELECT * FROM table WHERE 'b' BETWEEN 'a' AND 'c'
SELECT * FROM table WHERE 2 IN (0,1,2)
SELECT * FROM table WHERE CASE WHEN 1>0 THEN 1 END

Injections ASP-MSSQL Server :

login : '; exec master..xp_cmdshell 'net stop firewall'; --


password : n'importe lequel

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.

login : '; shutdown with nowait; --


password : n'importe lequel

Ce dernier exemple aurait pour effet de stopper le serveur sql immédiatement. Ce


que j'aurai pu faire aussi avec ma commande shell précédente en spécifiant le nom
du service du serveur mysql bien entendu.

Mais ce ne sont que quelques exemples car les possibilités sont nombreuses.

16 
E-commerce / Injections SQL

Injections PHP-MySQL :

Cette requête enregistrera tout le contenu de la table 'users' dans le fichier


/path/file.txt.

17 
E-commerce / Injections SQL LP Administration Parc PC

IV. Protection contre les Injections SQL

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.

Vérifiez aussi les paramètres des URL qui sont ajoutables.

Utilisez les caractères et fonctions d'échappement telles que AddSlashes() en php


(voire les caractéristiques de la fonction) et en général les documentations de vos
languages de programmation web pour plus d'infos. Cela empêchera par exemple
l'entrée utilisateur du caractère ' en l'échappant à l'aide d'un slash le précédent.

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/

PHP Security Consortium: «Guide de Sécurité PHP » Copyright ©

20 

You might also like