SlideShare a Scribd company logo
1 of 62
Securité Web
Les failles les plus
courantes
Quelques questions
• Quelles menaces pour la sécurité de mon
site et des données de mes utilisateurs ?
• Comment les pirates arrivent-ils à
exploiter ces failles ?
• Que faire pour y remédier ?
• Quelques bonne pratiques à adopter ?
Sommaire
1. Faille XSS
2. Injection SQL
3. Attaque des mots de passe par brute force
4. Faille include
5. Quelques bonnes pratiques
Faille XSS
1.Faille XSS
• Le Cross Site Scripting (XSS) permet
l’injection de code malveillant côté client
• Souvent des codes Javascript, Java ou
Flash
a. Qu’est ce que c’est ?
b. Comment ça marche ?
• Souvent, le code va s’exécuter sur les pages des
visiteurs du site
• Le script de l’attaquant va avoir accès au DOM
• Il peut faire n’importe quel action à l’insu de
l’utilisateur
1.Faille XSS
• Exemple :
1.Faille XSS
b. Comment ça marche ?
Exemple :
1.Faille XSS
b. Comment ça marche ?
Maintenant, tentons de comprendre ce qui c’est passé !
Le pirate à entrer le code suivant dans le commentaire :
1.Faille XSS
b. Comment ça marche ?
Ce même code a été ensuite affiché sur la page html or
on se rend bien compte que c’est du code qui a été
affiché dans le navigateur. Le navigateur a donc exécuté
ce qui était dans entre les balise script normalement et
affiché le message voulu par le pirate.
c. Quel est le danger ?
• Vols d’informations
• Utilisation d’un site piraté pour faire circuler un virus
(virus Samy sur MySpace en 2005)
• Phishing
• Défacement
• Redirection vers un autre site (pouvant servir à voler
des informations par la même occasion)
1.Faille XSS
d. Comment l’éviter ?
Pour l’éviter deux possibilités :
• Faire des filtres
• Remplacer certains caractères html par leur entité
html correspondante
1.Faille XSS
On pourrait faire une fonction qui filtre la balise <script>.
La fonction ci-dessous va enlever tout les « script ».
1.Faille XSS
d. Comment l’éviter ?
Problèmes :
• Ce filtre est facilement contournable. En effet, au lieu
de mettre <script></script> mettons
<scscript></scrscriptipt> et lorsque le filtre enlevera
les « script » il restera <script></script>
• Si on veut mettre le mot script dans un message il
sera effacer du message.
1.Faille XSS
d. Comment l’éviter ?
d. Comment l’éviter ?
La fonction htmlspecialchars()
1.Faille XSS
La fonction htmlspecialchars permet de remplacer
certains caractère html par leur entité correspondante :
• '&' devient &amp;
• '"' devient &quot;
• "'" devient &#039;
• '<‘ devient &lt;
• '>‘ devient &gt;
d. Comment l’éviter ?
La fonction htmlentities()
1.Faille XSS
La fonction htmlentities a exactement la même utilité que la
fonction htmlspecialchars sauf qu’elle remplace tout les caractères
html existant par leur entité correspondante. Elle est donc plus
complète.
d. Comment l’éviter ?
La fonction strip_tags()
1.Faille XSS
La fonction strip_tags() va supprimer tout les balises html, php
Démonstration
Questions
Injection sql
2. Injection sql
L’injection sql permet, comme son nom
l’indique d’injecter une requête sql à l’insu
du développeur
a. Qu’est ce que c’est ?
2. Injection sql
b. Comment ça marche ?
• Souvent, le code malveillant va être inséré
dans des données transmis par formulaire et
par des données dans les urls
• Le code de l’attaquant va pouvoir faire des
requêtes à la base ou en fausser leur sortie
• Au préalable il pourra avoir soigneusement
exploité le manque de sécurisation pour
connaître le nom d’une ou de plusieurs table
de la base.
2. Injection sql
b. Comment ça marche ?
Exemple :
2. Injection sql
b. Comment ça marche ?
Exemple :
2. Injection sql
b. Comment ça marche ?
Dans l’exemple précédent nous avons pris le cas d’une connexion
classique. Pour bien comprendre ce qui c’est passé il est bon de voir
quel type de requête est utilisé pour la connexion.
Maintenant remplaçons les variables par les données rentrée pas
l’utilisateur, la requête devient alors :
Or le # signifie le début d’un commentaire en sql d’où la requête revient
donc a :
La requête retourne toujours un resultat tant que le nom d’utilisateur
‘admin’ existe dans la base
2. Injection sql
c. Quel est le danger ?
• Vols d’informations
• Changement des informations de la base
• Délétion de données
2. Injection sql
d. Comment l’éviter ?
Pour l’éviter deux possibilités :
• Échapper les caractères
• Préparer les requêtes
2. Injection sql
d. Comment l’éviter ?
La fonction addslashes() :
La fonction addslashes() permet de rajouter un antislash devant les ‘, ", /,
byte NULL
2. Injection sql
d. Comment l’éviter ?
La fonction MySQLi:mysqli_real_escape_string() :
La fonction mysqli_real_escape_string() permet de rajouter un antislash
devant les ‘, ", /, byte NULL, n, r
Attention !
La fonction mysql_real_escape_string()
sera devenu obsolète pour la version
5.5.0 de PHP et sera supprimée dans les
futures version de PHP.
2. Injection sql
d. Comment l’éviter ?
La fonction PDO:quote() :
La fonction PDO:quote() permet de rajouter un antislash devant tout les
caractères spéciaux définis par le pilote ainsi qu’un « ’ » de chaque côté de la
valeur de la variable,
2. Injection sql
d. Comment l’éviter ?
Préparer ses requêtes :
La préparation des requêtes permet également de protéger nos requêtes.
Néanmoins, il ne suffit pas juste de faire une requête préparé pour que note
requête soit protégé. En effet, le code suivant ne permet absolument pas de
protéger notre requête.
2. Injection sql
d. Comment l’éviter ?
Préparer ses requêtes :
Voici deux façons de faire qui permettent de protéger les requêtes contre les
injections.
En préparant juste :
2. Injection sql
d. Comment l’éviter ?
Préparer ses requêtes :
En passant les paramètres par la fonction PDOStatement:bindValue() (conseillé):
2. Injection sql
d. Comment l’éviter ?
Mais surtout bien vérifier les données :
Le plus important pour éviter de subir des injections est de vérifier les
données rentrées. Cela comprend, de :
• vérifier le type de la données (de le transtyper si besoin est)
• Vérifier la longueur des données
• Si le choix des données est restreint vérifier que les données sont la
fourchettes de solutions
Démonstration
Questions
Attaque par brute force
3. Brute force
a. Qu’est ce que c’est ?
Le principe d’une attaque par brute force des mots de
passe est de tendre à une recherche exhaustive des mots
de passe possible rentrer par l’utilisateur.
Plusieurs variantes existent une recherche exhaustive en
essayant tout les combinaisons de caractères possibles ou
alors une autre variante consiste à se servir d’un
dictionnaire pour rechercher les mots probables rentrés
par l’utilisateur.
3. Brute force
b. Comment ça marche ?
Première variante, la recherche exhaustive des
combinaisons de caractères possibles :
L’attaquant, qui a au préalable récupéré le pseudo d’un membre, teste tout les
combinaisons de caractères possibles pouvant être rentrée en mot de passe. Au
bout d’un moment le mot de passe rentrée est bon et l’attaquant à accès au
compte.
3. Brute force
b. Comment ça marche ?
Deuxième variante, l’attaque par dictionnaire :
L’attaquant, qui a au préalable récupéré le pseudo d’un membre, teste tout les
mots probables du dictionnaire d’une langue.
3. Brute force
b. Comment ça marche ?
Façon de faire :
Pour exécuter ces attaques il est évident que cela doit être un script qui doit
exécuter les requêtes dans un but de rapidité. Ce script va donc envoyer des
requêtes avec le même pseudo et différents mot de passe, puis, pour
repérer l’échec d’authentification, va comparer le code source de la page
lors de l’échec d’authentification et le code source de la page renvoyé pour
chaque mot de passe. Lorsque le code source n’est pas le même alors, c’est
qui n’y a pas d’erreur et donc que vous avez l’attaquant est connecté au
compte.
3. Brute force
c. Quel est le danger ?
Le danger, c’est tout simplement le contrôle d’un compte (ou plusieurs si
l’attaquant attaque plusieurs compte), le vol d’informations, modification
des informations de l’utilisateurs, …., toute les actions que peut faire un
utilisateurs. Il est également possible d’avoir plus d’accès dans le cas du
contrôle d’un administrateur qui pourrait avoir accès au compte ftp.
3. Brute force
d. Comment l’éviter ?
Première méthode, la limitation d’essaies :
Une première méthode consiste à limiter le nombre d’essaies de mots de passe
rentrée par l’utilisateur.
3. Brute force
d. Comment l’éviter ?
Deuxième méthode, le captcha :
Une deuxième méthode consiste à mettre un captcha pour s’identifier. Le script
ne pourra donc pas déchiffrer le captcha et ne pourra jamais être authentifié.
3. Brute force
d. Comment l’éviter ?
Augmenter la sécurité des mots de passe :
Vous pouvez demander aux utilisateurs d’avoir un mot de passe
comportant un certains nombre de caractères (au moins 6) avec des
lettres, des chiffres, des caractères spéciaux et ne formant pas un mot.
Ce n’est pas une mesure de sécurité absolu mais elle peut au moins
endurcir la découverte des mots de passe par l’attaquant.
Questions
Faille include
4. Faille include
a. Qu’est ce que c’est ?
• L’exploitation d’une faille include permet d’accéder à n’importe
quel page sur le serveur et plus selon les configurations de votre
environnement PHP.
• Souvent le nom du fichier est demandé dans une url
4. Faille include
b. Comment ça marche ?
Nous allons travailler sur un cas classique de recherche où l’objet de
la recherche est une page web inclue par un include. En voici le script
que l’attaquant ne connait pas bien sûr.
Néanmoins, il est facile de le repérer à l’url :
4. Faille include
b. Comment ça marche ?
L’attaquant va donc remplacer « example1.php » par le fichier qu’il
veut voir. Prenons par exemple le fichier .htaccess. L’url rentrée par
l’attaquant va donc devenir :
Le script va donc inclure le fichier .htaccess et dans la suite logique des
choses la page affiche le contenu de mon fichier .htaccess :
4. Faille include
c. Quel est le danger ?
Comme danger on pourrait citer celui d’avoir accès pour l’attaquant à des fichiers
sensible tel que le .htaccess, .htpasswd et celui de pouvoir inclure et/ou exécuter
des fichiers sensibles (un script pouvant afficher la liste des mails des utilisateurs
par exemple).
4. Faille include
d. Comment l’éviter ?
Voilons, comme première solutions le fait d’obliger une extension particulière
comme par exemple les .html. Cela évitera, en toute logique, d’inclure les fichiers
.htaccess, .htpasswd et tout les scripts php.
Le code du début deviendra donc le suivant :
4. Faille include
d. Comment l’éviter ?
Si nous répétons l’attaque donnée en démonstration, voici donc ce qui va se
passer :
Néanmoins cette technique n’est pas une protection absolu dans le cas où l’on
peut aisément inclure un autre fichier de celui demandé.
4. Faille include
d. Comment l’éviter ?
Ou alors vous pouvez tout simplement vérifier le fichier à inclure. Pour ce faire
vous pouvez dresser une liste des fichiers qui peuvent être inclues soit avec un
tableau soit avec des entrée dans une table de la base de données.
Exemple de script pouvant exercé ce contrôle :
Démonstration
Questions
Quelques bonnes pratiques
5. Quelques bonnes pratiques
a. Eviter de montrer nos erreurs
Fonction error_reporting() :
Cette fonction permet d’empécher que dans le cas d’une
éventuel erreurs, celle-ci soit afficher au mieux à l’utilisateur
et au pire au pirate pour révéler des informations précieuses
tel que le nom de variables, le nom de table sql, nom de
répertoire, de fichier, ….
5. Quelques bonnes pratiques
a. Eviter de montrer nos erreurs
Fonction set_error_handler() :
Cette fonction permet de gérer vos erreur. Vous pouvez donc,
en cas d’erreur, enregistrer ces erreurs dans une base de
données afin d’en prendre connaissance et faire une
redirection vers une page d’erreur, évitant ainsi que l’erreur
soit visible par le pirate.
5. Quelques bonnes pratiques
a. Eviter de montrer nos erreurs
Le « @ » anti-erreurs :
Le placement d’un @ devant les fonctions natives php vous
permette d’empêcher le déclenchement d’une erreur.
Questions
Securité web

