20
NEXEN - ALTER WAY GROUP 1 Auditer son code PHP pour plus de sécurité

Auditer son code pour plus de sécurité

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

Page 1: Auditer son code pour plus de sécurité

NEXEN - ALTER WAY GROUP 1

Auditer son code PHP pour plus de sécurité

Page 2: Auditer son code 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

Page 3: Auditer son code pour plus de sécurité

NEXEN - ALTER WAY GROUP

Qui parle?

Damien Seguy Eleveur d'éléPHPants Architecte Open

Source Audits sécurité et

performances

Page 4: Auditer son code pour plus de sécurité

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

Page 5: Auditer son code pour plus de sécurité

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

Page 6: Auditer son code pour plus de sécurité

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

Page 7: Auditer son code pour plus de sécurité

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

Page 8: Auditer son code pour plus de sécurité

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

Page 9: Auditer son code pour plus de sécurité

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

Page 10: Auditer son code pour plus de sécurité

NEXEN - ALTER WAY GROUP

Scénarios

Des tests plus construits Plus adaptés mais fragiles

Automatiser les tests A utiliser avec le fuzzing

Page 11: Auditer son code pour plus de sécurité

NEXEN - ALTER WAY GROUP

Scénarios

Funkload, WebScarab

Proxy ApplicationNavigateur

NavigateurLogValeurs

Page 12: Auditer son code pour plus de sécurité

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

Page 13: Auditer son code pour plus de sécurité

NEXEN - ALTER WAY GROUP

Trous fréquents

Injections PHP include ($_GET['x']);

Injections SQL 'WHERE login='.$_GET['x']

Injections XSS echo $_GET['x'];

Page 14: Auditer son code pour plus de sécurité

NEXEN - ALTER WAY GROUP

Outils

grep Rapide mais trop

PHP preg_match + toilettages code_sniffer tokenizer

Perl, Python, etc...

Page 15: Auditer son code pour plus de sécurité

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

Page 16: Auditer son code pour plus de sécurité

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

Page 17: Auditer son code pour plus de sécurité

NEXEN - ALTER WAY GROUP

XSS

$_GET, $_POST, $_COOKIE précédé par

. ( , echo ou print

phpMyAdmin : 90k => 70 à traiter

Page 18: Auditer son code pour plus de sécurité

NEXEN - ALTER WAY GROUP

Divers

print_r, var_dump die, exit html_entity_decode htmlentities sans 2eme paramètre eval et ` (guillemets obliques)

Page 19: Auditer son code pour plus de sécurité

NEXEN - ALTER WAY GROUP

Pour aller plus loin Adapter le code

aux outils d'analyse

Automatiser l'analyse avec cron

phpUnderControl Audits croisés

Page 20: Auditer son code pour plus de sécurité

NEXEN - ALTER WAY GROUP

Questions?

http://www.alterway.fr/ [email protected] http://www.nexen.net/conferences.php