Partager les limites entre les pages de connexion

HydraBeginner
Pratiquer maintenant

Introduction

Le comptoir du marché de Gearroom propose une page principale et une page mobile de connexion. Les deux ouvrent le prêt du même membre. La politique compte déjà par compte, mais les deux pages conservent des compteurs distincts. Un membre limité sur une page peut encore s’authentifier sur l’autre.

Utilisez des tentatives Hydra bornées pour démontrer cette faille, puis réunissez les deux entrées dans une limite partagée par compte. Prouvez les deux sens, préservez la connexion normale d’un autre membre et confirmez le rétablissement après expiration naturelle. Vous livrerez une politique réellement active avec un historique réel de requêtes et des dossiers intacts, pas un rapport.

Ce laboratoire s’appuie sur Limit Attempts by Account : vous devez reconnaître son argument de formulaire Hydra, son marqueur positif connu, sa politique JSON, ses diagnostics curl et ses commandes deskctl. Ces mécanismes restent identiques. Cet environnement est initialisé à neuf avec d’autres membres et dossiers ; aucun fichier, session ou processus précédent n’est repris. Workstation est le terminal préparé ; Equipment Desk est le site. Les deux interfaces appartiennent au même conteneur de formation isolé. Tous les comptes et toutes les données sont des ressources synthétiques locales.

Prévoyez environ 50 minutes, lecture et erreurs courantes comprises ; il s’agit d’une estimation de l’auteur, pas d’un temps mesuré auprès de débutants. Seul le membre de test déclaré peut recevoir des mots de passe incorrects répétés. Le membre de référence doit utiliser son mot de passe correct connu. Préservez le service, les comptes, les dossiers originaux et les valeurs de formation.

Confirmer deux points d’entrée pour un compte

Dans cette étape, établissez que les deux pages authentifient réellement le même membre et ouvrent le même prêt. Des libellés similaires ne suffisent pas à établir une identité commune.

Ouvrez Equipment Desk, puis Review brief. Le membre de test autorisé est samplemember, avec le mot de passe Sample24. Le membre de référence normal est deskteam, avec Desk24.

Sélectionnez Member sign-in, envoyez les identifiants de test puis Open your record. Vérifiez samplemember, le prêt LN-318, Jules Chen, Workshop camera kit, le retrait Friday 09:30, le retour Monday 16:00 et la note sur la pochette étiquetée pour les deux batteries. Sélectionnez Sign out.

Même membre et prêt complet de caméra à comparer aux deux entrées

Comparez les champs Member et Record, les deux horaires et la note de rangement après chaque véritable connexion. Les deux pages doivent ouvrir ce même dossier.

Sélectionnez Mobile sign-in, utilisez les mêmes identifiants et ouvrez le dossier. Vérifiez l’identité, le prêt et tous les détails, puis déconnectez-vous. Ce sont deux points d’entrée d’un même annuaire de membres, pas des comptes ou des hôtes distincts.

Sélectionnez Member sign-in, utilisez deskteam / Desk24, puis ouvrez son dossier. Il s’agit de LN-087, Ari Lane, Folding projection screen, avec la note demandant de garder l’écran sec avant rangement. Déconnectez-vous encore.

Passez à Workstation. L’interface démarre dans /home/labex/project/login-limits ; pwd montre l’emplacement :

pwd

Si vous êtes ailleurs, utilisez la même commande de changement de répertoire que précédemment :

cd /home/labex/project/login-limits

Lisez la politique préparée et celle réellement active :

cat policy.json
deskctl status

La clé key vaut déjà account. Dans entry_groups, /signin appartient à desktop tandis que /mobile/signin appartient à mobile. Un groupe indique les entrées partageant un compteur pour ce compte. Des libellés différents donnent actuellement des compteurs distincts au même membre. Conservez les trois échecs, la fenêtre de 30 secondes et le blocage de 12 secondes.

Observer la faille de l’entrée alternative

Dans cette étape, limitez l’entrée principale et démontrez une véritable connexion par l’entrée mobile pendant le même blocage.

Restez dans Workstation. Le fichier préparé contient toujours seulement cinq candidats volontairement incorrects pour le membre autorisé :

cat wrong-passwords.txt

