Aller au contenu

TP Violation de Gestion d'authentification et de session đŸ”âš“ïžŽ

DĂ©finition (OWASP Top 10 – A07 :2021)

A07:2021 – Identification and Authentication Failures dĂ©signe l’ensemble des failles liĂ©es Ă  l’identification et Ă  la gestion de l’authentification, permettant Ă  un attaquant de contourner ou de compromettre les mĂ©canismes de connexion d’une application.

🎯 Objectifs pĂ©dagogiques

  • Identifier les vulnĂ©rabilitĂ©s liĂ©es Ă  l’authentification et Ă  la gestion de session.
  • RĂ©aliser une attaque par force brute avec Burp Suite Intruder.
  • Mettre en Ă©vidence une injection SQL sur formulaire d’authentification.
  • Évaluer la robustesse des mĂ©canismes de session.
  • Proposer des contre-mesures alignĂ©es sur les bonnes pratiques OWASP/ANSSI.

1. Rappels thĂ©oriques đŸ§ âš“ïžŽ

1.1 Attaques liĂ©es Ă  l’authentification đŸ”“âš“ïžŽ

Risques :

  • force brute automatisĂ©e
  • comptes par dĂ©faut
  • mots de passe faibles
  • stockage non sĂ©curisĂ©

Protections :

  • limitation d’essais
  • dĂ©lais progressifs
  • journalisation
  • non-divulgation des erreurs d’authentification
  • Ă©limination des comptes par dĂ©faut

1.2 Authentification brisĂ©e (OWASP A07) đŸ›‘âš“ïžŽ

Un site est vulnérable si :

  • il autorise la force brute
  • il stocke les mots de passe en clair
  • il expose les ID de session
  • il n’invalide pas les jetons
  • il n’utilise pas (ou mal) le MFA

Conséquences :

  • 👉 prise de contrĂŽle d’un compte
  • 👉 usurpation d’identitĂ©
  • 👉 exfiltration de donnĂ©es sensibles

2. Comportement du formulaire d’authentification đŸ”âš“ïžŽ

  1. Ouvrir : http://localhost/breizhsecu/admin/
  2. Réaliser volontairement 5 tentatives erronées.

❓ Q1. Y a-t-il une limitation du nombre d’essais ?

Solution Question n°1

Aucune limitation n’est appliquĂ©e : l’utilisateur peut essayer un nombre illimitĂ© de mots de passe. C’est une faiblesse majeure facilitant la force brute.

❓ Q2. Le message d’erreur prĂ©cise-t-il si le login ou le mot de passe est incorrect ?

Solution Question n°2

Oui, le message distingue parfois login/mot de passe incorrect. Cela informe l’attaquant sur la validitĂ© du login et viole les bonnes pratiques OWASP.

3. Interception des requĂȘtes avec Burp Suite đŸ›°ïžâš“ïžŽ

3.1. Installation BurpSuite⚓

đŸ”œ Installer depuis la page Burp Suite

Burp est conçu pour ĂȘtre utilisĂ© avec votre navigateur. Il fonctionne comme un serveur proxy HTTP et tout le trafic HTTP/S de votre navigateur passe par Burp. Pour vous assurer que l'Ă©couteur proxy de Burp fonctionne, accĂ©dez Ă  l'onglet Proxy et assurez-vous que Intercept est activĂ©, comme indiquĂ© ci-dessous.

HowTo

b1 Maintenant, vous devez configurer votre navigateur pour utiliser l'Ă©couteur Burp Proxy comme serveur proxy HTTP. Pour ce faire, vous devez modifier les paramĂštres de proxy de votre navigateur pour utiliser l'adresse de l'hĂŽte proxy (127.0.0.1) et le port 8080 pour les protocoles HTTP et HTTPS. Dans Firefox, allez dans PrĂ©fĂ©rences. Cliquez sur AvancĂ©, sĂ©lectionnez l'onglet RĂ©seau et cliquez sur ParamĂštres, comme indiquĂ© ci-dessous. SĂ©lectionnez le bouton radio Configuration manuelle du proxy. Entrez 127.0.0.1 dans le champ Proxy HTTP et entrez 8080 dans le champ Port. Assurez-vous que la case Utiliser ce serveur proxy pour tous les protocoles est cochĂ©e. Supprimez tout ce qui se trouve dans le champ Aucun proxy pour le champ. Enregistrez les paramĂštres. Maintenant, si tout est configurĂ© correctement, tout votre trafic HTTP/S devrait passer par Burp. Chaque fois que vous visitez un site Web, l'onglet Proxy de Burp changera sa couleur en orange et Burp conservera la demande jusqu'Ă  ce que vous dĂ©cidiez quoi en faire. À ce stade, vous pouvez dĂ©sactiver l'interception et ne l'activer que lorsque vous en avez besoin.

  1. Configurer Firefox → Proxy manuel → 127.0.0.1:8080
  2. Activer Intercept On.
  3. Intercepter une tentative de connexion.