More Related Content

What's hot

Sécuriser mes applications avec ZF2
Sécuriser mes applications avec ZF2Sécuriser mes applications avec ZF2
Sécuriser mes applications avec ZF2Cyrille Grandval
 
Sécurité des web services soap
Sécurité des web services soapSécurité des web services soap
Sécurité des web services soapZakaria SMAHI
 
Sécurisation des Web Services SOAP contre les attaques par injection par la m...
Sécurisation des Web Services SOAP contre les attaques par injection par la m...Sécurisation des Web Services SOAP contre les attaques par injection par la m...
Sécurisation des Web Services SOAP contre les attaques par injection par la m...Zakaria SMAHI
 
Epitech securite-2012.key
Epitech securite-2012.keyEpitech securite-2012.key
Epitech securite-2012.keyDamien Seguy
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesENSET, Université Hassan II Casablanca
 
La sécurite pour les developpeurs - OWF
La sécurite pour les developpeurs - OWFLa sécurite pour les developpeurs - OWF
La sécurite pour les developpeurs - OWFChristophe Villeneuve
 
Présentation de mon PFE
Présentation de mon PFEPrésentation de mon PFE
Présentation de mon PFENadir Haouari
 
OWASP Québec - octobre 2016 - présentation sur les mots de passe
OWASP Québec - octobre 2016 - présentation sur les mots de passeOWASP Québec - octobre 2016 - présentation sur les mots de passe
OWASP Québec - octobre 2016 - présentation sur les mots de passePatrick Leclerc
 
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
 