Les véritables chemins POST apparaissent sous les deux formulaires visibles. Ils utilisent les mêmes champs username et password. L’adresse de bouclage 127.0.0.1 et le port 8080 atteignent ce service local de formation. L’option -l de Hydra sélectionne maintenant samplemember ; -P, -s, -t 1, -I, l’argument POST entre apostrophes et S=Signed in as ont le même sens que dans le premier laboratoire. Tous les candidats sont incorrects ; une exécution complète doit donc indiquer 0 valid password found. Cette sortie ne prouve pas à elle seule la protection de l’entrée alternative.

Laissez expirer naturellement les tentatives précédentes :

deskctl wait

Exécutez ensemble les quatre commandes suivantes sans vous arrêter pour lire entre elles. Les requêtes curl utilisent des mots de passe corrects connus ; -o enregistre chaque corps de réponse et -w affiche son statut HTTP :

hydra -I -l samplemember -P wrong-passwords.txt -s 8080 -t 1 127.0.0.1 http-post-form '/signin:username=^USER^&password=^PASS^:S=Signed in as'
curl -s -o main-probe.html -w 'Main HTTP %{http_code}\n' --data 'username=samplemember&password=Sample24' http://127.0.0.1:8080/signin
curl -s -o mobile-probe.html -w 'Mobile HTTP %{http_code}\n' --data 'username=samplemember&password=Sample24' http://127.0.0.1:8080/mobile/signin
curl -s -o reference-probe.html -w 'Reference HTTP %{http_code}\n' --data 'username=deskteam&password=Desk24' http://127.0.0.1:8080/mobile/signin

Attendez-vous à Main HTTP 429, Mobile HTTP 200 et Reference HTTP 200. Le même membre est limité sur l’entrée principale mais peut s’authentifier sur mobile. Confirmez l’identité mobile au lieu de vous fier seulement au 200 :

grep -o 'Signed in as samplemember' mobile-probe.html

Lisez les véritables décisions du serveur :

deskctl events

Cherchez un seuil de samplemember sur /signin, une connexion principale limitée et une connexion authentifiée sur /mobile/signin sous la même révision. Un événement limité d’une seule entrée ne démontre pas une limite entre entrées. Le membre de référence reste un compte distinct ; son succès ne répare pas cette faille.

L’historique reste disponible après le blocage. Si vous avez manqué la fenêtre d’observation, laissez terminer deskctl wait puis répétez le même bloc borné. Pour une erreur de connexion ou de syntaxe Hydra, corrigez d’abord l’argument complet, l’adresse, le port et le chemin déclaré. HTTP 400 indique des noms de champs ou une structure incorrects ; 404 indique un mauvais chemin. Une faute ordinaire ne nécessite pas de réinitialiser la VM.

Réunir les deux pages dans un groupe par compte

Dans cette étape, faites utiliser aux deux chemins POST un seul compteur pour le même membre. Les comptes doivent rester séparés les uns des autres.

Restez dans Workstation. Remplacez le fichier de politique par l’objet complet ci-dessous. Le here-document entre apostrophes préserve le JSON littéralement ; son marqueur final EOF doit être seul sur sa ligne, sans espaces au début. Comme précédemment, > écrase ce fichier local :

cat > policy.json <<'EOF'
{
  "key": "account",
  "entry_groups": {
    "/signin": "members",
    "/mobile/signin": "members"
  },
  "failed_attempts": 3,
  "window_seconds": 30,
  "cooldown_seconds": 12
}
EOF

Les deux routes ont désormais le même libellé de groupe. Ce libellé est un nom court non vide, pas un mot-clé spécial : un autre nom commun équivalent est autorisé. Il peut comporter au plus 48 caractères. Conservez la clé par compte, les deux clés de route réelles et les valeurs convenues. Supprimer une route, désactiver un formulaire ou revenir à un compteur global ne répondrait pas à la tâche.

Appliquez explicitement le fichier :

deskctl apply policy.json --wait

Une politique modifiée attend l’expiration naturelle de l’état des tentatives existantes. Aucun compteur actif, historique ou dossier de membre n’est effacé et le processus n’est pas redémarré. Réappliquer la même politique reste sans effet. Une virgule JSON manquante ou un champ incorrect laisse l’ancienne politique active ; corrigez le fichier avant de réessayer.

deskctl status

Confirmez la clé active account et les libellés communs sous une nouvelle révision. Un fichier local correct ne suffit pas tant que le service ne l’utilise pas. Il vous faut maintenant des preuves de cette révision, pas les anciens événements des groupes séparés.

Tester les deux sens et préserver l’accès des membres

