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...
Prochain SlideShare
Chargement dans…5
×

Auditer son code pour plus de sécurité.

1 875 vues

Publié le

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.

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 875
Sur SlideShare
0
Issues des intégrations
0
Intégrations
23
Actions
Partages
0
Téléchargements
53
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

×