Annexe2 : Etude Comparative Sur Les Honeyclients
Annexe2 : Etude Comparative Sur Les HoneyclientsAnnexe2 : Etude Comparative Sur Les Honeyclients
Annexe2 : Etude Comparative Sur Les HoneyclientsMohamed Ben Bouzid
 
Du fuzzing dans les tests d'intrusions? (Éric Gingras)
Du fuzzing dans les tests d'intrusions? (Éric Gingras)Du fuzzing dans les tests d'intrusions? (Éric Gingras)
Du fuzzing dans les tests d'intrusions? (Éric Gingras)Hackfest Communication
 
Ubuntu est il un système sécuritairement sain PDF
Ubuntu est il un système sécuritairement sain PDFUbuntu est il un système sécuritairement sain PDF
Ubuntu est il un système sécuritairement sain PDFMohamed Ben Bouzid
 
Sécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySlimen Belhaj Ali
 
Monitoring avec Zabbix
Monitoring avec ZabbixMonitoring avec Zabbix
Monitoring avec ZabbixFourat Zouari
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 

What's hot (19)

Securite web is_ima
Securite web is_imaSecurite web is_ima
Securite web is_ima
 
Sécuriser mes applications avec ZF2
Sécuriser mes applications avec ZF2Sécuriser mes applications avec ZF2
Sécuriser mes applications avec ZF2
 
