SÉCURITÉPHP ET MYSQL   Paris, France, 4 juin 2012         1
MENU DU JOURComment vérifier la sécurité de son application  Vérification du site en production  Analyse à code ouvert  Ré...
AYE’ CAPTAINDamien Seguy  damien.seguy@gmail.comExpert LAMPDirecteur Technique @ bysoft China                             ...
QUESTIONS?   Réponses?
REFERENTIELSSÉCURITÉOWASPHIPAAPCI card industrySarbanes-OxleyBasel IIJSOX
OWASPCod   Nom                                      Site CodeeA1    Injection                                      XA2    ...
VOCABULAIREDécouverte   En apprendre plus sur l’applicationVulnérabilité   Une faille qui permet de perturber le systèmeAt...
MANTRAValider les données en entréeNettoyer les donnéesNe rien laisser trainer sur le site
VALIDER LES DONNÉESVérifiez les variables entrantesVé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;}d...
VÉRIFIEZ LES URLS
VÉRIFIEZ LES URLS
PROTÉGÉ PAR BROWSER?1. <?php2.3. $url = "http://www.grosbill.com/4-xxxx"_-144413-   tv_video-lecteur_dvd_de_salon";4.5. $h...
INJECTION PAR GIFPrenez une image GIF, ajoutez phpinfo()Envoyez la sur le siteSi 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 q...
NETTOYER LES DONNÉES On a une injection quand une valeur parvient à une autre technologie que PHP, et y fait autre chose q...
NETTOYER LES DONNÉES On a une injection quand une valeur parvient à une autre technologie que PHP, et y fait autre chose q...
CARACTERESSPÉCIAUXHTML : ", , <, >, &URL : %, /Query : &, ?, =SQL : /, #, ", et encore Shell, XML, LDAP, Path, PDF, Javasc...
METHODES DEPROTECTIONHTML : htmlentities, htmlspecialcharsURL : rawurlencodeQuery : urlencodeSQL : requêtes préparées, mys...
BONNE PRATIQUESystématisez les protections avec le framework  Framework généralistes  Classe maisonAssurez un nettoyage mi...
APPROCHE D’AUDITIdentifiez les données entrantesNotion de variables corrompues (tainted variables) : on se méfie desvariab...
TRACABILITÉ $_CLEANpublic function nameAction() {   $request = $this->getRequest();   $validator = new Zend_Validate_Alnum...
RETRO-TRACABILITÉEn Zend Framework, surveillez les Db:factoryEn Symfony, les appels à getCurrentConnection()mysql_query, p...
STÉGANOGRAPHIEL’art de cacher les choses àla vue de tousTrouvez la tour l’une destours les plus hautes dumonde dans l’imag...
STÉGANOGRAPHIEL’art de cacher les choses àla vue de tousTrouvez la tour l’une destours les plus hautes dumonde dans l’imag...
STÉGANOGRAPHIEL’art de cacher les choses àla vue de tousTrouvez la tour l’une destours les plus hautes dumonde dans l’imag...
ROBOTS.TXThttp://www.pcf.fr/robots.txt
ROBOTS.TXTEmpoisonnez les données  Ne mettez pas seulement les dossiers à protéger  Mettez des dossiers qui n’existent pas...
MÊME EN ASP
MÊME EN ASP
AFFICHAGES D’ERREURS
BONNES PRATIQUESMasquez les informations sur votre systeme  expose_php = off, ServerSignature OffAyez un dossier hors Web ...
RAPPORT D’AUDITConsignez vos audits  Un rapport, un wiki, un log ou blog  Notez les réussites et les points à améliorerAut...
STRUCTURERésumé exécutif  3 paragraphes, simples à lireListe des vérifications réalisées et résultats (OK, KO)Détails et e...
RÉSUMÉPoint sécurité     Impact      Probabilité   Correctif      XSS          Important      Forte       LourdZone privée...
DÉTAILSTitreExemple dans le code, explications théoriquesSuggestion de correction  Mentionner les limitations de la correc...
MERCI!damien.seguy@gmail.comhttp://www.slideshare.net/dseguy
A L’ABORDAGE
Epitech securite-2012.key
Epitech securite-2012.key
Epitech securite-2012.key
Epitech securite-2012.key
Epitech securite-2012.key
Epitech securite-2012.key
Epitech securite-2012.key
Epitech securite-2012.key
Epitech securite-2012.key
Epitech securite-2012.key
Epitech securite-2012.key
Epitech securite-2012.key
Upcoming SlideShare
Loading in...5
×

Epitech securite-2012.key

465

Published on

Damien Seguy, co-auteur du livre "Sécurité PHP" (éditions Eyrolles) et membre du PHPGroup. L’atelier consiste à examiner une vraie application PHP présentée puis de tenter toutes les manœuvres retorses possibles pour la mettre en péril.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
465
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Epitech securite-2012.key

    1. 1. SÉCURITÉPHP ET MYSQL Paris, France, 4 juin 2012 1
    2. 2. MENU DU JOURComment 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. 3. AYE’ CAPTAINDamien Seguy damien.seguy@gmail.comExpert LAMPDirecteur Technique @ bysoft China 3
    4. 4. QUESTIONS? Réponses?
    5. 5. REFERENTIELSSÉCURITÉOWASPHIPAAPCI card industrySarbanes-OxleyBasel IIJSOX
    6. 6. OWASPCod Nom Site CodeeA1 Injection XA2 Cross-Site Scripting (XSS) X XA3 Broken Authentication and Session XA4 Insecure Direct Management Object References XA5 Cross-Site Request Forgery (CSRF) X XA6 Security Misconfiguration XA7 Insecure Cryptographic Storage XA8 Failure to Restrict URL Access XA9 Insufficient Transport Layer Protection XA10 Unvalidated Redirects and Forwards X
    7. 7. VOCABULAIREDécouverte En apprendre plus sur l’applicationVulnérabilité Une faille qui permet de perturber le systèmeAttaque Une vulnérabilité avec un objectif 7
    8. 8. MANTRAValider les données en entréeNettoyer les donnéesNe rien laisser trainer sur le site
    9. 9. VALIDER LES DONNÉESVérifiez les variables entrantesVérifiez les URL entrantes aussi!Vérifiez les fichiers
    10. 10. 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
    11. 11. VÉRIFIEZ LES URLS
    12. 12. VÉRIFIEZ LES URLS
    13. 13. PROTÉGÉ PAR BROWSER?1. <?php2.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_....
    14. 14. INJECTION PAR GIFPrenez une image GIF, ajoutez phpinfo()Envoyez la sur le siteSi tous les fichiers sont traités par PHP...
    15. 15. 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 :
    16. 16. 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 : .
    17. 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. 18. CARACTERESSPÉCIAUXHTML : ", , <, >, &URL : %, /Query : &, ?, =SQL : /, #, ", et encore Shell, XML, LDAP, Path, PDF, Javascript, header HTTP,cookies, domaines,...
    19. 19. METHODES DEPROTECTIONHTML : htmlentities, htmlspecialcharsURL : rawurlencodeQuery : urlencodeSQL : requêtes préparées, mysql_real_escape_string..et encore Shell, XML, LDAP, Path, PDF, Javascript, header HTTP,cookies, ...
    20. 20. BONNE PRATIQUESystématisez les protections avec le framework Framework généralistes Classe maisonAssurez un nettoyage minimal au retour des données Qui d’autre manipule la base de données?
    21. 21. APPROCHE D’AUDITIdentifiez les données entrantesNotion de variables corrompues (tainted variables) : on se méfie desvariables tant qu’elles n’ont pas été validée
    22. 22. TRACABILITÉ $_CLEANpublic 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 validationpublic function nameAction() { $request = $request->query; $validator = $this->get(validator);  $username = $validator->validate($request->get(username))}
    23. 23. RETRO-TRACABILITÉEn Zend Framework, surveillez les Db:factoryEn Symfony, les appels à getCurrentConnection()mysql_query, pg_query.Puis, remontez à l’origine du code
    24. 24. STÉGANOGRAPHIEL’art de cacher les choses àla vue de tousTrouvez la tour l’une destours les plus hautes dumonde dans l’imagesuivante
    25. 25. STÉGANOGRAPHIEL’art de cacher les choses àla vue de tousTrouvez la tour l’une destours les plus hautes dumonde dans l’imagesuivante
    26. 26. STÉGANOGRAPHIEL’art de cacher les choses àla vue de tousTrouvez la tour l’une destours les plus hautes dumonde dans l’imagesuivante
    27. 27. ROBOTS.TXThttp://www.pcf.fr/robots.txt
    28. 28. ROBOTS.TXTEmpoisonnez les données Ne mettez pas seulement les dossiers à protéger Mettez des dossiers qui n’existent pas Notez les IP qui s’y connectentVérifiez en ligne les URLs de votre site
    29. 29. MÊME EN ASP
    30. 30. MÊME EN ASP
    31. 31. AFFICHAGES D’ERREURS
    32. 32. BONNES PRATIQUESMasquez les informations sur votre systeme expose_php = off, ServerSignature OffAyez un dossier hors Web Root Listez votre racine WebFaites la chasse aux debug : echo, print, print_r, var_dump, krumo
    33. 33. RAPPORT D’AUDITConsignez vos audits Un rapport, un wiki, un log ou blog Notez les réussites et les points à améliorerAutomatisez ce qui est important Integration continue, cron, scripts manuels... Faites le reste a la main, a budgeter
    34. 34. STRUCTURERésumé exécutif 3 paragraphes, simples à lireListe des vérifications réalisées et résultats (OK, KO)Détails et explications sur chaque point à améliorer
    35. 35. RÉSUMÉPoint sécurité Impact Probabilité Correctif XSS Important Forte LourdZone privée sans Moyen Toujours Faible SSL Fichiers Important Faible Faible découverts URLs mal Fort Faible Moyen protégées
    36. 36. DÉTAILSTitreExemple dans le code, explications théoriquesSuggestion de correction Mentionner les limitations de la correctionListe des occurrences Ou le moyen de les trouver
    37. 37. MERCI!damien.seguy@gmail.comhttp://www.slideshare.net/dseguy
    38. 38. A L’ABORDAGE
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×