Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Auditer son code PHP
pour plus de sécurité


     NEXEN - ALTER WAY GROUP   1
Agenda

 Tests boîte noire
   Scanners automatiques
   Fuzzing
   Scénarios
 Test à code ouvert
   Outils et techniq...
Qui parle?
               Damien Seguy
               Eleveur d'éléPHPants
               Architecte Open
             ...
Un audit

 La confiance
  n'exclut pas le contrôle™
   Pour valider un travail externe
   Pour valider un travail inter...
Deux types d'audit

 Boîte noire
   Comme un pirate
   Eviter les préjugés
 Code ouvert
   Plus efficace
   Plus thé...
Scanners automatiques

 Simple à mettre en oeuvre
 Nikto (http://www.cirt.net/)
 Doivent être adaptés
   Mis à jour ré...
Fuzzing
 De la friture sur la ligne
 Stress des formulaires
   Bases de données

Valeur                                ...
Fuzzing : valeurs

  Tous les caractères de 0 à x255
    Unicode
  Les nombres 1, 0, -1, 0.99, infini
  Chaînes
    L...
Fuzzing : moyens

 GET, POST, COOKIE
 Des variables tableaux : c[]=1
 Excédents de variables
   debug=1, task=view
 M...
Scénarios

 Des tests plus construits
   Plus adaptés mais fragiles
 Automatiser les tests
 A utiliser avec le fuzzing...
Scénarios
Navigateur    Proxy                      Application




 Valeurs       Log                       Navigateur

  ...
Plan d'audit PHP

 Passer en revue le code
 Dégrossir le travail avec un outil
 Rechercher les trous possibles
 Affine...
Trous fréquents

 Injections PHP
    include ($_GET['x']);
 Injections SQL
    'WHERE login='.$_GET['x']
 Injections ...
Outils

  grep
    Rapide mais trop
  PHP
    preg_match + toilettages
    code_sniffer
    tokenizer
  Perl, Pytho...
Injections PHP

 Liste des include/require
   grep -ri include * > incl.php.txt
 Filtrage avec
   $ : variables
   .'...
Injections SQL

 Mots-clés : select, update,
  delete, insert, where, join
 Fonctions PHP
   addslashes
   mysql_escap...
XSS

 $_GET, $_POST, $_COOKIE
 précédé par
   .
   (
   ,
   echo ou print
 phpMyAdmin : 90k => 70 à traiter
      ...
Divers

 print_r, var_dump
 die, exit
 html_entity_decode
 htmlentities sans 2eme paramètre
 eval et ` (guillemets ob...
Pour aller plus loin
  Adapter le code
   aux outils
   d'analyse
  Automatiser
   l'analyse avec
   cron
  phpUnderCon...
Questions?




 http://www.alterway.fr/
 damien.seguy@nexen.net
 http://www.nexen.net/conferences.php
               NE...
Upcoming SlideShare
Loading in …5
×

Auditer son code pour plus de sécurité.

2,119 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
  • Be the first to comment

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

×