Sécurité des web services soap
Sécurité des web services soapSécurité des web services soap
Sécurité des web services soap
 
Sécurisation des Web Services SOAP contre les attaques par injection par la m...
Sécurisation des Web Services SOAP contre les attaques par injection par la m...Sécurisation des Web Services SOAP contre les attaques par injection par la m...
Sécurisation des Web Services SOAP contre les attaques par injection par la m...
 
Epitech securite-2012.key
Epitech securite-2012.keyEpitech securite-2012.key
Epitech securite-2012.key
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
La sécurite pour les developpeurs - OWF
La sécurite pour les developpeurs - OWFLa sécurite pour les developpeurs - OWF
La sécurite pour les developpeurs - OWF
 
Présentation de mon PFE
Présentation de mon PFEPrésentation de mon PFE
Présentation de mon PFE
 
OWASP Québec - octobre 2016 - présentation sur les mots de passe
OWASP Québec - octobre 2016 - présentation sur les mots de passeOWASP Québec - octobre 2016 - présentation sur les mots de passe
OWASP Québec - octobre 2016 - présentation sur les mots de passe
 
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
 
ReST API Security
ReST API SecurityReST API Security
ReST API Security
 
Annexe2 : Etude Comparative Sur Les Honeyclients
Annexe2 : Etude Comparative Sur Les HoneyclientsAnnexe2 : Etude Comparative Sur Les Honeyclients
Annexe2 : Etude Comparative Sur Les Honeyclients
 
Du fuzzing dans les tests d'intrusions? (Éric Gingras)
Du fuzzing dans les tests d'intrusions? (Éric Gingras)Du fuzzing dans les tests d'intrusions? (Éric Gingras)
Du fuzzing dans les tests d'intrusions? (Éric Gingras)
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Ubuntu est il un système sécuritairement sain PDF
Ubuntu est il un système sécuritairement sain PDFUbuntu est il un système sécuritairement sain PDF
Ubuntu est il un système sécuritairement sain PDF
 
Sécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-Security
 
Monitoring avec Zabbix
Monitoring avec ZabbixMonitoring avec Zabbix
Monitoring avec Zabbix
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 

Viewers also liked

Tout le temps, tout de suite: le Web et le temps (réel)
Tout le temps, tout de suite: le Web et le temps (réel)Tout le temps, tout de suite: le Web et le temps (réel)
Tout le temps, tout de suite: le Web et le temps (réel)Simon Bédard
 
Noip2 stack buffer overflow
Noip2 stack buffer overflowNoip2 stack buffer overflow
Noip2 stack buffer overflowb0920075
 
Libertés d'accès à internet : consécration et menaces
 Libertés d'accès à internet : consécration et menaces Libertés d'accès à internet : consécration et menaces
Libertés d'accès à internet : consécration et menacesCalimaq S.I.Lex
 
Introduction à la sécurité des applications web avec php [fr]
Introduction à la sécurité des applications web avec php [fr]Introduction à la sécurité des applications web avec php [fr]
Introduction à la sécurité des applications web avec php [fr]Wixiweb
 
Rapport Ambition numérique
Rapport Ambition numériqueRapport Ambition numérique
Rapport Ambition numériqueCNNum
 
Célèbres pannes du génie logiciel
Célèbres pannes du génie logicielCélèbres pannes du génie logiciel
Célèbres pannes du génie logicielNassim Bahri
 
Conception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2CConception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2CNassim Bahri
 
DataWerhouse : Données de qualité
DataWerhouse : Données de qualitéDataWerhouse : Données de qualité
DataWerhouse : Données de qualitéNassim Bahri
 
Graph and RDF databases
Graph and RDF databasesGraph and RDF databases
Graph and RDF databasesNassim Bahri
 
Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partiekadzaki
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partiekadzaki
 
Cours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partieCours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partiekadzaki
 
Cours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partieCours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partiekadzaki
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partiekadzaki
 
Vanet - routage unicast et adressage
Vanet - routage unicast et adressageVanet - routage unicast et adressage
Vanet - routage unicast et adressageGhazi Tekaya
 

Viewers also liked (20)