Dans cette étape, prouvez que les échecs de l’une des pages limitent l’autre, pendant que le membre de référence peut travailler et que le membre de test se rétablit naturellement.

Restez dans Workstation. Testez d’abord de l’entrée principale vers la mobile :

deskctl wait

Exécutez ce bloc complet ensemble :

hydra -I -l samplemember -P wrong-passwords.txt -s 8080 -t 1 127.0.0.1 http-post-form '/signin:username=^USER^&password=^PASS^:S=Signed in as'
curl -s -o mobile-probe.html -w 'Mobile HTTP %{http_code}\n' --data 'username=samplemember&password=Sample24' http://127.0.0.1:8080/mobile/signin
curl -s -o reference-probe.html -w 'Reference HTTP %{http_code}\n' --data 'username=deskteam&password=Desk24' http://127.0.0.1:8080/mobile/signin

Attendez-vous à zéro résultat Hydra, Mobile HTTP 429 et Reference HTTP 200. Les deux corps enregistrés doivent correspondre :

grep -o 'Too many attempts' mobile-probe.html
grep -o 'Signed in as deskteam' reference-probe.html
deskctl events

La révision actuelle doit montrer le seuil principal, le refus mobile et l’authentification normale de référence. Attendez le rétablissement naturel :

deskctl wait

Passez à Equipment Desk, sélectionnez Mobile sign-in, utilisez samplemember / Sample24 puis Open your record. Vérifiez le prêt de caméra LN-318 intact et la note de la pochette des batteries, puis Sign out. Cette nouvelle connexion mobile confirme le rétablissement depuis la limite de l’entrée principale.

Revenez à Workstation. Inversez maintenant le sens :

deskctl wait

Exécutez ce bloc complet ensemble :

hydra -I -l samplemember -P wrong-passwords.txt -s 8080 -t 1 127.0.0.1 http-post-form '/mobile/signin:username=^USER^&password=^PASS^:S=Signed in as'
curl -s -o main-probe.html -w 'Main HTTP %{http_code}\n' --data 'username=samplemember&password=Sample24' http://127.0.0.1:8080/signin
curl -s -o reference-probe.html -w 'Reference HTTP %{http_code}\n' --data 'username=deskteam&password=Desk24' http://127.0.0.1:8080/signin

Attendez-vous à zéro résultat, Main HTTP 429 et Reference HTTP 200 :

grep -o 'Too many attempts' main-probe.html
grep -o 'Signed in as deskteam' reference-probe.html
deskctl events

Cette fois, le seuil mobile doit être suivi du refus principal. C’est un autre sens, pas une copie renommée du premier résultat. Si une commande de diagnostic est arrivée trop tard, laissez l’état se stabiliser naturellement puis répétez ce sens borné ; n’élargissez pas les candidats et ne réinitialisez pas les compteurs.

deskctl wait

Passez à Equipment Desk, sélectionnez Member sign-in, utilisez samplemember / Sample24 et ouvrez le prêt original LN-318. Cette connexion principale démontre le rétablissement depuis la limite mobile. Déconnectez-vous, puis utilisez Member sign-in avec deskteam / Desk24 pour rouvrir LN-087, en vérifiant l’écran et la note sur son rangement à sec. Déconnectez-vous encore et ouvrez Visitor guide.

Le navigateur crée sa propre session après chaque véritable connexion ; les réponses de diagnostic curl ne le connectent pas. Si un dossier retourne 403, corrigez la véritable connexion du navigateur puis utilisez Open your record. Corrigez les erreurs ordinaires de mot de passe ou de chemin sans redémarrer le scénario.

Les deux points d’entrée suivent maintenant une même limite pour chaque compte, avec des preuves de la politique actuelle dans les deux sens, un accès de référence préservé, un rétablissement naturel et des dossiers métier intacts. L’évaluation lit ces faits existants et les pages publiques ; elle n’effectue pas les tests ou rétablissements manquants. Cela démontre le comportement local à processus unique déclaré, pas une limite distribuée de production ni une défense contre toutes les formes de connexion automatisée.

Résumé

Vous avez confirmé que deux véritables pages de connexion partagent une identité, reproduit une faille due aux groupes d’entrée distincts et appliqué un compteur commun par compte. Des tests Hydra bornés ont ensuite démontré les deux sens, l’accès normal de référence et le rétablissement naturel vers des dossiers intacts. Le refus d’une seule page ou l’historique d’une ancienne politique ne peuvent pas établir le résultat complet.