![Page 1: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/1.jpg)
© Groupe CGI inc. CONFIDENTIEL
Sécuriser avec de bonnes pratiques de test Journée sur la sécurité applicative – Université Laval
François Lajeunesse-Robert 2017-11-29
![Page 2: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/2.jpg)
Plan
• Introduction • Motivations et objectifs des tests • Établir la couverture des tests
• Prévention des vulnérabilités par le « fuzzing » • Préparation • Failles d’injection • Problématiques d’autorisation • Problématiques de logique
• Conclusion
2
![Page 3: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/3.jpg)
Introduction
![Page 4: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/4.jpg)
Motivations
4
Trouver des problématiques le plus rapidement possible !
Tests vs analyse statique
Tests faits par un développeur vs tests faits par un pentesteur
![Page 5: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/5.jpg)
5
Objectifs
Tests ≠
Tests =
Trouver toutes les problématiques?
Prouver l’absence de problématiques Identifier la présence de problématiques Non
![Page 6: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/6.jpg)
Couverture de tests – Quelques chiffres
• 705 Common Weakness Enumeration (CWE) (https://cwe.mitre.org/)
• 100 cas de test de l’OWASP Testing Guide version 4 (https://www.owasp.org/index.php/OWASP_Testing_Project)
• En particulier pour le XSS : • 142+ variantes d’injection XSS (https://html5sec.org/)
• Et… Encodage, techniques d’évasion, particularités des plateformes de développement,
XSS Auditor, etc.
6
![Page 7: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/7.jpg)
Couverture de tests – OWASP Testing Guide Categories
• Information gathering • Configuration and Deployement Management Testing • Identity Management Testing • Authentifcation Testing • Authorization Testing • Session Managment Testing • Input Validation Testing • Testing for Error Handling • Testing for weak Cryptography • Business Logic Testing • Client Side Testing
7
![Page 8: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/8.jpg)
Couverture de tests – Une approche
Tester pour trouver les causes courantes de vulnérabilités plutôt que les vulnérabilités elles-mêmes.
8
![Page 9: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/9.jpg)
9
Exemples de causes – Problématiques d’injection
Manque de validation des données (type et format)
Soumettre des données invalides
Cause Couverture des tests
![Page 10: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/10.jpg)
10
Exemples de causes – Problématiques d’autorisation
Manque de validation des autorisations
Tenter d’accéder à tout
Cause Couverture des tests
![Page 11: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/11.jpg)
11
Exemples de causes – Problématiques de logique
Suppositions sur le fonctionnement de l’application
Utiliser l’application de façon erratique (n’importe comment)
Cause Couverture des tests
![Page 12: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/12.jpg)
Couverture de tests – Fuzzing
« Fuzzing is the art of automatic bug finding, and it's role is to find software implementation faults, and identify them if possible. »
Tiré de l’article OWASP sur le fuzzing (https://www.owasp.org/index.php/Fuzzing)
12
![Page 13: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/13.jpg)
Prévention des vulnérabilités par le « fuzzing »
![Page 14: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/14.jpg)
Préparation au fuzzing
1. Sélectionner un outil (Selenium, CasperJS, Burp, OWASP Zap, etc.).
2. Pouvoir surveiller le comportement de l’application (Erreurs, journalisation, procmon, jvm monitoring, etc.).
3. Sélectionner les tests à effectuer en fonction du contexte.
14
![Page 15: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/15.jpg)
Mise en situation
• Outil :
• Analyse de la réponse HTTP pour : • Mots clés dénotant une erreur (Unexpected, Stacktrace, Error, Exception, etc.) • Réflexion (contenu de la requête retourné intégralement) • Code de statut « intéressants » • Taille de la réponse
15
![Page 16: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/16.jpg)
Prévenir les problématiques d’injection : Tester le format
16
![Page 17: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/17.jpg)
Prévenir les problématiques d’injection
17
• Approche 1 – Dictionnaires de valeurs
Source images: OWASP Zap, https://github.com/fuzzdb-project/fuzzdb
![Page 18: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/18.jpg)
Prévenir les problématiques d’injection
• Approche 2 – Génération d’un jeu de valeurs personnalisé
18
Source images: OWASP Zap
![Page 19: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/19.jpg)
Prévenir les problématiques d’injection
Démo
19
![Page 20: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/20.jpg)
Prévenir les problématiques d’injection – Démo
• Recherche de mots clés dans la réponse HTTP : • ZAP Script Fuzzer HTTP Processeur
20
Script : https://github.com/FrancoisLR/ZAPScripts/blob/master/httpfuzzerprocessor/ErrorMessage.js
![Page 21: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/21.jpg)
21
Prévenir les problématiques d’injection – Démo
• WebGoat SQLi
• Faire une requête
![Page 22: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/22.jpg)
Prévenir les problématiques d’injection – Démo
• Lancer le « fuzzer »
22
![Page 23: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/23.jpg)
Prévenir les problématiques d’injection – Démo
• Sélectionner l’endroit où « fuzzer »
23
![Page 24: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/24.jpg)
24
Prévenir les problématiques d’injection – Démo
• Sélectionner quoi « fuzzer »
![Page 25: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/25.jpg)
Prévenir les problématiques d’injection
• Sélectionner le bon processeur
25
![Page 26: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/26.jpg)
Prévenir les problématiques d’injection – Démo
• Sélectionner le ou les bons « processors »
26
![Page 27: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/27.jpg)
Prévenir les problématiques d’injection – Démo
• Rouler et analyser le résultat du « fuzzer »
27
![Page 28: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/28.jpg)
28
Prévenir les problématiques d’injection Attention
[!-ÿ][!-ÿ] = 49 284 possibilités
![Page 29: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/29.jpg)
Prévenir les problématiques d’injection Être plus efficace
• Modifier quelque peu des valeurs valides
29
Source image: OWASP Zap
![Page 30: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/30.jpg)
Prévenir les problématiques d’injection Être plus efficace (suite)
• En fonction des validations côté client
30
Sources images: WebGoat, https://www.w3schools.com/tags/att_input_pattern.asp
![Page 31: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/31.jpg)
Prévenir les problématiques d’autorisation: Énumération des ressources
31
![Page 32: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/32.jpg)
Prévenir les problématiques d’autorisation
• Énumérer les ressources (statiques et endpoints)
32
![Page 33: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/33.jpg)
Prévenir les problématiques d’autorisation Comparer les sessions – Les codes de statuts
33
![Page 34: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/34.jpg)
Prévenir les problématiques d’autorisation Comparer les sessions – Les tailles des réponses
34
Source image: OWASP Zap
![Page 35: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/35.jpg)
Prévenir les problématiques d’autorisation: Énumération des identifiants
35
![Page 36: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/36.jpg)
Prévenir les problématiques d’autorisation
36
Source images: OWASP Zap
![Page 37: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/37.jpg)
37
Prévenir les problématiques d’autorisation Optimiser l’énumération
Identifiants séquentiels
Identifiants aléatoires
Max integer (JAVA & .NET) : 2 147 483 647 GUID : 2^122 bits possibilités !!!!
![Page 38: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/38.jpg)
Prévenir les problématiques de logique
Ajout / retrait de paramètres
38
![Page 39: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/39.jpg)
Prévenir les problématiques de logique
Démo
39
![Page 40: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/40.jpg)
40
Prévenir les problématiques de logique – Démo
• WebGoat Improper Error Handling • Faire une requête
![Page 41: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/41.jpg)
Prévenir les problématiques de logique – Démo
• Activer le script testant toutes les possibilités
41
Script : https://github.com/FrancoisLR/ZAPScripts/blob/master/httpsender/ParamsPowerSet.js
![Page 42: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/42.jpg)
42
Prévenir les problématiques de logique – Démo
• Lancer la requête manuellement
![Page 43: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/43.jpg)
44
Prévenir les problématiques de logique
2^x possibilités
où x est le nombre de paramètres
![Page 44: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/44.jpg)
Prévenir les problématiques de logique Éviter l’explosion combinatoire
• Tester uniquement sur les cas pertinents
45
![Page 45: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/45.jpg)
Conclusion
![Page 46: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/46.jpg)
Sécuriser avec de bonnes pratiques de test
• Inscrire les tests en cours de développement comme une étape supplémentaire de validation;
• Tester pour trouver les causes courantes de vulnérabilités;
• Tirer profit du fait d’exécuter les tests tôt dans le cycle : • Identifier et corriger les comportements anormaux; • Rapidité d’exécution des tests; • Limiter au maximum les cas de tests en se concentrant sur les cas limites.
47
![Page 47: Journée sur la sécurité applicative – Université Laval · Sélectionner un outil ( Selenium, CasperJS, Burp, OWASP Zap, etc.). 2. Pouvoir surveiller le comportement de l’application](https://reader034.vdocuments.site/reader034/viewer/2022050603/5faa56412f21392f6d1333bc/html5/thumbnails/47.jpg)
Questions?