Tout le temps, tout de suite: le Web et le temps (réel)
Tout le temps, tout de suite: le Web et le temps (réel)Tout le temps, tout de suite: le Web et le temps (réel)
Tout le temps, tout de suite: le Web et le temps (réel)
 
Noip2 stack buffer overflow
Noip2 stack buffer overflowNoip2 stack buffer overflow
Noip2 stack buffer overflow
 
Libertés d'accès à internet : consécration et menaces
 Libertés d'accès à internet : consécration et menaces Libertés d'accès à internet : consécration et menaces
Libertés d'accès à internet : consécration et menaces
 
Introduction à la sécurité des applications web avec php [fr]
Introduction à la sécurité des applications web avec php [fr]Introduction à la sécurité des applications web avec php [fr]
Introduction à la sécurité des applications web avec php [fr]
 
Rapport Ambition numérique
Rapport Ambition numériqueRapport Ambition numérique
Rapport Ambition numérique
 
Gidsy.com
Gidsy.comGidsy.com
Gidsy.com
 
Célèbres pannes du génie logiciel
Célèbres pannes du génie logicielCélèbres pannes du génie logiciel
Célèbres pannes du génie logiciel
 
Conception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2CConception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2C
 
DataWerhouse : Données de qualité
DataWerhouse : Données de qualitéDataWerhouse : Données de qualité
DataWerhouse : Données de qualité
 
Graph and RDF databases
Graph and RDF databasesGraph and RDF databases
Graph and RDF databases
 
SQL Injection
SQL InjectionSQL Injection
SQL Injection
 
Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partie
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partie
 
Cours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partieCours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partie
 
1 Introduction
1 Introduction1 Introduction
1 Introduction
 
Cours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partieCours php & Mysql - 3éme partie
Cours php & Mysql - 3éme partie
 
Cours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partieCours php & Mysql - 2éme partie
Cours php & Mysql - 2éme partie
 
Vanet - routage unicast et adressage
Vanet - routage unicast et adressageVanet - routage unicast et adressage
Vanet - routage unicast et adressage
 
Methodes agile
Methodes agileMethodes agile
Methodes agile
 
Conférence big data
Conférence big dataConférence big data
Conférence big data
 

Similar to Securité web

Tuto atelier securisation_site_web
Tuto atelier securisation_site_webTuto atelier securisation_site_web
Tuto atelier securisation_site_websahar dridi
 
White paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRFWhite paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRFManfred Touron
 
L’hygiène informatique des réseaux sociaux : bilan catastrophique
L’hygiène informatique des réseaux sociaux : bilan catastrophiqueL’hygiène informatique des réseaux sociaux : bilan catastrophique
L’hygiène informatique des réseaux sociaux : bilan catastrophiqueITrust - Cybersecurity as a Service
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications webMarcel TCHOULEGHEU
 
Sécurité: Ne soyez pas à risque
Sécurité: Ne soyez pas à risqueSécurité: Ne soyez pas à risque
Sécurité: Ne soyez pas à risqueMaxime Jobin
 
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
 
Api win32 ancestrales pour chevaux de troie hyper furtifs
Api win32 ancestrales pour chevaux de troie hyper furtifsApi win32 ancestrales pour chevaux de troie hyper furtifs
Api win32 ancestrales pour chevaux de troie hyper furtifsUltraUploader
 
Wordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsWordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsBoiteaweb
 
Durcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative WebDurcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative WebCyrille Grandval
 
Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1Tarek MOHAMED
 
injection sql for cybersecurity studentsss.pptx
injection sql for cybersecurity studentsss.pptxinjection sql for cybersecurity studentsss.pptx
injection sql for cybersecurity studentsss.pptxChaymaeElhasnaoui
 
Owasp et les failles des applications web
Owasp et les failles des applications webOwasp et les failles des applications web
Owasp et les failles des applications webHenrique Mukanda
 
Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !SpikeeLabs
 
Meetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalMeetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalAurelien Navarre
 
Prévention et traitement du hack de serveurs
Prévention et traitement du hack de serveursPrévention et traitement du hack de serveurs
Prévention et traitement du hack de serveursAmen.fr
 
Know everything about Brute Force Attack
Know everything about Brute Force AttackKnow everything about Brute Force Attack
Know everything about Brute Force AttackHajar Bouchriha
 

Similar to Securité web (20)

Tuto atelier securisation_site_web
Tuto atelier securisation_site_webTuto atelier securisation_site_web
Tuto atelier securisation_site_web
 
White paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRFWhite paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRF
 
L’hygiène informatique des réseaux sociaux : bilan catastrophique
L’hygiène informatique des réseaux sociaux : bilan catastrophiqueL’hygiène informatique des réseaux sociaux : bilan catastrophique
L’hygiène informatique des réseaux sociaux : bilan catastrophique
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications web
 
Sécurité: Ne soyez pas à risque
Sécurité: Ne soyez pas à risqueSécurité: Ne soyez pas à risque
Sécurité: Ne soyez pas à risque
 
