SlideShare une entreprise Scribd logo
1  sur  16
Sécurisation des sites web
EMNA BEY (GL4)
SAHAR DRIDI (RT3)
GHADA ESSAIED (RT3)
MOHAMED AYMEN KARMOUS (RT2)
Sécurisation des sites web |SECURILIGHT 2013
1
Table des matières
I. Présentation de l'atelier.................................................................................................... 2
II. Présentation des outils utilisés.......................................................................................... 2
1. WampServer.................................................................................................................. 2
2. Notepad ++.................................................................................................................... 2
3. VMware Workstation .................................................................................................... 2
III. Topologie du réseau...................................................................................................... 3
IV. Développement............................................................................................................. 3
1. Développement du site web ......................................................................................... 3
2. Sécurisation du site web................................................................................................ 6
a. Injection SQL.................................................................................................................. 6
b. Faille XSS........................................................................................................................ 7
c. Faille Include.................................................................................................................. 8
d. Faille Upload................................................................................................................ 10
e. Les CAPTCHA ............................................................................................................... 13
f. Le fichier .htaccess ...................................................................................................... 14
V. Conclusion ....................................................................................................................... 15
Sécurisation des sites web |SECURILIGHT 2013
2
I. Présentation de l'atelier
Nombreuses sont les personnes ayant l'envie de créer leur site par leurs propres moyens
malgré le déclin des tarifs pour la création des sites Web et les efforts menés par les agences
Web afin de proposer des sites toujours plus performants, adaptés au budget des
consommateurs.
Cependant il ne faut pas oublier que le développement Web est une "discipline"
relativement complexe et demande un investissement personnel considérable, ce qui peut
s'avérer très rapidement un vrai casse tête lorsque l'on débute dans la matière. Cette
problématique peut engendrer l'ouverture de failles de sécurité sur un site Web.
C'est pour remédier à ce problème que vous avons élaboré cet atelier permettant de
sécuriser un site web.
II. Présentation des outils utilisés
Pour réaliser cet atelier nous avons utilisé:
1. WampServer
C'est une plate-forme de développement Web sous Windows pour des applications Web
dynamiques à l’aide du serveur Apache2, du langage de scripts PHP et d’une base de
données MySQL. Il possède également PHPMyAdmin pour gérer plus facilement les bases
de données.
2. Notepad ++
C' est un éditeur de code source qui prend en charge plusieurs langages et que nous avons
utilisé pour créer nos pages html, php, etc...
3. VMware Workstation
C'est un logiciel de virtualisation permetant la création d'une ou plusieurs machines
virtuelles au sein d'un même système d'exploitation (généralement Windows ou Linux),
ceux-ci pouvant être reliés au réseau local avec une adresse IP différente, tout en étant sur
la même machine physique (machine existant réellement).
Sécurisation des sites web |SECURILIGHT 2013
3
III. Topologie du réseau
Notre serveur est WampServeur installé sur une machine Windows 7. Il nous permet
d'exécuter des scripts PHP et d'accéder à une base de données MySQL grâce à
PHPMyAdmin.
Notre client est, quant à lui, une machine virtuelle Backtrack qui tourne sur VMware en
mode bridged pour qu'elle ait sa propre adresse IP.
IV. Développement
1. Développement du site web
Commençons par créer un mini site web qui nous permettra d'exploiter les différentes failles
de sécurité et par la suite de les corriger.
Sécurisation des sites web |SECURILIGHT 2013
4
Ce site comporte les pages suivantes:
 La page inscription.php qui permet à internaute de créer un compte.
 La page connexion.php qui permet à un membre de se connecter.
Sécurisation des sites web |SECURILIGHT 2013
5
 La page espace-membre.php qui permet à un membre de voir son profil
 La page ajoutPhoto.php qui permet à un membre d'uploader une image.
 La page photpAjoute.php qui permet de visualiser l'image ajoutée.
