SlideShare une entreprise Scribd logo
1  sur  50
SÉCURITÉ
PHP ET MYSQL   Paris, France, 4 juin 2012
         1
MENU DU JOUR


Comment vérifier la sécurité de son application

  Vérification du site en production

  Analyse à code ouvert

  Rédaction d’un rapport d’audit



                               2
AYE’ CAPTAIN


Damien Seguy

  damien.seguy@gmail.com

Expert LAMP

Directeur Technique @ bysoft China




                               3
QUESTIONS?
   Réponses?
REFERENTIELS
SÉCURITÉ
OWASP

HIPAA

PCI card industry

Sarbanes-Oxley

Basel II

JSOX
OWASP

Cod   Nom                                      Site Code
e
A1    Injection                                      X
A2    Cross-Site Scripting (XSS)                X    X
A3    Broken Authentication and Session         X
A4    Insecure Direct
      Management Object References              X
A5    Cross-Site Request Forgery (CSRF)         X    X
A6    Security Misconfiguration                  X
A7    Insecure Cryptographic Storage                 X
A8    Failure to Restrict URL Access            X
A9    Insufficient Transport Layer Protection    X
A10   Unvalidated Redirects and Forwards             X
VOCABULAIRE
Découverte

   En apprendre plus sur l’application

Vulnérabilité

   Une faille qui permet de perturber le système

Attaque

   Une vulnérabilité avec un objectif


                              7
MANTRA



Valider les données en entrée

Nettoyer les données

Ne rien laisser trainer sur le site
VALIDER LES DONNÉES



Vérifiez les variables entrantes

Vérifiez les URL entrantes aussi!

Vérifiez les fichiers
https://www.shacombank.com.hk/ibanking/dse/html/customer/zh_TW/
   INError.jsp?errCode=2163&encoding=zh_TW&errMode=AE%22;}
