This presentation is biligual (french/english).
Durant un audit sécurité d'une application web, il y a plusieurs phases au travail d'enquête : interview, recensement des vulnérabilités (XSS, injections, dévoilement, etc.) par avec des tests d'intrusion, analyse du code, suivi d'un rapport expliquant les problèmes, des recommandations de renforcement et priorisation des tâches. Toutes ces étapes sont importantes, mais certaines sont plus connues que les autres. Dans cette présentation, nous apprendrons les étapes et les outils pour faire un audit du code d'une application Web. Les techniques présentés peuvent être utilisés en plusieurs langages de programmation, mais plusieurs outils seront axé sur le langage de programmation PHP.
1. Auditing PHP
applications
Audit des
applications en
PHP
vendredi 13 novembre 2009 1
2. Who speak? Qui parle?
Philippe Gamache Philippe Gamache
Parler Haut, Interagir Parler Haut, Interagir
Librement : Librement :
Web development, Développement Web,
security audit, audit de sécurité,
training formations
info@ph-il.ca info@ph-il.ca
@SecureSymfony @SecureSymfony
vendredi 13 novembre 2009 2
3. Security book
Livre de sécurité
New 2009 edition
Comprehensive review of
security system for MySQL,
PHP, etc.
Published in French
Planning translation
Nouvelle édition 2009
Bilan complet de la sécurité :
système, MySQL, PHP, etc.
Édité chez Eyrolles
Dédicaces sur demande
vendredi 13 novembre 2009 3
4. Agenda Ordre du jour
Workshop Présentation de
presentation l’atelier
Black box audit Audit boîte noire
Source code audit Audit à code ouvert
vendredi 13 novembre 2009 4
5. Why? Pourquoi?
Confidence does not La confiance n'e xclut pas
exclude control™ le contrôle™
To validate external Pour valider un travail
work externe
Pour valider un travail
To validate internal interne
work
Pour faire le point
Round-up Pour avoir un regard
For an external externe
perspective Aussi souvent que
As often as possible possible
vendredi 13 novembre 2009 5
6. Full audit synopsis
Synopsis d’un audit
Identification of the Identification des
audit goals objectifs d'audit
Interview with the Entretien avec les
development teams équipes de
développement
Black box testing
Test boîte noire
Open Code audit
Audit de code
Report
vendredi 13 novembre 2009 6
7. Identification of the audit goals
Identification des objectifs d’audit
Audit scope Étendue de l'audit
Security Sécurité
Performance Performance
Code quality Qualité du code
vendredi 13 novembre 2009 7
8. Inter view with the development teams
Entretien avec les équipes de développement
Check if development Vérifiez si l’équipe de
teams knows what to développement sait ce
secure qu’il faut sécurisé
Have the design Demandez d’expliquer la
explained first conception
Have them explains their Demandez d’expliquer
approach leur approche
Check what they say Vérifiez ce qu'ils
Check what they don’t disent
say Vérifiez ce qu'ils ne
disent pas
vendredi 13 novembre 2009 8
9. The shy version
La version timide
We know there are Nous savons qu’il y a
security problems des problèmes de
sécurité :
but we have no time
to secure them mais nous n'avons
pas le temps de les
this app has been sécuriser
written years ago
ce logiciel a été écrit
we can’t keep up il y a quelques années
with the threats
nous ne pouvons pas
suivre les menaces
vendredi 13 novembre 2009 9
10. The strong version
La version forte
We have secured the Nous avons sécurisé
application l'application
Nous utilisons le
We use SSL and protocole SSL et la
crypto cryptographie
All content is Tout le contenu est
validated and filtered validé et filtré
Nous ne faisons
We don’t do any aucune inclusion
dynamical include dynamique
Our frameworks Nos cadres
doesn’t allow this d’applications sont
sécurisées
vendredi 13 novembre 2009 10
11. Black box testing
Test boîte noire
Easy to set up Facile de mise en place
Take into account the Prendre en compte le
context of the contexte de la
application demande
Often spectacular Souvent
spectaculaires
Generally shallow
Généralement peu
profondes
vendredi 13 novembre 2009 11
12. Black box testing
Test boîte noire
Finding informations Recherche
Look for d’informations
vulnerabilities Rechercher les
Automatic vulnérabilités
scanners Scanneurs
By hand automatiques
Fuzzing À la main
Scenarios Fuzzing
Strikes Scénarios
Attaquer
vendredi 13 novembre 2009 12
13. Black box testing
Test boîte noire
Usual directories Répertoires habituels
includes, include, inc, com, classes, lib,
library
admin, adm, administrator, administrateur
tmp, TMP, ext, var
data, db, conf, config, configuration
uploads, install
vendredi 13 novembre 2009 13
14. Black box testing
Test boîte noire
Typical files Fichiers typiques
.phps, .inc, .class .phps, .inc, .class
xml, ini, yaml, cfg xml, ini, yaml, cfg
.tar, .gz, .zip, .rar, .tar, .gz, .zip, .rar,
.bz2 .bz2
Apache Alias : / Apache Alias : /
icons/ icons/
robots.txt robots.txt
vendredi 13 novembre 2009 14
15. Open Code audit
Audit de code
Look into the PHP code Rechercher dans le code
PHP
Search for hidden
problems Rechercher les
problèmes cachés
Usually less
spectacular than Habituellement, moins
black box spectaculaire que les
tests boîte noire
Easy to loose focus
Facile de perdre sa
Tempting to audit concentration
everything
Tentant de tout vérifier
vendredi 13 novembre 2009 15
16. Approch Approche
What to search for? Que rechercher?
What are the entry Quels sont les points
points? d'e ntrée?
What are the exit Quels sont les points de
points? sortie?
Open-mindedness and Ouverture d’esprit et
discovery découverte
How can they be Comment peuvent-ils
exploited être exploités
Or protected ? Ou protégés?
vendredi 13 novembre 2009 16
17. Assessing the code
Évaluer le code
One liners En une ligne
One line of code is Une ligne de code est
sufficiently to be bad suffisamment pour être
Even though mauvais
you must follow the Malgré tous
code vous devez suivre le code
for ward (for input) vers l’avant (entrées)
in reverse (for sens inverse (sorties)
output)
<?php
$action = $_POST['action'];
$query_string = "action=$action";
$link = "index.php?$query_string";
?>
<a href="<?php echo $link; ?>"> Click Here </a>
vendredi 13 novembre 2009 17
18. What to search for?
Que rechercher?
Injections Injections
PHP PHP
SQL SQL
HTML/JavaScript HTML/JavaScript
system système
vendredi 13 novembre 2009 18
19. Tools Outils
Your eyes Vos yeux
Text editors Éditeurs de texte
grep grep
Fast, available, Rapide, disponible,
convenient pratique
Tokenizer Tokenizer
Semantic, accurate Sémantique, précis
vendredi 13 novembre 2009 19