Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Repérer une connexion ou une session fragile

Après cette leçon: Je peux dire ce qui rend une connexion ou une session fragile.

Leçon de 55 min3 commandesLab WebGoat : leçons guidées de sécurité web avec WebWolf dans sa copie

Le mot de passe était azerty

Dans une petite entreprise, l'intranet laisse chacun choisir son mot de passe. La moitié des employés ont pris 123456 ou azerty.

Un soir, quelqu'un essaie une courte liste de mots de passe courants sur chaque nom de l'annuaire. En quelques minutes, il entre comme responsable comptable. Le site ne limitait pas les essais.

La règle unique

Attention

Ce laboratoire est un ensemble de leçons volontairement fragiles. Attaquez votre copie privée, et rien d'autre : elle n'a aucune sortie vers Internet. Attaquer un système qui n'est pas le vôtre, ou sans permission de test, est un délit dans presque tous les pays.

À la fin de cette leçon

Remarque

Je peux dire ce qui rend une connexion ou une session fragile.

Mots-clés

MotCe que ça veut direExemple
Sessionle temps pendant lequel un site se souvient que vous êtes connecté
Cookieune petite valeur que le navigateur garde et renvoie au site
Jetonune valeur qui prouve que vous vous êtes connectéune longue chaîne
Hachagetransformer un mot de passe en une empreinte de longueur fixe, qu'on ne peut pas inverser
Force bruteessayer beaucoup de possibilités les unes après les autres
Expirationle moment où une session ou un jeton cesse de fonctionner

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Les mots de passe faibles tombent

On choisit des mots de passe courts et courants. Un attaquant n'a pas besoin d'astuce : il lui faut une liste des plus courants et un site qui accepte des essais sans fin. C'est la force brute.

Trois défenses vont ensemble. Exiger de la longueur plutôt que des symboles bizarres. Refuser les mots de passe d'une liste courante. Ralentir ou bloquer les échecs répétés.

Exemple travaillé : juger quatre mots de passe

Mot de passeVerdictPourquoi
123456À refuserIl est sur toutes les listes courantes
Printemps2025!FaibleUn mot, une année et un symbole : un schéma que les devineurs connaissent
camion-pain-sept-chapeauxBonLong, et sans schéma connu
leaÀ refuserTrop court, et identique au nom d'utilisateur

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Garder un hachage, pas le mot de passe

Un site ne doit jamais garder les mots de passe tels qu'ils sont tapés. Si ses données fuient, tous les comptes fuient.

Il garde un hachage du mot de passe, avec un sel aléatoire ajouté avant. Deux personnes au même mot de passe ont donc deux hachages différents. Pour vérifier une connexion, il hache l'essai et compare.

Un cookie de session est une clé

Une fois connecté, le site donne à votre navigateur un cookie de session, et il vous reconnaît grâce à lui à chaque requête. Celui qui possède cette valeur, c'est vous.

Elle doit donc être aléatoire et longue, envoyée seulement en HTTPS, cachée au script par HttpOnly, et elle doit expirer. Le site en émet aussi une nouvelle à chaque connexion.

Regardez les sessions du laboratoire

Votre laboratoire fait tourner WebGoat. Démarrez-le et attendez une minute. Ces trois commandes regardent la porte d'entrée sans vous connecter.

La deuxième demande une page qui exige une connexion. La troisième montre le cookie posé par cette réponse.

La page de connexion répond-elle ?

Commande
curl -s -o /dev/null -w "%{http_code} %{redirect_url}\n" http://web/WebGoat/login

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une page qui exige une connexion

Commande
curl -s -o /dev/null -w "%{http_code} %{redirect_url}\n" http://web/WebGoat/welcome.mvc

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Le cookie posé par cette réponse

Commande
curl -s -I http://web/WebGoat/welcome.mvc | grep -i "^set-cookie"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Ce que disent les trois réponses

La première affiche 200 et aucune adresse. La deuxième affiche 302 et l'adresse de connexion : une page protégée renvoie l'inconnu à la porte. La troisième affiche un cookie JSESSIONID avec Path=/WebGoat; HttpOnly.

La valeur est aléatoire et change à chaque fois. HttpOnly est présent. Secure ne l'est pas, car ce laboratoire utilise du HTTP simple.

Une erreur fréquente

Attention

Beaucoup pensent qu'un jeton qui ressemble à des lettres au hasard est caché. Encoder n'est pas chiffrer. Un jeton qui encode seulement le nom d'utilisateur peut être lu et modifié par tous. Utilisez un identifiant de session aléatoire que le serveur retrouve, ou un jeton signé que le serveur vérifie. Vérifiez aussi l'expiration.

Un jeton doit être signé et expirer

Certains sites donnent un jeton signé qui contient le nom, un rôle et une expiration. Le serveur vérifie la signature avant de croire quoi que ce soit dedans.

Un jeton sans signature, un jeton que le serveur ne vérifie pas, ou un jeton qui n'expire jamais est faible. Refusez les trois.

Exemple travaillé : trois jetons

Le jeton ditSigné ?Verdict
lea, rôle client, expire demainOuiÀ accepter
lea, rôle admin, expire demainNonÀ refuser : personne ne garantit le rôle admin
lea, rôle client, expiré depuis une semaineOuiÀ refuser : il est expiré

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

À propos de ce labo et de sa source: Lab WebGoat : leçons guidées de sécurité web avec WebWolf dans sa copie

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.