Epitech securite-2012.key

801 views

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
801
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
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

    ×