Owasp top 10 2010 Resist toulouse
Owasp top 10   2010  Resist toulouseOwasp top 10   2010  Resist toulouse
Owasp top 10 2010 Resist toulouse
 
Api win32 ancestrales pour chevaux de troie hyper furtifs
Api win32 ancestrales pour chevaux de troie hyper furtifsApi win32 ancestrales pour chevaux de troie hyper furtifs
Api win32 ancestrales pour chevaux de troie hyper furtifs
 
Wordpress et la sécurité des plugins
Wordpress et la sécurité des pluginsWordpress et la sécurité des plugins
Wordpress et la sécurité des plugins
 
Durcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative WebDurcissement de code - Sécurité Applicative Web
Durcissement de code - Sécurité Applicative Web
 
Les attaques MITM
Les attaques MITMLes attaques MITM
Les attaques MITM
 
Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1
 
La Sécurité Sur Le Web
La Sécurité Sur Le WebLa Sécurité Sur Le Web
La Sécurité Sur Le Web
 
injection sql for cybersecurity studentsss.pptx
injection sql for cybersecurity studentsss.pptxinjection sql for cybersecurity studentsss.pptx
injection sql for cybersecurity studentsss.pptx
 
Owasp et les failles des applications web
Owasp et les failles des applications webOwasp et les failles des applications web
Owasp et les failles des applications web
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !
 
Meetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalMeetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupal
 
ReST API Security
ReST API SecurityReST API Security
ReST API Security
 
Prévention et traitement du hack de serveurs
Prévention et traitement du hack de serveursPrévention et traitement du hack de serveurs
Prévention et traitement du hack de serveurs
 
Know everything about Brute Force Attack
Know everything about Brute Force AttackKnow everything about Brute Force Attack
Know everything about Brute Force Attack
 