Sécurisation des sites web |SECURILIGHT 2013
6
2. Sécurisation du site web
Maintenant que notre site est près, nous pouvons tester dessus les différentes failles de
sécurité et les sécuriser par la suite.
a. Injection SQL
Qu'est ce que l'injection SQL?
Cette faille apparaît quand il est possible d'injecter du code SQL dans les requêtes qui sont
faites dans une page web. C'est actuellement la "meilleure" vulnérabilité Web en rapport
fréquence/surface d'exploitation. Les conséquences d'une faille SQL peuvent être multiples,
du contournement de formulaires d'authentification au dump complet de la base de
données en passant par l'exécution arbitraire de code.
Comment l'exploiter?
Sur le site que nous avons développé, pour se connecter, on remplie le formulaire avec les
informations login et mot de passe. La page utilise ces informations pour envoyer la requête
mysql_query("SELECT bdd_id FROM membres WHERE bdd_login='$login' AND
bdd_mdp='$mdp'") sachant que $login et $mdp sont respectivement l'identifiant et le mot
de passe.
Un hacker peut saisir les valeurs suivantes:
$login = nimporte_quoi
$mdp = ' OR '1' = '1
la requete devient mysql_query("SELECT bdd_id FROM membres WHERE
bdd_login='nimporte_quoi' AND bdd_mdp='' OR '1' = '1'")
Vu que 1 = 1 est toujours vrai, l'utilisateur va être connecté en utilisant les infirmations du
premier membre récupéré de la base de données.
Ce type de faille est en général facile à reconnaître, puisque si l'on injecte un simple
guillemet dans le formulaire, une erreur interviendra (pour peu que les rapports d'erreurs
soient activés, ce qui est le cas par défaut ; sinon il est tout de même possible en général
d'observer des différences de comportement comme l'apparition d'une page vide).
Comment s'en protéger?
Une simple quotte « ' » peut couper la requête pour ensuite la modifier comme on le
souhaite. Le problème vient du fait que l'on n'a pas protéger ce caractère. En effet, pour
pouvoir utiliser des  (antislash) ou des ' (simples quottes) dans une chaine de caractères, on
a besoin de rajouter un «  » devant autrement dit il faut échapper ce caractère pour ne pas
le prendre en compte.
Avec PHP, il y a une multitude de fonctions permettant d'échapper ce genre de caractères
(strreplace, stripslashes ...) mais pour une meilleure pratique on utilise la fonction prévue
exprès pour ça et qui est mysql_real_escape_string() dans le cas d'une utilisation d'une base
de données MySql. Par exemple pour sécuriser les variable $login et $mpd utilisé dans la
requête précédente on devra faire:
$login = mysql_real_escape_string($login);
Sécurisation des sites web |SECURILIGHT 2013
7
$mdp = mysql_real_escape_string($mdp);
b. Faille XSS
Qu'est ce que la faille XSS?
La faille XSS (cross-site scripting) est une technique qui consiste à injecter du code HTML
contenant du JavaScript dans vos pages pour le faire exécuter à vos visiteurs.
Comment l'exploiter?
Si on appelle la page inscription.php de cette façon:
http://localhost/site_non_securise/connexion.php?erreur=<B>SecuriNet<%2FB>
Sachant que "%2F" remplace "/", on verra que le mot SecuriNets s'est affiché en gras. Le site
est donc vulnérable.
On peut aussi déclencher une alerte avec <script>alert('SecuriNets');</script>
Mettons, par exemple, ce script dans l'un des champs de la page d'inscription de notre site
et faisons notre inscription. A chaque fois qu'on se connecte avec ce nouveau compte, une
boite de dialogue, affichant SecuriNets, s'ouvre.
Certains pensent alors à supprimer <script> en faisant:
$texte = str_replace("<script>", "",$texte);
Mais ceci ne sert à rien si on lui passe:
<scr<script>ipt>alert("SecuriNets")</scr<script>ipt>
De plus, il n'y a pas que la balise script qui permet de lancer des scripts JavaScript, on trouve,
par exemple, le BBCode Image:
<img src="javascript:alert(' SecuriNets ')"/>
Sécurisation des sites web |SECURILIGHT 2013
8
On peut aussi utiliser onmouseover, onload, ... sur n'importe quelle balise; comme on peut
très bien encoder le texte.
Les choses deviennent vraiment critiques si le visiteur est assez malin pour récupérer vos
cookies de cette façon-là. Les cookies stockent des informations sur votre session et parfois
des informations plus confidentielles, comme votre pseudonyme et votre mot de passe sur
le site ! Il est possible de forcer le visiteur qui lira le code JavaScript à envoyer tous les
cookies qu'il a enregistrés pour votre site web, ce qui peut conduire au vol de son compte
sur ce site.
Comment s'en protéger?
Pour échapper le code HTML, il suffit d'utiliser la fonction htmlspecialchars() qui va
transformer les chevrons des balises HTML <> en &lt; et &gt; respectivement. Cela
provoquera l'affichage de la balise plutôt que son exécution.
$login=htmlspecialchars (trim($_POST['login']));
Il faut penser à utiliser cette fonction sur tous les textes envoyés par l'utilisateur qui sont
susceptibles d'être affichés sur une page web.
Si vous préférez retirer les balises HTML que le visiteur a tenté d'envoyer plutôt que de les
afficher, il faut utiliser la fonction strip_tags().
c. Faille Include
Qu'est ce que la faille Include?
La fonction include permet, comme son nom l’indique, d’inclure une page dans une autre ,
on l’utilise comme ceci:
<?php
include("page.php");
?>
Si toutes vos pages requièrent la page config.php dans laquelle sont contenues les
informations de connexion a la base de données, il convient de l’inclure dans chacune de vos
pages plutôt que de retaper l’équivalent de mysql.php dans toutes celle-ci.
La fonction include vous permet de n’avoir qu’une seule page config.php, et toutes les pages
de votre site l’incluront.
Comment l'exploiter?
Supposons que nous avons la page index.php suivante:
<?php
if (isset($_GET["page"]))
include($_GET["page"]);
else include ('connexion.php');
?>
Sécurisation des sites web |SECURILIGHT 2013
9
Ce code permet d'afficher la page passée en paramètre ou bien la page par défaut qui est
connexion.php.
Si on tape http://localhost/site_non_securise/index.php?page=inscription.php la page
inscription s'affiche .
Si on tape http://localhost/site_non_securise/index.php?page=http://www.google.com
alors la page Google s'exécutera et s'affichera sur notre serveur.
Maintenant, si cette page en question est une backdoor comme c99.php on peut alors lister
tous les fichiers, les éditer, en créer, accéder à la base de données, etc...
Il est aussi possible, avec cette faille, d’exécuter un fichier se trouvant sur le serveur
vulnérable. Et d’ailleurs, c’est parfois la seule possibilité, car certaines protections
désactivent la possibilité d’inclure du code situé sur un autre serveur.
Comment s'en protéger?
La meilleure façon pour corriger une Include est de :
 Faire un test pour chaque pages de votre site, certes c’est long mais il n’y a pas
mieux.
switch ($page) {
case "inscription":
include("inscription.php");
break;
case "connexion":
include("connexion.php");
break;
case "espace-membre":
include("espace-membre.php");
break;
default:
include ("connexion.php");
}
 En php4, mettre la commande allow_url_fopen à off. Cette dernier permet la lecture
de fichiers situés sur un autre serveur;
 En php5, mettre la commande allow_url_include à off. C’est un apport par rapport à
php4, qui distingue les fichiers lus des fichiers inclus.
Sécurisation des sites web |SECURILIGHT 2013
10
d. Faille Upload
Qu'est ce que la faille Upload?
L’upload permet le transfert des fichiers depuis votre machine qui est le client vers le site qui
est le serveur, mais souvent les scripts d’upload contiennent des vulnérabilités.
La faille upload est une faille permettant d’uploader des fichiers avec une extension non
autorisée, cette faille est due à la mauvaise configuration du script d’upload ou à l’absence
complète de sécurité. Celle ci est généralement présente dans les scripts d’upload d’images.
Le but de cette faille est d’uploader un fichier avec une extension non autorisée. (Par
exemple un code php) de façon à avoir un accès au serveur cible.
Comment exploiter cette faille?
Il y 'a 3 manières pour exploiter cette faille:
 La plus simple:
Le serveur ne vérifie rien du tous lors de l'upload. Lorsqu'on doit choisir une image à
uploader, on choisit simplement notre fichier page.php et on envoie.
 La double extension:
Certains scripts ne font que vérifier l’extension du fichier, encore cette protection peut être
bypasser en faisant une double extension par exemple ma_page.php.gif.
 Bypass mime vérification:
Le type MIME, c’est le renseignement donné par $_FILES['monFichier']['type']
Certains scripts ne font que vérifier si le mime correspond aux types de fichiers autorisés par
contre une vérification de mime n’est pas suffisante parce qu’on peut bypasser cette
vérification en utilisant par exemple le module Tamper Data de Firefox.
Prenons notre page d'upload qui n'accepte que des fichiers de type GIF, JPEG, JPG ou PNG
grace à la vérification du content_type du fichier comme suit:
if (($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg")||
($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg")||
($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png"))
{
//traitement
}
Sécurisation des sites web |SECURILIGHT 2013
11
Activons Tamper Data comme suit:
On démarre l'altération en cliquant sur Start Tamper.
Ensuite, on sélectionne le fichier php qu'on veut uploder et on clique sur Upload. Une
nouvelle fenêtre s'ouvre, on clique sur Tamper.
Sécurisation des sites web |SECURILIGHT 2013
12
Une autre fenêtre s'ouvre et dans cette dernière il faut modifier, dans POST_DATA, le
content type qui est "Application/x-php" par "image/png"
Et voila notre fichier est uploadé.
Sécurisation des sites web |SECURILIGHT 2013
13
On peut maintenant y accéder. Comme ce fichier contient un code pour afficher le contenu
du dossier courant, on aura:
Comment s'en protéger?
Pour sécuriser un site contre cette faille on pourrait, en plus de la vérification du
content_type, rajouter:
 La vérification de l'extension:
On ajoute dans notre page upload.php un tableau contenant les extensions permises et on
vérifie si l'extension de notre fichier y appartient comme suit:
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if (in_array($extension, $allowedExts)){
//traitement
}
 La vérification de la taille du fichier qui ne doit pas dépasser une certaine limite:
if($_FILES["file"]["size"] < 1000000){
//traitement
}
 Le renommage des fichiers uploadés avant de les enregistrer
e. Les CAPTCHA
Les sites web sont visités et utilisés non seulement par des êtres humains, mais aussi par des
machines, des ordinateurs. On appelle ces programmes qui parcourent sans cesse le web
des robots (on dit aussi bot).
Certains bots ont de bonnes intentions, comme par exemple les robots d'indexation des
moteurs de recherche (appelés crawler) comme Googlebot (Google), ou Slurp (Yahoo !).
Mais d'autres bots ont des objectifs beaucoup moins louables, leur but est par exemple de
s'inscrire sur des forums de discussion pour poster des messages publicitaires (spam), ou de
poster des commentaires de spam sur un blog.
Sécurisation des sites web |SECURILIGHT 2013
14
L'une des solutions, pour lutter contre ces robots, consiste à soumettre l'utilisateur à un test
auquel seul un être humain est sensé être capable de répondre (on appelle ça un test de
Turing). En effet, on ajoute, tout simplement, un champ anti-spam appelé Captcha dans un
formulaire HTML qu'on souhaite protéger contre les robots.
f. Le fichier .htaccess
Un .htaccess est un fichier qui sert à indiquer des commandes pour le serveur, c'est un
fichier de configuration pour Apache.
Il permet, par exemple, de protéger certains répertoires avec des mots de passe, de
restreindre l'accès à une page Web, d'empêcher le listage des répertoires (quand ils ne
contiennent pas de fichier index.html), ou encore d'utiliser vos propres pages d'erreur (404,
403)..
Un .htaccess placé dans un répertoire agit sur ce répertoire et tous les sous-répertoires qu'il
contient.
Personnaliser les pages d'erreur:
Il peut être utile de personnaliser les pages d'erreur 404 (File Not Found), 403 (Forbidden),
500 (Internal Server Error)..., par exemple pour demander à l'internaute de signaler les liens
cassés, ou pour lui proposer de faire une recherche sur le site.
Dans se cas on mettra dans le fichier .htaccess :
ErrorDocument numero_d'_erreur /chemin/du/fichier.html
Par exemple, on veut personnaliser la page d'erreur 403, on crée la page 403.html dans le
répertoire erreurs puis, on ajoute cette ligne au fichier .htaccess:
ErrorDocument 403 /erreurs/403.html
Restrictions d'accès:
On peut interdire l'accès a notre site à partir de certaines adresses IP.
Sécurisation des sites web |SECURILIGHT 2013
15
Pour interdire une adresse IP :
deny from 192.168.1.1
Inversement, on peut autoriser une adresse IP :
allow from 192.168.1.2
on peut aussi utiliser allow from all et deny from all.
Interdire de lister le contenu d'un dossier:
On peut interdire le listage du contenu d'un dossier en ajoutant cette ligne dans le fichier
.htaccess:
Options -Indexes
V. Conclusion
Au cours de cet atelier, nous avons pu comprendre le fonctionnement d'un certain nombre
d'attaques et nous avons essayé de les corriger pour sécuriser tant soit peu notre site web.
Mais il faut être très vigilent car ce ne sont pas les seules problèmes qu'un site peut
rencontrer.

Contenu connexe

Tendances

Rapport DVWA: CSRF
Rapport DVWA: CSRFRapport DVWA: CSRF
Rapport DVWA: CSRFAyoub Rouzi
 
OWASP Top Ten 2007 - Sommaire executif - French version
OWASP Top Ten 2007 - Sommaire executif - French versionOWASP Top Ten 2007 - Sommaire executif - French version
OWASP Top Ten 2007 - Sommaire executif - French versionspl0it
 
Sécurité: Ne soyez pas à risque
Sécurité: Ne soyez pas à risqueSécurité: Ne soyez pas à risque
Sécurité: Ne soyez pas à risqueMaxime Jobin
 
Beautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirBeautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirYves Van Goethem
 
Découverte d'aeSecure, sécurisation et optimisation sites Apache
Découverte d'aeSecure, sécurisation et optimisation sites ApacheDécouverte d'aeSecure, sécurisation et optimisation sites Apache
Découverte d'aeSecure, sécurisation et optimisation sites ApacheChristophe Avonture
 
Apache ssl
Apache sslApache ssl
Apache sslGSI
 
Sécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du webSécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du webIZZA Samir
 
Accroître la sécurité de son site internet et de Joomla! plus spécifiquement
Accroître la sécurité de son site internet et de Joomla! plus spécifiquementAccroître la sécurité de son site internet et de Joomla! plus spécifiquement
Accroître la sécurité de son site internet et de Joomla! plus spécifiquementChristophe Avonture
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapBassem ABCHA
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linuxKhalid ALLILI
 
Jquery
JqueryJquery
Jquerykrymo
 
Sécuriser un site Wordpress
Sécuriser un site WordpressSécuriser un site Wordpress
Sécuriser un site Wordpressbestyuna
 
Ssl et certification electronique - (construction de certification)
Ssl et certification electronique  - (construction de certification)Ssl et certification electronique  - (construction de certification)
Ssl et certification electronique - (construction de certification)achraf_ing
 
Installer word press en local, automatique, simplement
Installer word press en local, automatique, simplementInstaller word press en local, automatique, simplement
Installer word press en local, automatique, simplementFabrice Ducarme
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express jsAbdoulaye Dieng
 
CasperJs, votre nouveau meilleur ami
CasperJs, votre nouveau meilleur amiCasperJs, votre nouveau meilleur ami
CasperJs, votre nouveau meilleur amiMickaël Andrieu
 

Tendances (20)

Rapport DVWA: CSRF
Rapport DVWA: CSRFRapport DVWA: CSRF
Rapport DVWA: CSRF
 
OWASP Top Ten 2007 - Sommaire executif - French version
OWASP Top Ten 2007 - Sommaire executif - French versionOWASP Top Ten 2007 - Sommaire executif - French version
OWASP Top Ten 2007 - Sommaire executif - French version
 
Sécurité: Ne soyez pas à risque
Sécurité: Ne soyez pas à risqueSécurité: Ne soyez pas à risque
Sécurité: Ne soyez pas à risque
 
Beautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenirBeautiful CSS : Structurer, documenter, maintenir
Beautiful CSS : Structurer, documenter, maintenir
 
Securité web
Securité webSecurité web
Securité web
 
Mysql
MysqlMysql
Mysql
 
Découverte d'aeSecure, sécurisation et optimisation sites Apache
Découverte d'aeSecure, sécurisation et optimisation sites ApacheDécouverte d'aeSecure, sécurisation et optimisation sites Apache
Découverte d'aeSecure, sécurisation et optimisation sites Apache
 
Apache ssl
Apache sslApache ssl
Apache ssl
 
Sécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du webSécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du web
 
Accroître la sécurité de son site internet et de Joomla! plus spécifiquement
Accroître la sécurité de son site internet et de Joomla! plus spécifiquementAccroître la sécurité de son site internet et de Joomla! plus spécifiquement
Accroître la sécurité de son site internet et de Joomla! plus spécifiquement
 
Application web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrapApplication web php5 html5 css3 bootstrap
Application web php5 html5 css3 bootstrap
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linux
 
Tapestry
TapestryTapestry
Tapestry
 
Jquery
JqueryJquery
Jquery
 
Sécuriser un site Wordpress
Sécuriser un site WordpressSécuriser un site Wordpress
Sécuriser un site Wordpress
 
Ssl et certification electronique - (construction de certification)
Ssl et certification electronique  - (construction de certification)Ssl et certification electronique  - (construction de certification)
Ssl et certification electronique - (construction de certification)
 
Installer word press en local, automatique, simplement
Installer word press en local, automatique, simplementInstaller word press en local, automatique, simplement
Installer word press en local, automatique, simplement
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
CasperJs, votre nouveau meilleur ami
CasperJs, votre nouveau meilleur amiCasperJs, votre nouveau meilleur ami
CasperJs, votre nouveau meilleur ami
 
Secubasejoomla
SecubasejoomlaSecubasejoomla
Secubasejoomla
 

En vedette

initiation SSH_SecuriNets ISI Tunisie
initiation SSH_SecuriNets ISI Tunisieinitiation SSH_SecuriNets ISI Tunisie
initiation SSH_SecuriNets ISI TunisieDonia Hammami
 
Introduction à itil v3
Introduction à itil v3Introduction à itil v3
Introduction à itil v3Renaud BROSSE
 
Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2Sylvain Maret
 
Sécurité des systèmes d'information
Sécurité des systèmes d'informationSécurité des systèmes d'information
Sécurité des systèmes d'informationFranck Franchin
 
Audit sécurité des systèmes d’information
Audit sécurité des systèmes d’informationAudit sécurité des systèmes d’information
Audit sécurité des systèmes d’informationAbbes Rharrab
 
Le Growth Hacking est-il réservé aux startups US ?
Le Growth Hacking est-il réservé aux startups US ? Le Growth Hacking est-il réservé aux startups US ?
Le Growth Hacking est-il réservé aux startups US ? polenumerique33
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseAntonio Fontes
 
Alphorm.com Formation Hacking et Sécurité, l'essentiel
Alphorm.com Formation Hacking et Sécurité, l'essentielAlphorm.com Formation Hacking et Sécurité, l'essentiel
Alphorm.com Formation Hacking et Sécurité, l'essentielAlphorm
 

En vedette (10)

initiation SSH_SecuriNets ISI Tunisie
initiation SSH_SecuriNets ISI Tunisieinitiation SSH_SecuriNets ISI Tunisie
initiation SSH_SecuriNets ISI Tunisie
 
Introduction à itil v3
Introduction à itil v3Introduction à itil v3
Introduction à itil v3
 
Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2Introduction à La Sécurité Informatique 1/2
Introduction à La Sécurité Informatique 1/2
 
Sécurité des systèmes d'information
Sécurité des systèmes d'informationSécurité des systèmes d'information
Sécurité des systèmes d'information
 
Audit sécurité des systèmes d’information
Audit sécurité des systèmes d’informationAudit sécurité des systèmes d’information
Audit sécurité des systèmes d’information
 
Le Growth Hacking est-il réservé aux startups US ?
Le Growth Hacking est-il réservé aux startups US ? Le Growth Hacking est-il réservé aux startups US ?
Le Growth Hacking est-il réservé aux startups US ?
 
Introduction à ITIL
Introduction à ITILIntroduction à ITIL
Introduction à ITIL
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défense
 
Alphorm.com Formation Hacking et Sécurité, l'essentiel
Alphorm.com Formation Hacking et Sécurité, l'essentielAlphorm.com Formation Hacking et Sécurité, l'essentiel
Alphorm.com Formation Hacking et Sécurité, l'essentiel
 
ITIL v3 : Présentation
ITIL v3 : PrésentationITIL v3 : Présentation
ITIL v3 : Présentation
 

Similaire à Tuto atelier securisation_site_web

Le Développement d’une Application Web
Le Développement d’une Application WebLe Développement d’une Application Web
Le Développement d’une Application WebMalick Mbaye
 
Webinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme ThéméeWebinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme ThéméeMarie Tapia
 
JWT-spring-boot-avancer.pdf
JWT-spring-boot-avancer.pdfJWT-spring-boot-avancer.pdf
JWT-spring-boot-avancer.pdfJaouad Assabbour
 
White paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRFWhite paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRFManfred Touron
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniterAtsé François-Xavier KOBON
 
javaScript(1)-2023-2024-Partie1-Mechid (1).pdf
javaScript(1)-2023-2024-Partie1-Mechid (1).pdfjavaScript(1)-2023-2024-Partie1-Mechid (1).pdf
javaScript(1)-2023-2024-Partie1-Mechid (1).pdfmistersmile053
 
La sécurité des applications avec ESAPI
La sécurité des applications avec ESAPILa sécurité des applications avec ESAPI
La sécurité des applications avec ESAPITakfarinas KENOUCHE
 
Securisation des web services soap contre les attaques par injection
Securisation des web services soap contre les attaques par injectionSecurisation des web services soap contre les attaques par injection
Securisation des web services soap contre les attaques par injectionZakaria SMAHI
 
Owasp top 10 2010 Resist toulouse
Owasp top 10   2010  Resist toulouseOwasp top 10   2010  Resist toulouse
Owasp top 10 2010 Resist toulouseSébastien GIORIA
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications webMarcel TCHOULEGHEU
 
Alphorm.com Formation Microsoft Azure (AZ-303) : Architecture technologies
Alphorm.com Formation Microsoft Azure (AZ-303) : Architecture technologiesAlphorm.com Formation Microsoft Azure (AZ-303) : Architecture technologies
Alphorm.com Formation Microsoft Azure (AZ-303) : Architecture technologiesAlphorm
 
Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Asma Messaoudi
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Microsoft Décideurs IT
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Microsoft Technet France
 
Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Hamza Ben Marzouk
 
Deployer son propre SOC !
Deployer son propre SOC ! Deployer son propre SOC !
Deployer son propre SOC ! SecludIT
 

Similaire à Tuto atelier securisation_site_web (20)

La Sécurité Sur Le Web
La Sécurité Sur Le WebLa Sécurité Sur Le Web
La Sécurité Sur Le Web
 
Le Développement d’une Application Web
Le Développement d’une Application WebLe Développement d’une Application Web
Le Développement d’une Application Web
 
Webinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme ThéméeWebinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme Thémée
 
JWT-spring-boot-avancer.pdf
JWT-spring-boot-avancer.pdfJWT-spring-boot-avancer.pdf
JWT-spring-boot-avancer.pdf
 
White paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRFWhite paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRF
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
javaScript(1)-2023-2024-Partie1-Mechid (1).pdf
javaScript(1)-2023-2024-Partie1-Mechid (1).pdfjavaScript(1)-2023-2024-Partie1-Mechid (1).pdf
javaScript(1)-2023-2024-Partie1-Mechid (1).pdf
 
[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker
 
La sécurité des applications avec ESAPI
La sécurité des applications avec ESAPILa sécurité des applications avec ESAPI
La sécurité des applications avec ESAPI
 
Securisation des web services soap contre les attaques par injection
Securisation des web services soap contre les attaques par injectionSecurisation des web services soap contre les attaques par injection
Securisation des web services soap contre les attaques par injection
 
Securité asp.net
Securité asp.netSecurité asp.net
Securité asp.net
 
Owasp top 10 2010 Resist toulouse
Owasp top 10   2010  Resist toulouseOwasp top 10   2010  Resist toulouse
Owasp top 10 2010 Resist toulouse
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications web
 
Alphorm.com Formation Microsoft Azure (AZ-303) : Architecture technologies
Alphorm.com Formation Microsoft Azure (AZ-303) : Architecture technologiesAlphorm.com Formation Microsoft Azure (AZ-303) : Architecture technologies
Alphorm.com Formation Microsoft Azure (AZ-303) : Architecture technologies
 
Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
 
Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015
 
rapportWAS
rapportWASrapportWAS
rapportWAS
 
Deployer son propre SOC !
Deployer son propre SOC ! Deployer son propre SOC !
Deployer son propre SOC !
 

Plus de sahar dridi

Supervision réseaux métro ethernet et cloudification
Supervision réseaux métro ethernet et cloudificationSupervision réseaux métro ethernet et cloudification
Supervision réseaux métro ethernet et cloudificationsahar dridi
 
Atelier configuration d une maquette voip
Atelier configuration d une maquette voip Atelier configuration d une maquette voip
Atelier configuration d une maquette voip sahar dridi
 
Security alarm application droidcon tunisia challenge 2015
Security alarm application droidcon tunisia challenge 2015Security alarm application droidcon tunisia challenge 2015
Security alarm application droidcon tunisia challenge 2015sahar dridi
 
Atelier hadoop-single-sign-on
Atelier hadoop-single-sign-onAtelier hadoop-single-sign-on
Atelier hadoop-single-sign-onsahar dridi
 
Rapport dridi sahar_tunisie_telecom
Rapport dridi sahar_tunisie_telecomRapport dridi sahar_tunisie_telecom
Rapport dridi sahar_tunisie_telecomsahar dridi
 
Rapport de Projet professionnel personnel.pdf
Rapport de Projet professionnel personnel.pdfRapport de Projet professionnel personnel.pdf
Rapport de Projet professionnel personnel.pdfsahar dridi
 

Plus de sahar dridi (6)

Supervision réseaux métro ethernet et cloudification
Supervision réseaux métro ethernet et cloudificationSupervision réseaux métro ethernet et cloudification
Supervision réseaux métro ethernet et cloudification
 
Atelier configuration d une maquette voip
Atelier configuration d une maquette voip Atelier configuration d une maquette voip
Atelier configuration d une maquette voip
 
Security alarm application droidcon tunisia challenge 2015
Security alarm application droidcon tunisia challenge 2015Security alarm application droidcon tunisia challenge 2015
Security alarm application droidcon tunisia challenge 2015
 
Atelier hadoop-single-sign-on
Atelier hadoop-single-sign-onAtelier hadoop-single-sign-on
Atelier hadoop-single-sign-on
 
Rapport dridi sahar_tunisie_telecom
Rapport dridi sahar_tunisie_telecomRapport dridi sahar_tunisie_telecom
Rapport dridi sahar_tunisie_telecom
 
Rapport de Projet professionnel personnel.pdf
Rapport de Projet professionnel personnel.pdfRapport de Projet professionnel personnel.pdf
Rapport de Projet professionnel personnel.pdf
 

Dernier

GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...Institut de l'Elevage - Idele
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...Institut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdfSoukainaMounawir
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...Institut de l'Elevage - Idele
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 

Dernier (15)

GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdf
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 

Tuto atelier securisation_site_web

  • 1. Sécurisation des sites web EMNA BEY (GL4) SAHAR DRIDI (RT3) GHADA ESSAIED (RT3) MOHAMED AYMEN KARMOUS (RT2)
  • 2. Sécurisation des sites web |SECURILIGHT 2013 1 Table des matières I. Présentation de l'atelier.................................................................................................... 2 II. Présentation des outils utilisés.......................................................................................... 2 1. WampServer.................................................................................................................. 2 2. Notepad ++.................................................................................................................... 2 3. VMware Workstation .................................................................................................... 2 III. Topologie du réseau...................................................................................................... 3 IV. Développement............................................................................................................. 3 1. Développement du site web ......................................................................................... 3 2. Sécurisation du site web................................................................................................ 6 a. Injection SQL.................................................................................................................. 6 b. Faille XSS........................................................................................................................ 7 c. Faille Include.................................................................................................................. 8 d. Faille Upload................................................................................................................ 10 e. Les CAPTCHA ............................................................................................................... 13 f. Le fichier .htaccess ...................................................................................................... 14 V. Conclusion ....................................................................................................................... 15
  • 3. Sécurisation des sites web |SECURILIGHT 2013 2 I. Présentation de l'atelier Nombreuses sont les personnes ayant l'envie de créer leur site par leurs propres moyens malgré le déclin des tarifs pour la création des sites Web et les efforts menés par les agences Web afin de proposer des sites toujours plus performants, adaptés au budget des consommateurs. Cependant il ne faut pas oublier que le développement Web est une "discipline" relativement complexe et demande un investissement personnel considérable, ce qui peut s'avérer très rapidement un vrai casse tête lorsque l'on débute dans la matière. Cette problématique peut engendrer l'ouverture de failles de sécurité sur un site Web. C'est pour remédier à ce problème que vous avons élaboré cet atelier permettant de sécuriser un site web. II. Présentation des outils utilisés Pour réaliser cet atelier nous avons utilisé: 1. WampServer C'est une plate-forme de développement Web sous Windows pour des applications Web dynamiques à l’aide du serveur Apache2, du langage de scripts PHP et d’une base de données MySQL. Il possède également PHPMyAdmin pour gérer plus facilement les bases de données. 2. Notepad ++ C' est un éditeur de code source qui prend en charge plusieurs langages et que nous avons utilisé pour créer nos pages html, php, etc... 3. VMware Workstation C'est un logiciel de virtualisation permetant la création d'une ou plusieurs machines virtuelles au sein d'un même système d'exploitation (généralement Windows ou Linux), ceux-ci pouvant être reliés au réseau local avec une adresse IP différente, tout en étant sur la même machine physique (machine existant réellement).
  • 4. Sécurisation des sites web |SECURILIGHT 2013 3 III. Topologie du réseau Notre serveur est WampServeur installé sur une machine Windows 7. Il nous permet d'exécuter des scripts PHP et d'accéder à une base de données MySQL grâce à PHPMyAdmin. Notre client est, quant à lui, une machine virtuelle Backtrack qui tourne sur VMware en mode bridged pour qu'elle ait sa propre adresse IP. IV. Développement 1. Développement du site web Commençons par créer un mini site web qui nous permettra d'exploiter les différentes failles de sécurité et par la suite de les corriger.
  • 5. Sécurisation des sites web |SECURILIGHT 2013 4 Ce site comporte les pages suivantes:  La page inscription.php qui permet à internaute de créer un compte.  La page connexion.php qui permet à un membre de se connecter.
  • 6. Sécurisation des sites web |SECURILIGHT 2013 5  La page espace-membre.php qui permet à un membre de voir son profil  La page ajoutPhoto.php qui permet à un membre d'uploader une image.  La page photpAjoute.php qui permet de visualiser l'image ajoutée.
  • 7. Sécurisation des sites web |SECURILIGHT 2013 6 2. Sécurisation du site web Maintenant que notre site est près, nous pouvons tester dessus les différentes failles de sécurité et les sécuriser par la suite. a. Injection SQL Qu'est ce que l'injection SQL? Cette faille apparaît quand il est possible d'injecter du code SQL dans les requêtes qui sont faites dans une page web. C'est actuellement la "meilleure" vulnérabilité Web en rapport fréquence/surface d'exploitation. Les conséquences d'une faille SQL peuvent être multiples, du contournement de formulaires d'authentification au dump complet de la base de données en passant par l'exécution arbitraire de code. Comment l'exploiter? Sur le site que nous avons développé, pour se connecter, on remplie le formulaire avec les informations login et mot de passe. La page utilise ces informations pour envoyer la requête mysql_query("SELECT bdd_id FROM membres WHERE bdd_login='$login' AND bdd_mdp='$mdp'") sachant que $login et $mdp sont respectivement l'identifiant et le mot de passe. Un hacker peut saisir les valeurs suivantes: $login = nimporte_quoi $mdp = ' OR '1' = '1 la requete devient mysql_query("SELECT bdd_id FROM membres WHERE bdd_login='nimporte_quoi' AND bdd_mdp='' OR '1' = '1'") Vu que 1 = 1 est toujours vrai, l'utilisateur va être connecté en utilisant les infirmations du premier membre récupéré de la base de données. Ce type de faille est en général facile à reconnaître, puisque si l'on injecte un simple guillemet dans le formulaire, une erreur interviendra (pour peu que les rapports d'erreurs soient activés, ce qui est le cas par défaut ; sinon il est tout de même possible en général d'observer des différences de comportement comme l'apparition d'une page vide). Comment s'en protéger? Une simple quotte « ' » peut couper la requête pour ensuite la modifier comme on le souhaite. Le problème vient du fait que l'on n'a pas protéger ce caractère. En effet, pour pouvoir utiliser des (antislash) ou des ' (simples quottes) dans une chaine de caractères, on a besoin de rajouter un « » devant autrement dit il faut échapper ce caractère pour ne pas le prendre en compte. Avec PHP, il y a une multitude de fonctions permettant d'échapper ce genre de caractères (strreplace, stripslashes ...) mais pour une meilleure pratique on utilise la fonction prévue exprès pour ça et qui est mysql_real_escape_string() dans le cas d'une utilisation d'une base de données MySql. Par exemple pour sécuriser les variable $login et $mpd utilisé dans la requête précédente on devra faire: $login = mysql_real_escape_string($login);
  • 8. Sécurisation des sites web |SECURILIGHT 2013 7 $mdp = mysql_real_escape_string($mdp); b. Faille XSS Qu'est ce que la faille XSS? La faille XSS (cross-site scripting) est une technique qui consiste à injecter du code HTML contenant du JavaScript dans vos pages pour le faire exécuter à vos visiteurs. Comment l'exploiter? Si on appelle la page inscription.php de cette façon: http://localhost/site_non_securise/connexion.php?erreur=<B>SecuriNet<%2FB> Sachant que "%2F" remplace "/", on verra que le mot SecuriNets s'est affiché en gras. Le site est donc vulnérable. On peut aussi déclencher une alerte avec <script>alert('SecuriNets');</script> Mettons, par exemple, ce script dans l'un des champs de la page d'inscription de notre site et faisons notre inscription. A chaque fois qu'on se connecte avec ce nouveau compte, une boite de dialogue, affichant SecuriNets, s'ouvre. Certains pensent alors à supprimer <script> en faisant: $texte = str_replace("<script>", "",$texte); Mais ceci ne sert à rien si on lui passe: <scr<script>ipt>alert("SecuriNets")</scr<script>ipt> De plus, il n'y a pas que la balise script qui permet de lancer des scripts JavaScript, on trouve, par exemple, le BBCode Image: <img src="javascript:alert(' SecuriNets ')"/>
  • 9. Sécurisation des sites web |SECURILIGHT 2013 8 On peut aussi utiliser onmouseover, onload, ... sur n'importe quelle balise; comme on peut très bien encoder le texte. Les choses deviennent vraiment critiques si le visiteur est assez malin pour récupérer vos cookies de cette façon-là. Les cookies stockent des informations sur votre session et parfois des informations plus confidentielles, comme votre pseudonyme et votre mot de passe sur le site ! Il est possible de forcer le visiteur qui lira le code JavaScript à envoyer tous les cookies qu'il a enregistrés pour votre site web, ce qui peut conduire au vol de son compte sur ce site. Comment s'en protéger? Pour échapper le code HTML, il suffit d'utiliser la fonction htmlspecialchars() qui va transformer les chevrons des balises HTML <> en &lt; et &gt; respectivement. Cela provoquera l'affichage de la balise plutôt que son exécution. $login=htmlspecialchars (trim($_POST['login'])); Il faut penser à utiliser cette fonction sur tous les textes envoyés par l'utilisateur qui sont susceptibles d'être affichés sur une page web. Si vous préférez retirer les balises HTML que le visiteur a tenté d'envoyer plutôt que de les afficher, il faut utiliser la fonction strip_tags(). c. Faille Include Qu'est ce que la faille Include? La fonction include permet, comme son nom l’indique, d’inclure une page dans une autre , on l’utilise comme ceci: <?php include("page.php"); ?> Si toutes vos pages requièrent la page config.php dans laquelle sont contenues les informations de connexion a la base de données, il convient de l’inclure dans chacune de vos pages plutôt que de retaper l’équivalent de mysql.php dans toutes celle-ci. La fonction include vous permet de n’avoir qu’une seule page config.php, et toutes les pages de votre site l’incluront. Comment l'exploiter? Supposons que nous avons la page index.php suivante: <?php if (isset($_GET["page"])) include($_GET["page"]); else include ('connexion.php'); ?>
  • 10. Sécurisation des sites web |SECURILIGHT 2013 9 Ce code permet d'afficher la page passée en paramètre ou bien la page par défaut qui est connexion.php. Si on tape http://localhost/site_non_securise/index.php?page=inscription.php la page inscription s'affiche . Si on tape http://localhost/site_non_securise/index.php?page=http://www.google.com alors la page Google s'exécutera et s'affichera sur notre serveur. Maintenant, si cette page en question est une backdoor comme c99.php on peut alors lister tous les fichiers, les éditer, en créer, accéder à la base de données, etc... Il est aussi possible, avec cette faille, d’exécuter un fichier se trouvant sur le serveur vulnérable. Et d’ailleurs, c’est parfois la seule possibilité, car certaines protections désactivent la possibilité d’inclure du code situé sur un autre serveur. Comment s'en protéger? La meilleure façon pour corriger une Include est de :  Faire un test pour chaque pages de votre site, certes c’est long mais il n’y a pas mieux. switch ($page) { case "inscription": include("inscription.php"); break; case "connexion": include("connexion.php"); break; case "espace-membre": include("espace-membre.php"); break; default: include ("connexion.php"); }  En php4, mettre la commande allow_url_fopen à off. Cette dernier permet la lecture de fichiers situés sur un autre serveur;  En php5, mettre la commande allow_url_include à off. C’est un apport par rapport à php4, qui distingue les fichiers lus des fichiers inclus.
  • 11. Sécurisation des sites web |SECURILIGHT 2013 10 d. Faille Upload Qu'est ce que la faille Upload? L’upload permet le transfert des fichiers depuis votre machine qui est le client vers le site qui est le serveur, mais souvent les scripts d’upload contiennent des vulnérabilités. La faille upload est une faille permettant d’uploader des fichiers avec une extension non autorisée, cette faille est due à la mauvaise configuration du script d’upload ou à l’absence complète de sécurité. Celle ci est généralement présente dans les scripts d’upload d’images. Le but de cette faille est d’uploader un fichier avec une extension non autorisée. (Par exemple un code php) de façon à avoir un accès au serveur cible. Comment exploiter cette faille? Il y 'a 3 manières pour exploiter cette faille:  La plus simple: Le serveur ne vérifie rien du tous lors de l'upload. Lorsqu'on doit choisir une image à uploader, on choisit simplement notre fichier page.php et on envoie.  La double extension: Certains scripts ne font que vérifier l’extension du fichier, encore cette protection peut être bypasser en faisant une double extension par exemple ma_page.php.gif.  Bypass mime vérification: Le type MIME, c’est le renseignement donné par $_FILES['monFichier']['type'] Certains scripts ne font que vérifier si le mime correspond aux types de fichiers autorisés par contre une vérification de mime n’est pas suffisante parce qu’on peut bypasser cette vérification en utilisant par exemple le module Tamper Data de Firefox. Prenons notre page d'upload qui n'accepte que des fichiers de type GIF, JPEG, JPG ou PNG grace à la vérification du content_type du fichier comme suit: if (($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg")|| ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) { //traitement }
  • 12. Sécurisation des sites web |SECURILIGHT 2013 11 Activons Tamper Data comme suit: On démarre l'altération en cliquant sur Start Tamper. Ensuite, on sélectionne le fichier php qu'on veut uploder et on clique sur Upload. Une nouvelle fenêtre s'ouvre, on clique sur Tamper.
  • 13. Sécurisation des sites web |SECURILIGHT 2013 12 Une autre fenêtre s'ouvre et dans cette dernière il faut modifier, dans POST_DATA, le content type qui est "Application/x-php" par "image/png" Et voila notre fichier est uploadé.
  • 14. Sécurisation des sites web |SECURILIGHT 2013 13 On peut maintenant y accéder. Comme ce fichier contient un code pour afficher le contenu du dossier courant, on aura: Comment s'en protéger? Pour sécuriser un site contre cette faille on pourrait, en plus de la vérification du content_type, rajouter:  La vérification de l'extension: On ajoute dans notre page upload.php un tableau contenant les extensions permises et on vérifie si l'extension de notre fichier y appartient comme suit: $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if (in_array($extension, $allowedExts)){ //traitement }  La vérification de la taille du fichier qui ne doit pas dépasser une certaine limite: if($_FILES["file"]["size"] < 1000000){ //traitement }  Le renommage des fichiers uploadés avant de les enregistrer e. Les CAPTCHA Les sites web sont visités et utilisés non seulement par des êtres humains, mais aussi par des machines, des ordinateurs. On appelle ces programmes qui parcourent sans cesse le web des robots (on dit aussi bot). Certains bots ont de bonnes intentions, comme par exemple les robots d'indexation des moteurs de recherche (appelés crawler) comme Googlebot (Google), ou Slurp (Yahoo !). Mais d'autres bots ont des objectifs beaucoup moins louables, leur but est par exemple de s'inscrire sur des forums de discussion pour poster des messages publicitaires (spam), ou de poster des commentaires de spam sur un blog.
  • 15. Sécurisation des sites web |SECURILIGHT 2013 14 L'une des solutions, pour lutter contre ces robots, consiste à soumettre l'utilisateur à un test auquel seul un être humain est sensé être capable de répondre (on appelle ça un test de Turing). En effet, on ajoute, tout simplement, un champ anti-spam appelé Captcha dans un formulaire HTML qu'on souhaite protéger contre les robots. f. Le fichier .htaccess Un .htaccess est un fichier qui sert à indiquer des commandes pour le serveur, c'est un fichier de configuration pour Apache. Il permet, par exemple, de protéger certains répertoires avec des mots de passe, de restreindre l'accès à une page Web, d'empêcher le listage des répertoires (quand ils ne contiennent pas de fichier index.html), ou encore d'utiliser vos propres pages d'erreur (404, 403).. Un .htaccess placé dans un répertoire agit sur ce répertoire et tous les sous-répertoires qu'il contient. Personnaliser les pages d'erreur: Il peut être utile de personnaliser les pages d'erreur 404 (File Not Found), 403 (Forbidden), 500 (Internal Server Error)..., par exemple pour demander à l'internaute de signaler les liens cassés, ou pour lui proposer de faire une recherche sur le site. Dans se cas on mettra dans le fichier .htaccess : ErrorDocument numero_d'_erreur /chemin/du/fichier.html Par exemple, on veut personnaliser la page d'erreur 403, on crée la page 403.html dans le répertoire erreurs puis, on ajoute cette ligne au fichier .htaccess: ErrorDocument 403 /erreurs/403.html Restrictions d'accès: On peut interdire l'accès a notre site à partir de certaines adresses IP.
  • 16. Sécurisation des sites web |SECURILIGHT 2013 15 Pour interdire une adresse IP : deny from 192.168.1.1 Inversement, on peut autoriser une adresse IP : allow from 192.168.1.2 on peut aussi utiliser allow from all et deny from all. Interdire de lister le contenu d'un dossier: On peut interdire le listage du contenu d'un dossier en ajoutant cette ligne dans le fichier .htaccess: Options -Indexes V. Conclusion Au cours de cet atelier, nous avons pu comprendre le fonctionnement d'un certain nombre d'attaques et nous avons essayé de les corriger pour sécuriser tant soit peu notre site web. Mais il faut être très vigilent car ce ne sont pas les seules problèmes qu'un site peut rencontrer.