Auditer son code pour plus de sécurité.

1,900 views

Published on

Un bon audit, c’est-à-dire un regard sans complaisance sur les petits travers du code, la configuration et de l’architecture d’une application.
Différentes techniques permettent d’évaluer PHP et les applications Web : les tests automatiques, le fuzzing, les scénarios, les tests boîte
noire, les analyses à code ouvert.

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

No Downloads
Views
Total views
1,900
On SlideShare
0
From Embeds
0
Number of Embeds
23
Actions
Shares
0
Downloads
54
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Auditer son code pour plus de sécurité.

  1. 1. Auditer son code PHP pour plus de sécurité NEXEN - ALTER WAY GROUP 1
  2. 2. Agenda  Tests boîte noire  Scanners automatiques  Fuzzing  Scénarios  Test à code ouvert  Outils et techniques NEXEN - ALTER WAY GROUP
  3. 3. Qui parle?  Damien Seguy  Eleveur d'éléPHPants  Architecte Open Source  Audits sécurité et performances NEXEN - ALTER WAY GROUP
  4. 4. Un audit  La confiance n'exclut pas le contrôle™  Pour valider un travail externe  Pour valider un travail interne  Pour faire le point  Pour avoir un regard externe  Aussi souvent que possible NEXEN - ALTER WAY GROUP
  5. 5. Deux types d'audit  Boîte noire  Comme un pirate  Eviter les préjugés  Code ouvert  Plus efficace  Plus théorique NEXEN - ALTER WAY GROUP
  6. 6. Scanners automatiques  Simple à mettre en oeuvre  Nikto (http://www.cirt.net/)  Doivent être adaptés  Mis à jour régulièrement  Personnalisables NEXEN - ALTER WAY GROUP
  7. 7. Fuzzing  De la friture sur la ligne  Stress des formulaires  Bases de données Valeur Erreurs Application Crash Aléatoire  Test décomplexé OK NEXEN - ALTER WAY GROUP
  8. 8. Fuzzing : valeurs  Tous les caractères de 0 à x255  Unicode  Les nombres 1, 0, -1, 0.99, infini  Chaînes  Longues, courtes  Dictionnaires de valeurs  de vulnérabilités NEXEN - ALTER WAY GROUP
  9. 9. Fuzzing : moyens  GET, POST, COOKIE  Des variables tableaux : c[]=1  Excédents de variables  debug=1, task=view  Manque de variables  Encodages variés  UTF-8, Latin1, HTML, hexa NEXEN - ALTER WAY GROUP
  10. 10. Scénarios  Des tests plus construits  Plus adaptés mais fragiles  Automatiser les tests  A utiliser avec le fuzzing NEXEN - ALTER WAY GROUP
  11. 11. Scénarios Navigateur Proxy Application Valeurs Log Navigateur  Funkload, WebScarab NEXEN - ALTER WAY GROUP
  12. 12. Plan d'audit PHP  Passer en revue le code  Dégrossir le travail avec un outil  Rechercher les trous possibles  Affiner manuellement NEXEN - ALTER WAY GROUP
  13. 13. Trous fréquents  Injections PHP  include ($_GET['x']);  Injections SQL  'WHERE login='.$_GET['x']  Injections XSS  echo $_GET['x']; NEXEN - ALTER WAY GROUP
  14. 14. Outils  grep  Rapide mais trop  PHP  preg_match + toilettages  code_sniffer  tokenizer  Perl, Python, etc... NEXEN - ALTER WAY GROUP
  15. 15. Injections PHP  Liste des include/require  grep -ri include * > incl.php.txt  Filtrage avec  $ : variables  .' et .quot; : pour les constantes  Exclure les valeurs filtrées  phpMyAdmin : de 960 à 82 NEXEN - ALTER WAY GROUP
  16. 16. Injections SQL  Mots-clés : select, update, delete, insert, where, join  Fonctions PHP  addslashes  mysql_escape_string  mysql_error (die, echo, print)  mysqli_multi_query NEXEN - ALTER WAY GROUP
  17. 17. XSS  $_GET, $_POST, $_COOKIE  précédé par  .  (  ,  echo ou print  phpMyAdmin : 90k => 70 à traiter NEXEN - ALTER WAY GROUP
  18. 18. Divers  print_r, var_dump  die, exit  html_entity_decode  htmlentities sans 2eme paramètre  eval et ` (guillemets obliques) NEXEN - ALTER WAY GROUP
  19. 19. Pour aller plus loin  Adapter le code aux outils d'analyse  Automatiser l'analyse avec cron  phpUnderControl  Audits croisés NEXEN - ALTER WAY GROUP
  20. 20. Questions?  http://www.alterway.fr/  damien.seguy@nexen.net  http://www.nexen.net/conferences.php NEXEN - ALTER WAY GROUP

×