❓ Q3. Quels champs sont transmis dans la requĂȘte ?

Solution Question n°3

Le POST contient typiquement :

  • username=...
  • password=...
  • parfois un token CSRF (selon version)

❓ Q4. Le mot de passe circule-t-il en clair dans la requĂȘte ?

Solution Question n°4

Oui, le mot de passe apparaßt en clair dans le champ POST (non chiffré si HTTP).

3.2. Attaque par force brute (Burp Intruder) đŸš€âš“ïžŽ

  1. Envoyer la requĂȘte vers Intruder.
  2. Définir les positions (username, password).
  3. Type d’attaque : Cluster Bomb.
  4. Charger des listes de logins et mots de passe.
  5. Lancer l’attaque.

❓ Q5. Quel couple login/mot de passe permet l’accùs ?

Solution Question n°5

Selon la configuration fournie dans le TP, le couple trouvé est souvent : login : admin password : admin ou encore un mot de passe trivial contenu dans rockyou.txt.

❓ Q6. Pourquoi cette attaque est-elle possible ?

Solution Question n°6
  • absence de limitation d’essais
  • absence de dĂ©lai progressif
  • mots de passe faibles ou par dĂ©faut
  • absence de filtrage d’IP
  • messages d’erreur explicites

4. Analyse de la gestion de session đŸ•’âš“ïžŽ

Si vous Ă©tiez un pirate qui tentait d'accĂ©der Ă  la partie back-end de l'application, c’est-Ă -dire la partie ou l'administrateur du site va se connecter, quelles url tenteriez-vous rapidement pour retrouver la page permettant Ă  un administrateur de s'authentifier ?

  • http://localhost/breizhsecu/backend
  • http://localhost/breizhsecu/administrateur
  • http://localhost/breizhsecu/manager
  • http://localhost/breizhsecu/admin
  • http://localhost/breizhsecu/secure

Tentez chacune de ces URL, laquelle vous mĂšne vers quelque chose d'exploitable ? Notez bien cette URL.
Connectez-vous ensuite Ă  un compte utilisateur, puis retournez sur cette url. Que se passe-t-il ? Potentiellement rien, mais si vous appliquez la mĂȘme logique de programmation pour la partie dĂ©diĂ©e aux utilisateurs que celle dĂ©diĂ©e aux administrateurs, quelle url serait-il judicieux de tester ?

Actions :

  • se connecter
  • rĂ©cupĂ©rer le cookie de session
  • vĂ©rifier prĂ©sence d’un ID dans l’URL
  • tester la dĂ©connexion

❓ Q9. Le cookie de session contient-il un identifiant simple ?

Solution Question n°9

Sur de nombreuses versions du TP, l’ID de session est simple (ex : valeur sĂ©quentielle). Cela facilite l’usurpation de session.

❓ Q10. L’ID de session apparaüt-il dans l’URL ?

Solution Question n°10

Dans certains cas oui : ?PHPSESSID=... C’est une mauvaise pratique sĂ©vĂšrement interdite par l’OWASP.

❓ Q11. Que se passe-t-il en cas de fermeture d’onglet / retour / dĂ©connexion ?

Solution Question n°11
  • fermeture d’onglet : session encore active
  • retour sur l’accueil : utilisateur toujours connectĂ©
  • dĂ©connexion : parfois le cookie n’est pas invalidĂ© → session rĂ©utilisable

5. đŸ›Ąïž Recommandations de sĂ©curitĂ©âš“ïžŽ

  • mise en place MFA
  • limitation d’essais
  • dĂ©lais progressifs
  • hashing robuste (bcrypt/argon2)
  • suppression des comptes par dĂ©faut
  • invalidation stricte des sessions
  • non-exposition des IDs de session
  • utilisation de requĂȘtes prĂ©parĂ©es (SQL)
  • journalisation et alertes sur Ă©checs rĂ©pĂ©tĂ©s