document.write%28%22%3Ciframe%20src=%27http://xssed.com%27%3E
        %22%29;%20function%20test%28%29{var%20a=%22
VÉRIFIEZ LES URLS
VÉRIFIEZ LES URLS
PROTÉGÉ PAR
 BROWSER?
1. <?php
2.
3. $url = "http://www.grosbill.com/4-xxxx"_-144413-
   tv_video-lecteur_dvd_de_salon";
4.
5. $html = file_get_contents($url);
6.
7. print $html;
8. ?> document.write('              <iframe src="http://
   www.facebook.com/plugins/like.php?href=http://
     www.grosbill.com/4-xxxx"_-144413-tv_video-
  lecteur_dvd_de_salon&amp;send=true&amp;layout=b
                        utton_....
INJECTION PAR GIF

Prenez une image GIF, ajoutez phpinfo()

Envoyez la sur le site

Si tous les fichiers sont traités par PHP...
NETTOYER LES DONNÉES


 On a une injection quand une valeur parvient à une autre
 technologie que PHP, et y fait autre chose que ce qui est attendu.

 Toutes les injections ont la même origine :
NETTOYER LES DONNÉES


 On a une injection quand une valeur parvient à une autre
 technologie que PHP, et y fait autre chose que ce qui est attendu.

 Toutes les injections ont la même origine :



                               .
NETTOYER LES DONNÉES


 On a une injection quand une valeur parvient à une autre
 technologie que PHP, et y fait autre chose que ce qui est attendu.

 Toutes les injections ont la même origine :



                               .
CARACTERES
SPÉCIAUX

HTML : ", ', <, >, &

URL : %, /

Query : &, ?, =

SQL : /, #, ", '

et encore Shell, XML, LDAP, Path, PDF, Javascript, header HTTP,
cookies, domaines,...
METHODES DE
PROTECTION

HTML : htmlentities, htmlspecialchars

URL : rawurlencode

Query : urlencode

SQL : requêtes préparées, mysql_real_escape_string..

et encore Shell, XML, LDAP, Path, PDF, Javascript, header HTTP,
cookies, ...
BONNE PRATIQUE

Systématisez les protections avec le framework

  Framework généralistes

  Classe maison

Assurez un nettoyage minimal au retour des données

  Qui d’autre manipule la base de données?
APPROCHE D’AUDIT



Identifiez les données entrantes

Notion de variables corrompues (tainted variables) : on se méfie des
variables tant qu’elles n’ont pas été validée
TRACABILITÉ

 $_CLEAN

public function nameAction() {
   $request = $this->getRequest();
   $validator = new Zend_Validate_Alnum();
   $_CLEAN['username'] = $validator->isValid(
                           $request->getParam('username'));
}

 les variables locales ne sont créées qu’apres validation
public function nameAction() {
   $request = $request->query;
   $validator = $this->get('validator');
   $username = $validator->validate($request->get('username'))
}
RETRO-TRACABILITÉ

En Zend Framework, surveillez les Db:factory

En Symfony, les appels à getCurrentConnection()

mysql_query, pg_query.




Puis, remontez à l’origine du code
STÉGANOGRAPHIE


L’art de cacher les choses à
la vue de tous

Trouvez la tour l’une des
tours les plus hautes du
monde dans l’image
suivante
STÉGANOGRAPHIE


L’art de cacher les choses à
la vue de tous

Trouvez la tour l’une des
tours les plus hautes du
monde dans l’image
suivante
STÉGANOGRAPHIE


L’art de cacher les choses à
la vue de tous

Trouvez la tour l’une des
tours les plus hautes du
monde dans l’image
suivante
ROBOTS.TXT




http://www.pcf.fr/robots.txt
ROBOTS.TXT

Empoisonnez les données

  Ne mettez pas seulement les dossiers à protéger

  Mettez des dossiers qui n’existent pas

  Notez les IP qui s’y connectent

Vérifiez en ligne les URLs de votre site
MÊME EN ASP
MÊME EN ASP
AFFICHAGES D’ERREURS
BONNES PRATIQUES

Masquez les informations sur votre systeme

  expose_php = off, ServerSignature Off

Ayez un dossier hors Web Root

  Listez votre racine Web

Faites la chasse aux debug :

  echo, print, print_r, var_dump, krumo
RAPPORT D’AUDIT

Consignez vos audits

  Un rapport, un wiki, un log ou blog

  Notez les réussites et les points à améliorer

Automatisez ce qui est important

  Integration continue, cron, scripts manuels...

  Faites le reste a la main, a budgeter
STRUCTURE


Résumé exécutif

  3 paragraphes, simples à lire

Liste des vérifications réalisées et résultats (OK, KO)

Détails et explications sur chaque point à améliorer
RÉSUMÉ

Point sécurité     Impact      Probabilité   Correctif


      XSS          Important      Forte       Lourd

Zone privée sans
                    Moyen       Toujours      Faible
      SSL

   Fichiers
                   Important     Faible       Faible
  découverts

   URLs mal
                     Fort        Faible       Moyen
   protégées
DÉTAILS

Titre

Exemple dans le code, explications théoriques

Suggestion de correction

  Mentionner les limitations de la correction

Liste des occurrences

  Ou le moyen de les trouver
MERCI!

damien.seguy@gmail.com

http://www.slideshare.net/dseguy
A L’ABORDAGE

Contenu connexe

Tendances

Techdays 2010 : comment hacker PHP sans se fatiguer
Techdays 2010 : comment hacker PHP sans se fatiguerTechdays 2010 : comment hacker PHP sans se fatiguer
Techdays 2010 : comment hacker PHP sans se fatiguerDamien Seguy
 
Guide de securite php
Guide de securite phpGuide de securite php
Guide de securite phpbelfkih
 
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHPJean-Marie Renouard
 
Pots de Miel, Honeypot informatique - Sécurité informatique
Pots de Miel, Honeypot informatique - Sécurité informatiquePots de Miel, Honeypot informatique - Sécurité informatique
Pots de Miel, Honeypot informatique - Sécurité informatique🏁 Pierre-Henry Soria 💡
 
Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4🏁 Pierre-Henry Soria 💡
 

Tendances (6)

Techdays 2010 : comment hacker PHP sans se fatiguer
Techdays 2010 : comment hacker PHP sans se fatiguerTechdays 2010 : comment hacker PHP sans se fatiguer
Techdays 2010 : comment hacker PHP sans se fatiguer
 
Guide de securite php
Guide de securite phpGuide de securite php
Guide de securite php
 
Rmll.securite
Rmll.securiteRmll.securite
Rmll.securite
 
Sécurité et Quaité de code PHP
Sécurité et Quaité de code PHPSécurité et Quaité de code PHP
Sécurité et Quaité de code PHP
 
Pots de Miel, Honeypot informatique - Sécurité informatique
Pots de Miel, Honeypot informatique - Sécurité informatiquePots de Miel, Honeypot informatique - Sécurité informatique
Pots de Miel, Honeypot informatique - Sécurité informatique
 
Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4Créer une barre de progression grâce à PHP 5.4
Créer une barre de progression grâce à PHP 5.4
 

En vedette

Cv Aric Lasry Epitech
Cv Aric Lasry EpitechCv Aric Lasry Epitech
Cv Aric Lasry EpitechAric Lasry
 
Plaquette de Présentation Eleganz Music&Event
Plaquette de Présentation Eleganz Music&EventPlaquette de Présentation Eleganz Music&Event
Plaquette de Présentation Eleganz Music&EventBaudouin de Mas Latrie
 
Journée Tourisme à la CCI Dunkerque
Journée Tourisme à la CCI DunkerqueJournée Tourisme à la CCI Dunkerque
Journée Tourisme à la CCI DunkerqueChristianB
 
1. présentation le changement climatique bamako - 17 juin 2010 - renaat van...
1. présentation le changement climatique   bamako - 17 juin 2010 - renaat van...1. présentation le changement climatique   bamako - 17 juin 2010 - renaat van...
1. présentation le changement climatique bamako - 17 juin 2010 - renaat van...Renaat Van Rompaey
 
Veronique Bollet
Veronique  BolletVeronique  Bollet
Veronique BolletChristianB
 
Maestros saludables
Maestros saludablesMaestros saludables
Maestros saludablesMa Aguirre
 
Eskape - Gestion Electronique de Documents - Présentation produit ELO
Eskape - Gestion Electronique de Documents - Présentation produit ELOEskape - Gestion Electronique de Documents - Présentation produit ELO
Eskape - Gestion Electronique de Documents - Présentation produit ELOEskape
 
LeeManCatalogue
LeeManCatalogueLeeManCatalogue
LeeManCatalogueKijick Lee
 
Livre Blanc Eskape : L'information mobile en entreprise, une nouvelle ouvertu...
Livre Blanc Eskape : L'information mobile en entreprise, une nouvelle ouvertu...Livre Blanc Eskape : L'information mobile en entreprise, une nouvelle ouvertu...
Livre Blanc Eskape : L'information mobile en entreprise, une nouvelle ouvertu...Eskape
 

En vedette (20)

Cv Aric Lasry Epitech
Cv Aric Lasry EpitechCv Aric Lasry Epitech
Cv Aric Lasry Epitech
 
Hernandez_Remi_CV_v2
Hernandez_Remi_CV_v2Hernandez_Remi_CV_v2
Hernandez_Remi_CV_v2
 
Conférence ESI
Conférence ESIConférence ESI
Conférence ESI
 
Cours d'Introduction à Uml
Cours d'Introduction à UmlCours d'Introduction à Uml
Cours d'Introduction à Uml
 
Igl cours 3 - introduction à uml
Igl   cours 3 - introduction à umlIgl   cours 3 - introduction à uml
Igl cours 3 - introduction à uml
 
Uml
UmlUml
Uml
 
Cours uml
Cours umlCours uml
Cours uml
 
Le Manifeste Agile
Le Manifeste AgileLe Manifeste Agile
Le Manifeste Agile
 
Scrum@epitech
Scrum@epitechScrum@epitech
Scrum@epitech
 
Plaquette de Présentation Eleganz Music&Event
Plaquette de Présentation Eleganz Music&EventPlaquette de Présentation Eleganz Music&Event
Plaquette de Présentation Eleganz Music&Event
 
Journée Tourisme à la CCI Dunkerque
Journée Tourisme à la CCI DunkerqueJournée Tourisme à la CCI Dunkerque
Journée Tourisme à la CCI Dunkerque
 
1. présentation le changement climatique bamako - 17 juin 2010 - renaat van...
1. présentation le changement climatique   bamako - 17 juin 2010 - renaat van...1. présentation le changement climatique   bamako - 17 juin 2010 - renaat van...
1. présentation le changement climatique bamako - 17 juin 2010 - renaat van...
 
Presentacion
Presentacion Presentacion
Presentacion
 
Veronique Bollet
Veronique  BolletVeronique  Bollet
Veronique Bollet
 
EncuestPregunta 11
EncuestPregunta 11EncuestPregunta 11
EncuestPregunta 11
 
M M M
M M MM M M
M M M
 
Maestros saludables
Maestros saludablesMaestros saludables
Maestros saludables
 
Eskape - Gestion Electronique de Documents - Présentation produit ELO
Eskape - Gestion Electronique de Documents - Présentation produit ELOEskape - Gestion Electronique de Documents - Présentation produit ELO
Eskape - Gestion Electronique de Documents - Présentation produit ELO
 
LeeManCatalogue
LeeManCatalogueLeeManCatalogue
LeeManCatalogue
 
Livre Blanc Eskape : L'information mobile en entreprise, une nouvelle ouvertu...
Livre Blanc Eskape : L'information mobile en entreprise, une nouvelle ouvertu...Livre Blanc Eskape : L'information mobile en entreprise, une nouvelle ouvertu...
Livre Blanc Eskape : L'information mobile en entreprise, une nouvelle ouvertu...
 

Similaire à Epitech securite-2012.key

Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Asma Messaoudi
 
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
 
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
 
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
 
Octo RefCard test front-end
Octo RefCard test front-endOcto RefCard test front-end
Octo RefCard test front-endClément Dubois
 
Octo Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endFrançois Petitit
 
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
 
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
 
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
 
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm
 
Utilisation de services Web sécurisés en Java en environnement Open Source
Utilisation de services Web sécurisés en Java en environnement Open SourceUtilisation de services Web sécurisés en Java en environnement Open Source
Utilisation de services Web sécurisés en Java en environnement Open Sourceguest3be047
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications webMarcel TCHOULEGHEU
 
Sécurité des web services soap
Sécurité des web services soapSécurité des web services soap
Sécurité des web services soapZakaria SMAHI
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 

Similaire à Epitech securite-2012.key (20)

Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02
 
Owasp top 10 2010 Resist toulouse
Owasp top 10   2010  Resist toulouseOwasp top 10   2010  Resist toulouse
Owasp top 10 2010 Resist toulouse
 
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é avec SQL Server 2012
La sécurité avec SQL Server 2012La sécurité avec SQL Server 2012
La sécurité avec SQL Server 2012
 
La Sécurité Sur Le Web
La Sécurité Sur Le WebLa Sécurité Sur Le Web
La Sécurité Sur Le Web
 
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
 
Sécurité MySQL
Sécurité MySQLSécurité MySQL
Sécurité MySQL
 
Octo RefCard test front-end
Octo RefCard test front-endOcto RefCard test front-end
Octo RefCard test front-end
 
Octo Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-end
 
Securite web is_ima
Securite web is_imaSecurite web is_ima
Securite web is_ima
 
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
 
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
 
20100114 Waf V0.7
20100114 Waf V0.720100114 Waf V0.7
20100114 Waf V0.7
 
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
 
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et WebAlphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
Alphorm.com Formation Hacking et Sécurité 2020 (4of4) : Attaques AD et Web
 
Utilisation de services Web sécurisés en Java en environnement Open Source
Utilisation de services Web sécurisés en Java en environnement Open SourceUtilisation de services Web sécurisés en Java en environnement Open Source
Utilisation de services Web sécurisés en Java en environnement Open Source
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications web
 
Sécurité des web services soap
Sécurité des web services soapSécurité des web services soap
Sécurité des web services soap
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 

Plus de Damien Seguy

Strong typing @ php leeds
Strong typing  @ php leedsStrong typing  @ php leeds
Strong typing @ php leedsDamien Seguy
 
Strong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationStrong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationDamien Seguy
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeDamien Seguy
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applicationsDamien Seguy
 
Top 10 pieges php afup limoges
Top 10 pieges php   afup limogesTop 10 pieges php   afup limoges
Top 10 pieges php afup limogesDamien Seguy
 
Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Damien Seguy
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Damien Seguy
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confooDamien Seguy
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Damien Seguy
 
Top 10 php classic traps php serbia
Top 10 php classic traps php serbiaTop 10 php classic traps php serbia
Top 10 php classic traps php serbiaDamien Seguy
 
Top 10 php classic traps
Top 10 php classic trapsTop 10 php classic traps
Top 10 php classic trapsDamien Seguy
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappesDamien Seguy
 
Code review workshop
Code review workshopCode review workshop
Code review workshopDamien Seguy
 
Understanding static analysis php amsterdam 2018
Understanding static analysis   php amsterdam 2018Understanding static analysis   php amsterdam 2018
Understanding static analysis php amsterdam 2018Damien Seguy
 
Review unknown code with static analysis php ce 2018
Review unknown code with static analysis   php ce 2018Review unknown code with static analysis   php ce 2018
Review unknown code with static analysis php ce 2018Damien Seguy
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3Damien Seguy
 
Php 7.3 et ses RFC (AFUP Toulouse)
Php 7.3 et ses RFC  (AFUP Toulouse)Php 7.3 et ses RFC  (AFUP Toulouse)
Php 7.3 et ses RFC (AFUP Toulouse)Damien Seguy
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCDamien Seguy
 
Review unknown code with static analysis php ipc 2018
Review unknown code with static analysis   php ipc 2018Review unknown code with static analysis   php ipc 2018
Review unknown code with static analysis php ipc 2018Damien Seguy
 
Code review for busy people
Code review for busy peopleCode review for busy people
Code review for busy peopleDamien Seguy
 

Plus de Damien Seguy (20)

Strong typing @ php leeds
Strong typing  @ php leedsStrong typing  @ php leeds
Strong typing @ php leeds
 
Strong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisationStrong typing : adoption, adaptation and organisation
Strong typing : adoption, adaptation and organisation
 
Qui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le codeQui a laissé son mot de passe dans le code
Qui a laissé son mot de passe dans le code
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applications
 
Top 10 pieges php afup limoges
Top 10 pieges php   afup limogesTop 10 pieges php   afup limoges
Top 10 pieges php afup limoges
 
Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020Top 10 php classic traps DPC 2020
Top 10 php classic traps DPC 2020
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confoo
 
Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4Tout pour se préparer à PHP 7.4
Tout pour se préparer à PHP 7.4
 
Top 10 php classic traps php serbia
Top 10 php classic traps php serbiaTop 10 php classic traps php serbia
Top 10 php classic traps php serbia
 
Top 10 php classic traps
Top 10 php classic trapsTop 10 php classic traps
Top 10 php classic traps
 
Top 10 chausse trappes
Top 10 chausse trappesTop 10 chausse trappes
Top 10 chausse trappes
 
Code review workshop
Code review workshopCode review workshop
Code review workshop
 
Understanding static analysis php amsterdam 2018
Understanding static analysis   php amsterdam 2018Understanding static analysis   php amsterdam 2018
Understanding static analysis php amsterdam 2018
 
Review unknown code with static analysis php ce 2018
Review unknown code with static analysis   php ce 2018Review unknown code with static analysis   php ce 2018
Review unknown code with static analysis php ce 2018
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3
 
Php 7.3 et ses RFC (AFUP Toulouse)
Php 7.3 et ses RFC  (AFUP Toulouse)Php 7.3 et ses RFC  (AFUP Toulouse)
Php 7.3 et ses RFC (AFUP Toulouse)
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFC
 
Review unknown code with static analysis php ipc 2018
Review unknown code with static analysis   php ipc 2018Review unknown code with static analysis   php ipc 2018
Review unknown code with static analysis php ipc 2018
 
Code review for busy people
Code review for busy peopleCode review for busy people
Code review for busy people
 

Epitech securite-2012.key

  • 1. SÉCURITÉ PHP ET MYSQL Paris, France, 4 juin 2012 1
  • 2. MENU DU JOUR Comment vérifier la sécurité de son application Vérification du site en production Analyse à code ouvert Rédaction d’un rapport d’audit 2
  • 3. AYE’ CAPTAIN Damien Seguy damien.seguy@gmail.com Expert LAMP Directeur Technique @ bysoft China 3
  • 4. QUESTIONS? Réponses?
  • 6. OWASP Cod Nom Site Code e A1 Injection X A2 Cross-Site Scripting (XSS) X X A3 Broken Authentication and Session X A4 Insecure Direct Management Object References X A5 Cross-Site Request Forgery (CSRF) X X A6 Security Misconfiguration X A7 Insecure Cryptographic Storage X A8 Failure to Restrict URL Access X A9 Insufficient Transport Layer Protection X A10 Unvalidated Redirects and Forwards X
  • 7. VOCABULAIRE Découverte En apprendre plus sur l’application Vulnérabilité Une faille qui permet de perturber le système Attaque Une vulnérabilité avec un objectif 7
  • 8. MANTRA Valider les données en entrée Nettoyer les données Ne rien laisser trainer sur le site
  • 9. VALIDER LES DONNÉES Vérifiez les variables entrantes Vérifiez les URL entrantes aussi! Vérifiez les fichiers
  • 10.
  • 11.
  • 12. https://www.shacombank.com.hk/ibanking/dse/html/customer/zh_TW/ INError.jsp?errCode=2163&encoding=zh_TW&errMode=AE%22;} document.write%28%22%3Ciframe%20src=%27http://xssed.com%27%3E %22%29;%20function%20test%28%29{var%20a=%22
  • 15. PROTÉGÉ PAR BROWSER? 1. <?php 2. 3. $url = "http://www.grosbill.com/4-xxxx"_-144413- tv_video-lecteur_dvd_de_salon"; 4. 5. $html = file_get_contents($url); 6. 7. print $html; 8. ?> document.write(' <iframe src="http:// www.facebook.com/plugins/like.php?href=http:// www.grosbill.com/4-xxxx"_-144413-tv_video- lecteur_dvd_de_salon&amp;send=true&amp;layout=b utton_....
  • 16. INJECTION PAR GIF Prenez une image GIF, ajoutez phpinfo() Envoyez la sur le site Si tous les fichiers sont traités par PHP...
  • 17. NETTOYER LES DONNÉES On a une injection quand une valeur parvient à une autre technologie que PHP, et y fait autre chose que ce qui est attendu. Toutes les injections ont la même origine :
  • 18. NETTOYER LES DONNÉES On a une injection quand une valeur parvient à une autre technologie que PHP, et y fait autre chose que ce qui est attendu. Toutes les injections ont la même origine : .
  • 19. NETTOYER LES DONNÉES On a une injection quand une valeur parvient à une autre technologie que PHP, et y fait autre chose que ce qui est attendu. Toutes les injections ont la même origine : .
  • 20. CARACTERES SPÉCIAUX HTML : ", ', <, >, & URL : %, / Query : &, ?, = SQL : /, #, ", ' et encore Shell, XML, LDAP, Path, PDF, Javascript, header HTTP, cookies, domaines,...
  • 21. METHODES DE PROTECTION HTML : htmlentities, htmlspecialchars URL : rawurlencode Query : urlencode SQL : requêtes préparées, mysql_real_escape_string.. et encore Shell, XML, LDAP, Path, PDF, Javascript, header HTTP, cookies, ...
  • 22. BONNE PRATIQUE Systématisez les protections avec le framework Framework généralistes Classe maison Assurez un nettoyage minimal au retour des données Qui d’autre manipule la base de données?
  • 23. APPROCHE D’AUDIT Identifiez les données entrantes Notion de variables corrompues (tainted variables) : on se méfie des variables tant qu’elles n’ont pas été validée
  • 24. TRACABILITÉ $_CLEAN public function nameAction() { $request = $this->getRequest(); $validator = new Zend_Validate_Alnum();  $_CLEAN['username'] = $validator->isValid( $request->getParam('username')); } les variables locales ne sont créées qu’apres validation public function nameAction() { $request = $request->query; $validator = $this->get('validator');  $username = $validator->validate($request->get('username')) }
  • 25. RETRO-TRACABILITÉ En Zend Framework, surveillez les Db:factory En Symfony, les appels à getCurrentConnection() mysql_query, pg_query. Puis, remontez à l’origine du code
  • 26. STÉGANOGRAPHIE L’art de cacher les choses à la vue de tous Trouvez la tour l’une des tours les plus hautes du monde dans l’image suivante
  • 27. STÉGANOGRAPHIE L’art de cacher les choses à la vue de tous Trouvez la tour l’une des tours les plus hautes du monde dans l’image suivante
  • 28. STÉGANOGRAPHIE L’art de cacher les choses à la vue de tous Trouvez la tour l’une des tours les plus hautes du monde dans l’image suivante
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 39.
  • 40. ROBOTS.TXT Empoisonnez les données Ne mettez pas seulement les dossiers à protéger Mettez des dossiers qui n’existent pas Notez les IP qui s’y connectent Vérifiez en ligne les URLs de votre site
  • 44. BONNES PRATIQUES Masquez les informations sur votre systeme expose_php = off, ServerSignature Off Ayez un dossier hors Web Root Listez votre racine Web Faites la chasse aux debug : echo, print, print_r, var_dump, krumo
  • 45. RAPPORT D’AUDIT Consignez vos audits Un rapport, un wiki, un log ou blog Notez les réussites et les points à améliorer Automatisez ce qui est important Integration continue, cron, scripts manuels... Faites le reste a la main, a budgeter
  • 46. STRUCTURE Résumé exécutif 3 paragraphes, simples à lire Liste des vérifications réalisées et résultats (OK, KO) Détails et explications sur chaque point à améliorer
  • 47. RÉSUMÉ Point sécurité Impact Probabilité Correctif XSS Important Forte Lourd Zone privée sans Moyen Toujours Faible SSL Fichiers Important Faible Faible découverts URLs mal Fort Faible Moyen protégées
  • 48. DÉTAILS Titre Exemple dans le code, explications théoriques Suggestion de correction Mentionner les limitations de la correction Liste des occurrences Ou le moyen de les trouver

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n