Travail 3 : sécuriser une application
Nous te fournissons une application C# qui :
- implante le hachage de mot de passe et l'encryption
- permet de rentrer ses revenus de l’année
- permet de calculer des impôts à payer pour chaque année
Toutefois, nous allons voir que c'est fait plus ou moins bien. Ton but va être de corriger:
- la technique d'encryption
- le hachage qui a été choisi
Finalement, nous allons voir que l'application est exposée aux injections SQL. Ici aussi tu devras corriger.
Format de remise:
Tu vois avoir un lien GitHub ClassRoom pour remettre ton travail. Tu devras remettre:
- un fichier rapport.md où tu expliqueras
- les différentes attaques
- les solutions que tu as implantées avec la preuve que l'attaque ne fonctionne plus
- une version modifiée et corrigée de l'application (projet avec le code source) qui corrige les failles identifiées
- IMPORTANT : si tu ne remets pas le projet corrigé, tu auras 0 sur les correctifs.
- IMPORTANT : si l'application remise n'est plus fonctionnelle, tu auras 0 sur les correctifs.
Vérification post correctifs
Tu dois t'assurer que ton application fonctionne toujours. Tu peux par exemple vérifier la séquence suivante:
- te créer un compte
- t'ajouter une année de revenu
- arrêter l'application
- redémarrer l'application
- te connecter avec ton compte
- regarder tes revenus
- vérifier ton profil, tous les champs
La fuite de la base de données
Normalement, l'application utilise un serveur de base de données sécurisé pour stocker les informations.
Cependant, l'application se rabat sur une BD locale si le serveur n'est pas disponible.
Cela va te permettre d'accéder à la base de données et d'essayer d'accéder au maximum d'informations possible.
En utilisant des techniques vues en cours, il faut que
- tu détermines où le .exe stocke la BD locale
- tu explores le contenu de la BD locale
Barème
1. Hachage
Retrouve les mots de passe de plusieurs utilisateurs:
| Point de départ | Permis | Interdit |
|---|---|---|
| BD fuitée après avoir charger les "premiers ministres". | Accès la BD fuitée (fichier) Outils craquage | Code source consoleApp.exe Accès BD après exécution |
Tu dois ensuite implanter le hachage avec bcrypt et montrer que l'attaque ne fonctionne plus. Vérifie que l'application fonctionne.
2 points pour l'attaque sur les mots de passe dans le rapport avec toutes les étapes et captures d'écran
4 points pour chaque correctif implanté via
- une modification au code source (commit)
- une démonstration que l'attaque ne fonctionne plus dans le rapport avec toutes les étapes et captures d'écran
2. Encryption
Actuellement le NAS est «sécurisé» par une méthode d'encryption. Tu dois chercher une méthode pour décrypter les NAS des comptes des premiers ministres.
| Point de départ | Permis | Interdit |
|---|---|---|
| BD fuitée après avoir charger les "premiers ministres". | Accès la BD fuitée (fichier) Outils craquage | Code source consoleApp.exe Accès BD après exécution |
Tu devras implanter AES dans l'application et montrer que ton attaque ne fonctionne plus. Vérifie que l'application fonctionne.
2 points pour l'attaque sur l'encryption dans le rapport avec toutes les étapes et captures d'écran
4 points pour le correctif de l'encryption
- une modification au code source (commit)
- une démonstration que l'attaque ne fonctionne plus dans le rapport avec toutes les étapes et captures d'écran
3. Injection SQL
L'application a au moins un point de vulnérabilité à une injection SQL.
| Point de départ | Permis | Interdit |
|---|---|---|
| Accès à consoleApp.exe Premiers ministres chargés | consoleApp.exe | Code source Accès BD |
Tu devras éliminer les points d'injection SQL dans l'application.
1 point Démonstration d'une attaque par injection SQL. Si tu démontres une attaque qui exécute n'importe quelle commande SQL, tu gagnes un point avec les commandes et captures d'écran.
1 point Si tu arrives à changer le mot de passe de Justin Trudeau, tu gagnes un point en plus. Démontre l'attaque en entrant dans le compte de Justin Trudeau via l'application. Commandes et captures d'écran.
4 points pour le correctif de toutes les injections SQL possibles
- une modification au code source (commit)
- une démonstration que l'attaque ne fonctionne plus dans le rapport avec toutes les étapes et captures d'écran
Qualité du français (2 points)
Le français est correct (utiliser le correcteur de Word avec Antidote au minimum)
Annexe : Modèle de rapport
# Rapport TP3 de Cybersec NOM PRENOM
## Attaque 1: BD fuitée et mot de passe
1. Etape 1 + capture d'écran
2. Etape 2 + capture d'écran
3. etc.
### Correctif implanté
Description du correctif.
Preuve que l'attaque ne fonctionne plus avec étapes + capture d'écran
## Attaque 2: BD fuitée et encryption
1. Etape 1 + capture d'écran
2. Etape 2 + capture d'écran
3. etc.
### Correctif implanté
Court descriptif du correctif et lien vers le(s) commit(s).
Preuve que l'attaque ne fonctionne plus avec étapes + capture d'écran
## Attaque 3 Injection SQL
1. Etape 1 + capture d'écran
2. Etape 2 + capture d'écran
3. etc.
### Correctif implanté
Description du correctif.
Preuve que l'attaque ne fonctionne plus avec étapes + capture d'écran