Upload
damien-seguy-
View
1.511
Download
5
Embed Size (px)
DESCRIPTION
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.
Citation preview
NEXEN - ALTER WAY GROUP 1
Auditer son code PHP pour plus de sécurité
NEXEN - ALTER WAY GROUP
Agenda
Tests boîte noire Scanners automatiques Fuzzing Scénarios
Test à code ouvert Outils et techniques
NEXEN - ALTER WAY GROUP
Qui parle?
Damien Seguy Eleveur d'éléPHPants Architecte Open
Source Audits sécurité et
performances
NEXEN - ALTER WAY GROUP
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
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
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
Fuzzing De la friture sur la ligne Stress des formulaires
Bases de données
Test décomplexé
Valeur Aléatoire
ErreursCrashApplication
OK
NEXEN - ALTER WAY GROUP
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
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
Scénarios
Des tests plus construits Plus adaptés mais fragiles
Automatiser les tests A utiliser avec le fuzzing
NEXEN - ALTER WAY GROUP
Scénarios
Funkload, WebScarab
Proxy ApplicationNavigateur
NavigateurLogValeurs
NEXEN - ALTER WAY GROUP
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
Trous fréquents
Injections PHP include ($_GET['x']);
Injections SQL 'WHERE login='.$_GET['x']
Injections XSS echo $_GET['x'];
NEXEN - ALTER WAY GROUP
Outils
grep Rapide mais trop
PHP preg_match + toilettages code_sniffer tokenizer
Perl, Python, etc...
NEXEN - ALTER WAY GROUP
Injections PHP
Liste des include/require grep -ri include * > incl.php.txt
Filtrage avec $ : variables .' et ." : pour les constantes Exclure les valeurs filtrées
phpMyAdmin : de 960 à 82
NEXEN - ALTER WAY GROUP
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
XSS
$_GET, $_POST, $_COOKIE précédé par
. ( , echo ou print
phpMyAdmin : 90k => 70 à traiter
NEXEN - ALTER WAY GROUP
Divers
print_r, var_dump die, exit html_entity_decode htmlentities sans 2eme paramètre eval et ` (guillemets obliques)
NEXEN - ALTER WAY GROUP
Pour aller plus loin Adapter le code
aux outils d'analyse
Automatiser l'analyse avec cron
phpUnderControl Audits croisés
NEXEN - ALTER WAY GROUP
Questions?
http://www.alterway.fr/ [email protected] http://www.nexen.net/conferences.php