Securité web

  • 1. Securité Web Les failles les plus courantes
  • 2. Quelques questions • Quelles menaces pour la sécurité de mon site et des données de mes utilisateurs ? • Comment les pirates arrivent-ils à exploiter ces failles ? • Que faire pour y remédier ? • Quelques bonne pratiques à adopter ?
  • 3. Sommaire 1. Faille XSS 2. Injection SQL 3. Attaque des mots de passe par brute force 4. Faille include 5. Quelques bonnes pratiques
  • 5. 1.Faille XSS • Le Cross Site Scripting (XSS) permet l’injection de code malveillant côté client • Souvent des codes Javascript, Java ou Flash a. Qu’est ce que c’est ?
  • 6. b. Comment ça marche ? • Souvent, le code va s’exécuter sur les pages des visiteurs du site • Le script de l’attaquant va avoir accès au DOM • Il peut faire n’importe quel action à l’insu de l’utilisateur 1.Faille XSS
  • 7. • Exemple : 1.Faille XSS b. Comment ça marche ?
  • 8. Exemple : 1.Faille XSS b. Comment ça marche ?
  • 9. Maintenant, tentons de comprendre ce qui c’est passé ! Le pirate à entrer le code suivant dans le commentaire : 1.Faille XSS b. Comment ça marche ? Ce même code a été ensuite affiché sur la page html or on se rend bien compte que c’est du code qui a été affiché dans le navigateur. Le navigateur a donc exécuté ce qui était dans entre les balise script normalement et affiché le message voulu par le pirate.
  • 10. c. Quel est le danger ? • Vols d’informations • Utilisation d’un site piraté pour faire circuler un virus (virus Samy sur MySpace en 2005) • Phishing • Défacement • Redirection vers un autre site (pouvant servir à voler des informations par la même occasion) 1.Faille XSS
  • 11. d. Comment l’éviter ? Pour l’éviter deux possibilités : • Faire des filtres • Remplacer certains caractères html par leur entité html correspondante 1.Faille XSS
  • 12. On pourrait faire une fonction qui filtre la balise <script>. La fonction ci-dessous va enlever tout les « script ». 1.Faille XSS d. Comment l’éviter ?
  • 13. Problèmes : • Ce filtre est facilement contournable. En effet, au lieu de mettre <script></script> mettons <scscript></scrscriptipt> et lorsque le filtre enlevera les « script » il restera <script></script> • Si on veut mettre le mot script dans un message il sera effacer du message. 1.Faille XSS d. Comment l’éviter ?
  • 14. d. Comment l’éviter ? La fonction htmlspecialchars() 1.Faille XSS La fonction htmlspecialchars permet de remplacer certains caractère html par leur entité correspondante : • '&' devient &amp; • '"' devient &quot; • "'" devient &#039; • '<‘ devient &lt; • '>‘ devient &gt;
  • 15. d. Comment l’éviter ? La fonction htmlentities() 1.Faille XSS La fonction htmlentities a exactement la même utilité que la fonction htmlspecialchars sauf qu’elle remplace tout les caractères html existant par leur entité correspondante. Elle est donc plus complète.
  • 16. d. Comment l’éviter ? La fonction strip_tags() 1.Faille XSS La fonction strip_tags() va supprimer tout les balises html, php
  • 20. 2. Injection sql L’injection sql permet, comme son nom l’indique d’injecter une requête sql à l’insu du développeur a. Qu’est ce que c’est ?
  • 21. 2. Injection sql b. Comment ça marche ? • Souvent, le code malveillant va être inséré dans des données transmis par formulaire et par des données dans les urls • Le code de l’attaquant va pouvoir faire des requêtes à la base ou en fausser leur sortie • Au préalable il pourra avoir soigneusement exploité le manque de sécurisation pour connaître le nom d’une ou de plusieurs table de la base.
  • 22. 2. Injection sql b. Comment ça marche ? Exemple :
  • 23. 2. Injection sql b. Comment ça marche ? Exemple :
  • 24. 2. Injection sql b. Comment ça marche ? Dans l’exemple précédent nous avons pris le cas d’une connexion classique. Pour bien comprendre ce qui c’est passé il est bon de voir quel type de requête est utilisé pour la connexion. Maintenant remplaçons les variables par les données rentrée pas l’utilisateur, la requête devient alors : Or le # signifie le début d’un commentaire en sql d’où la requête revient donc a : La requête retourne toujours un resultat tant que le nom d’utilisateur ‘admin’ existe dans la base
  • 25. 2. Injection sql c. Quel est le danger ? • Vols d’informations • Changement des informations de la base • Délétion de données
  • 26. 2. Injection sql d. Comment l’éviter ? Pour l’éviter deux possibilités : • Échapper les caractères • Préparer les requêtes
  • 27. 2. Injection sql d. Comment l’éviter ? La fonction addslashes() : La fonction addslashes() permet de rajouter un antislash devant les ‘, ", /, byte NULL
  • 28. 2. Injection sql d. Comment l’éviter ? La fonction MySQLi:mysqli_real_escape_string() : La fonction mysqli_real_escape_string() permet de rajouter un antislash devant les ‘, ", /, byte NULL, n, r
  • 29. Attention ! La fonction mysql_real_escape_string() sera devenu obsolète pour la version 5.5.0 de PHP et sera supprimée dans les futures version de PHP.
  • 30. 2. Injection sql d. Comment l’éviter ? La fonction PDO:quote() : La fonction PDO:quote() permet de rajouter un antislash devant tout les caractères spéciaux définis par le pilote ainsi qu’un « ’ » de chaque côté de la valeur de la variable,
  • 31. 2. Injection sql d. Comment l’éviter ? Préparer ses requêtes : La préparation des requêtes permet également de protéger nos requêtes. Néanmoins, il ne suffit pas juste de faire une requête préparé pour que note requête soit protégé. En effet, le code suivant ne permet absolument pas de protéger notre requête.
  • 32. 2. Injection sql d. Comment l’éviter ? Préparer ses requêtes : Voici deux façons de faire qui permettent de protéger les requêtes contre les injections. En préparant juste :
  • 33. 2. Injection sql d. Comment l’éviter ? Préparer ses requêtes : En passant les paramètres par la fonction PDOStatement:bindValue() (conseillé):
  • 34. 2. Injection sql d. Comment l’éviter ? Mais surtout bien vérifier les données : Le plus important pour éviter de subir des injections est de vérifier les données rentrées. Cela comprend, de : • vérifier le type de la données (de le transtyper si besoin est) • Vérifier la longueur des données • Si le choix des données est restreint vérifier que les données sont la fourchettes de solutions
  • 38. 3. Brute force a. Qu’est ce que c’est ? Le principe d’une attaque par brute force des mots de passe est de tendre à une recherche exhaustive des mots de passe possible rentrer par l’utilisateur. Plusieurs variantes existent une recherche exhaustive en essayant tout les combinaisons de caractères possibles ou alors une autre variante consiste à se servir d’un dictionnaire pour rechercher les mots probables rentrés par l’utilisateur.
  • 39. 3. Brute force b. Comment ça marche ? Première variante, la recherche exhaustive des combinaisons de caractères possibles : L’attaquant, qui a au préalable récupéré le pseudo d’un membre, teste tout les combinaisons de caractères possibles pouvant être rentrée en mot de passe. Au bout d’un moment le mot de passe rentrée est bon et l’attaquant à accès au compte.
  • 40. 3. Brute force b. Comment ça marche ? Deuxième variante, l’attaque par dictionnaire : L’attaquant, qui a au préalable récupéré le pseudo d’un membre, teste tout les mots probables du dictionnaire d’une langue.
  • 41. 3. Brute force b. Comment ça marche ? Façon de faire : Pour exécuter ces attaques il est évident que cela doit être un script qui doit exécuter les requêtes dans un but de rapidité. Ce script va donc envoyer des requêtes avec le même pseudo et différents mot de passe, puis, pour repérer l’échec d’authentification, va comparer le code source de la page lors de l’échec d’authentification et le code source de la page renvoyé pour chaque mot de passe. Lorsque le code source n’est pas le même alors, c’est qui n’y a pas d’erreur et donc que vous avez l’attaquant est connecté au compte.
  • 42. 3. Brute force c. Quel est le danger ? Le danger, c’est tout simplement le contrôle d’un compte (ou plusieurs si l’attaquant attaque plusieurs compte), le vol d’informations, modification des informations de l’utilisateurs, …., toute les actions que peut faire un utilisateurs. Il est également possible d’avoir plus d’accès dans le cas du contrôle d’un administrateur qui pourrait avoir accès au compte ftp.
  • 43. 3. Brute force d. Comment l’éviter ? Première méthode, la limitation d’essaies : Une première méthode consiste à limiter le nombre d’essaies de mots de passe rentrée par l’utilisateur.
  • 44. 3. Brute force d. Comment l’éviter ? Deuxième méthode, le captcha : Une deuxième méthode consiste à mettre un captcha pour s’identifier. Le script ne pourra donc pas déchiffrer le captcha et ne pourra jamais être authentifié.
  • 45. 3. Brute force d. Comment l’éviter ? Augmenter la sécurité des mots de passe : Vous pouvez demander aux utilisateurs d’avoir un mot de passe comportant un certains nombre de caractères (au moins 6) avec des lettres, des chiffres, des caractères spéciaux et ne formant pas un mot. Ce n’est pas une mesure de sécurité absolu mais elle peut au moins endurcir la découverte des mots de passe par l’attaquant.
  • 48. 4. Faille include a. Qu’est ce que c’est ? • L’exploitation d’une faille include permet d’accéder à n’importe quel page sur le serveur et plus selon les configurations de votre environnement PHP. • Souvent le nom du fichier est demandé dans une url
  • 49. 4. Faille include b. Comment ça marche ? Nous allons travailler sur un cas classique de recherche où l’objet de la recherche est une page web inclue par un include. En voici le script que l’attaquant ne connait pas bien sûr. Néanmoins, il est facile de le repérer à l’url :
  • 50. 4. Faille include b. Comment ça marche ? L’attaquant va donc remplacer « example1.php » par le fichier qu’il veut voir. Prenons par exemple le fichier .htaccess. L’url rentrée par l’attaquant va donc devenir : Le script va donc inclure le fichier .htaccess et dans la suite logique des choses la page affiche le contenu de mon fichier .htaccess :
  • 51. 4. Faille include c. Quel est le danger ? Comme danger on pourrait citer celui d’avoir accès pour l’attaquant à des fichiers sensible tel que le .htaccess, .htpasswd et celui de pouvoir inclure et/ou exécuter des fichiers sensibles (un script pouvant afficher la liste des mails des utilisateurs par exemple).
  • 52. 4. Faille include d. Comment l’éviter ? Voilons, comme première solutions le fait d’obliger une extension particulière comme par exemple les .html. Cela évitera, en toute logique, d’inclure les fichiers .htaccess, .htpasswd et tout les scripts php. Le code du début deviendra donc le suivant :
  • 53. 4. Faille include d. Comment l’éviter ? Si nous répétons l’attaque donnée en démonstration, voici donc ce qui va se passer : Néanmoins cette technique n’est pas une protection absolu dans le cas où l’on peut aisément inclure un autre fichier de celui demandé.
  • 54. 4. Faille include d. Comment l’éviter ? Ou alors vous pouvez tout simplement vérifier le fichier à inclure. Pour ce faire vous pouvez dresser une liste des fichiers qui peuvent être inclues soit avec un tableau soit avec des entrée dans une table de la base de données. Exemple de script pouvant exercé ce contrôle :
  • 58. 5. Quelques bonnes pratiques a. Eviter de montrer nos erreurs Fonction error_reporting() : Cette fonction permet d’empécher que dans le cas d’une éventuel erreurs, celle-ci soit afficher au mieux à l’utilisateur et au pire au pirate pour révéler des informations précieuses tel que le nom de variables, le nom de table sql, nom de répertoire, de fichier, ….
  • 59. 5. Quelques bonnes pratiques a. Eviter de montrer nos erreurs Fonction set_error_handler() : Cette fonction permet de gérer vos erreur. Vous pouvez donc, en cas d’erreur, enregistrer ces erreurs dans une base de données afin d’en prendre connaissance et faire une redirection vers une page d’erreur, évitant ainsi que l’erreur soit visible par le pirate.
  • 60. 5. Quelques bonnes pratiques a. Eviter de montrer nos erreurs Le « @ » anti-erreurs : Le placement d’un @ devant les fonctions natives php vous permette d’empêcher le déclenchement d’une erreur.

Editor's Notes

  1. On met un commentaire comportant un script JavaScript
  2. Lors de l’affichage du commentaire le code JavaScript est exécuter par le navigateur et non visible dans le message
  3. Lors de l’affichage du commentaire le code JavaScript est exécuter par le navigateur et non visible dans le message
  4. On rentre de quoi faire l’injection sql dans le champs pseudo et un mot de passe sans interêt (ici la lettre p)