TechDays 2010 (CLO202) : Introduction à Windows Azure
Securité des applications web
1. Sécurité des Applications
Web
Rédigé et présenté par
CHOULEGHEU NJEMOU MARCEL THIERRY
En vue de l’obtention du diplôme de
Licence Professionnelle
Spécialité : Génie des télécommunications
Option : Administration et Sécurité des Réseaux
Institut Supérieur des
Technologies
& du Design Industriel
Premiers Pas
Sarl
6. Personnel
Trois (03) ingénieurs systèmes et réseau
Un (01) ingénieur des Systèmes d'Information et d'aide à
la décision
Deux (01) experts en comptabilité et fiscalité
Camerounaise
Deux (05) développeurs web/application
Un (01) infographiste
Deux (02) traductrices (français/anglais/espagnole et
français/allemand)
Trois (03) Stagiaires commerciaux et 02 stagiaires Développeur
d’applications Web
Trois (03) Stagiaires commerciaux et 02 stagiaires
Développeur d’applications Web
7. Rôles du service Technique
Le service Technique (dont je faisait partie )
a pour principale rôle la conception et le
développement , hébergement des sites web
de à l’aide des modèles éprouvé comme le
model MVC (en anglais Model View
Controller) à travers l’utilisation d’un CMS
(Content Management System).
12. Pourquoi Sécurisé ?
Le coût de développement et
d’hébergement des applications élevés
Base de Données très Précieuse
Le réseau (Internet ) est un environnement
Hostile
Obtenir et Conserver une place de choix
sur le marché des services web
13. Risques Encourus
Exploitation indues des ressources
Destruction des données
Publication de données confidentielles
Perte de confience des cliens
Baisse de productivité
Détournement de votre site
Usurpation d’identité
Ridicule ...
16. Quelques Constats
Site web du ministère des Domaines et
affaires Foncières
Piraté par un enfant de 12 ans !
17. Et ce n’est pas tous …
Des victimes sur toute la planète
18. Quels sont les menaces ?
Injections SQL
XSS
CSRF
Liens direct et Erreur
Communications Non sécurisé
Url à Access restreint
…
19. Types d’attaques courantes
Coupure de connection
Entreprise visé
Données sécurisés
Brèches de sécurité
Attaques
automatisées
Assaillant
Virus,
Chevaux de
troie ,vers
Denis de
Services (DoS)
DoS
20. SQL INJECTION
Objectifs :
contournement de clause WHERE
• SELECT login FROM USERS
WHERE email =
'$_GET['email']';
• SELECT login FROM USERS
WHERE email = 'admin' OR
'1'='1';
déni de service
corruption de tables
21. Contrer les injections SQL
Utilisation de conteneurs
Commandes préparées
• SELECT login FROM USERS WHERE
email = ?;
Procédures stockées / Variables SQL
Protection des données
mysql_real_escape_string()
22. Objectifs :
contournement de clause WHERE
• SELECT login FROM USERS
WHERE email =
'$_GET['email']';
• SELECT login FROM USERS
WHERE email = 'admin' OR
'1'='1';
déni de service
corruption de tables
Attaque XSS
23. Vol de cookie
Usurpation d'identité
Exécution de code JavaScript arbitraire
Détournement du navigateur
Risques des XSS
24. Les Voies Des XSS
• echo $_GET['variable'];
Balises HTML complètes
• PHP<script src="http://www.site.com/hack.js" />
• <A HREF=http://66.102.7.147/>PHP</A>
• <A HREF="http://0x42.0x0000066.0x7.0x93/">PHP</A>
• <A
HREF="http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63
%6F%6D">PHP</A>
• >PHP<script src="//1113982867/hack.js" />
25. Les Voies Des XSS
Attributs HTML
• <IMG SRC=javascript:alert('XSS')>
• <IMG SRC=JaVaScRiPt:alert('XSS')>
• <IMG SRC="jav ascript:alert('XSS');">
• <IMG SRC=javascript:alert(
String.fromCharCode(88,83,83)) >
• <form action=”index.php”><xss!><a" method
26. Defences contre les XSS
Concepts à retenir
Valider les données entrantes
Suivre les données validées
Protéger les données sortantes
Évitez les “, ‘, < et >
UTF-8, entité HTML, hexadécimal...
27. CSRF : Cross Site Request Forgery
Exploite un site vulnérable pour qu’un
utilisateur de ce site attaque un autre
site
Ou le même site!
La seule protection de la victime
est l’identification de l’utilisateur
Aucun contact entre le pirate et le site
28. CSRF : Cross Site Request Forgery
Exploite un site vulnérable pour qu’un
utilisateur de ce site attaque un autre
site
Ou le même site!
La seule protection de la victime
est l’identification de l’utilisateur
Aucun contact entre le pirate et le site
30. Scénario d’ attaque
Site victime
http://admin.site.com/efface.php?id=33
Site vulnérable
<img src=”
http://admin.site.com/efface.php?id=33”>
31. Défenses
Il faut se méfier d’un utilisateur qu’on a
déjà identifié
Faire des identifications fréquentes
Réduire les temps de sessions
Exploiter GET / POST
33. Autres Attaques
Spam et emails
Injections HTTP
Injections LDAP, ABAP, etc
Exécution de commandes
Téléchargement de fichiers
AJAX!
34. Autres Defenses
Chiffrement et signatures
CAPTCHA
Gestion des mots de passe
Fixation de session
Attention aux hébergements partagés
Changer l’identifiant régulièrement
Relier la session au navigateur
...
35. Comment créer une application web
?Il Faut adopter une politique globale
conformément à celle de l’entreprise :
Sécuriser le réseau
Sécuriser l’hôte
Sécuriser l’application
36. Technologies utilisés
La cryptographie
Le Hachage
Les signatures numériques
Les certificats numériques
Communications Sécurisés
Authentification
Autorisation
Firewalls
Audits
Mise à jour et services packs
37. Cryptographie
C’ est un procédé qui consiste à encoder les
données traités
Pour protéger l’identité ou les données de
l’utilisateur contre la lecture, la modification ou
l’altération
De vérifier l’origine d’une information
2 méthodes de cryptographie:
Asymétrique
Symétrique
38. Symétrique / Asymétrique
Algorithme Description
Symétrique
Utilise une même clé pour :
Chiffrer
Déchiffrer les informations
Est Rapide et efficiente
Asymétrique
Utilise 2 clé mathématiquement liées:
Une clé publique pour le chiffrement
Une clé privée pour le déchiffrement
Plus sécurisé que le symétrique
Il est plus lent
39. Vérification de l’intégrité des données
des données grâce au hachage
User A User B
Data
Data
Valeur Hasher
Algorithme
de Hashage
Données
Valeur Hasher
Valeur Hasher
Algorithme de Hashage
Authentiques si les
2 sont identiques
L’utilisateur A envoit la
valeur hasher à l’utilisateur B
40. User A User B
Data
Hash Value
Hash
Algorithm
User A
Private
key
Data
Valeur hashé
User A
clé
public
Hash
Algorithm
Valeur hasher
Si les données
correspondent alors elles
proviennent du
propriétaire de la clé et
sont valides
Signatures Numériques
43. Fonctionnement d’ SSL
L’utilisateur navigue via HTTPS
Le navigateur crée une clé privé en relation avec celle du serveur
administrateur
Le serveur reçoit la clé et lui seul peut la décrypter grâce à sa clé
secrète
Après établissement de la communication toutes les échanges
entre le navigateur et le serveur sont sécurisés
1
2
3
4
Certificat de l’administrateur
du serveur web
Message
Serveur web
sécurisé
HTTPS
Navigater
en mode
Sécurisé
1
2
3
4
49. Quelsques outils
Le navigateur
1er premier outil pour apprécier le bon
fonctionnement de l’application.
Taper des url erronés ou inattendu
Envoyaer les données par requêtes
« POST » de formulaire ;
Test des script de validation (ex ; java
script). Des extensions de navigateurs
peuvent être très utiles pour l’analyse de
l’application comme le DOM inspector
52. Scanner de sécurité :
avantages
Accélère et automatise la procédure de test
Génère des rapports exploitables
Décèle toutes les Vulnérabilités connuee
Doit être très bien configurer
54. Quelsques outils
HTTP Request Editor
Il est parfois requis lors de l’audit d’un site web
de configurer les requêtes http lorsque le navigateur
n’offre pas ce genre de manipulations. Par exemple
Envoyer des requêtes http sans restriction au
model de sécurité du navigateur web
Tester les requêtes non faisable par un navigateur
web (manipuler http header et http referer header)
Tester les requêtes qui requiert des encryptions SSL
Les résultats de ces manipulations sont visibles sur le
rapport d’analyse en texte brut ou en Html
56. Quelsques outils
HTTP proxy
On doit pendant la phase de test de vulnérabilité d’un site web
intercepter les requêtes et les réponse http avant qu’il
n’atteigne leur cible. Ce logiciel nous permettra alors
lorsqu’il est bien configuré de le faire automatiquement.
Ainsi il faut spécifier les limitations navigateurs, circonscrire
les scripts côté client et les validations d’entrée (exemple :
java script) enregistrer les log http, créer les règles
automatique qui manipuleront certaines requêtes http.