Authentification utilisateur cassée
Un code à 6 chiffres n'est qu'un secret alors que les suppositions sont limitées.
Qu'est-ce que Authentification utilisateur cassée?
Un point de terminaison peut vérifier correctement un identifiant sans jamais défendre la vérification contre l'automatisation : pas de limite de tentatives, pas de verrouillage, pas de limitation de débit. Lorsque les informations d'identification sont un code à 6 chiffres, un attaquant parcourt tout l'espace, une requête à la fois. Vous démarrerez une connexion contenant uniquement l'e-mail d'une cible, regarderez un code erroné répondre à 200 sans rien compter, puis créerez un script pour vous diriger vers une session en direct. Le correctif suit les tentatives infructueuses côté serveur, renvoie 429 à la limite, consomme un code en cas de correspondance et maintient l'expiration courte.
Ce que vous apprendrez dans Authentification utilisateur cassée
- Reconnaître l'authentification utilisateur interrompue lorsqu'un point de terminaison valide correctement un identifiant mais n'impose aucune limite aux tentatives, de sorte qu'il s'agit d'une force brute.
- Comprendre qu'un code numérique court (un OTP ou un code de connexion) n'est secret que lorsque le nombre de suppositions est limité, et qu'un point de terminaison non limité remet à un attaquant tout l'espace de code, une requête à la fois.
- Distinguez cela du vol de jetons, de la falsification de jetons et des failles d'accès au niveau des objets ; ici, la vérification des informations d'identification est correcte et le contrôle manquant est anti-automatisation sur le point final
- Appliquez le correctif : comptez les tentatives infructueuses dans l'état côté serveur associé au compte, verrouillez-vous après un seuil et renvoyez 429, consommez les codes lors de leur utilisation et conservez les codes de courte durée.
- Auditez chaque point de terminaison de connexion, de vérification et de réinitialisation de mot de passe pour détecter une limite de tentative manquante, car une étape d'authentification non limitée suffit pour le rachat de compte.
Authentification utilisateur cassée — Étapes de la formation
-
Un code monte la garde
Kelvo est une application d'argent grand public qui connecte les personnes avec un code à 6 chiffres envoyé par courrier électronique à leur adresse, sans mot de passe. Entrez votre email, Kelvo envoie un code, vous le retapez, vous y êtes. Bob n'a pas de code. Ce qu'il a, provenant d'une liste de diffusion piratée, est l'adresse e-mail d'un client : renata.voss@gmail.com.. Il ouvre la page de connexion Kelvo pour voir exactement à quoi il est confronté.
-
Déclenchez le code
Bob démarre une connexion pour le compte qu'il cible. Il tape l'e-mail de la victime et demande à Kelvo d'envoyer le code. Le code arrive dans la boîte de réception de Renata, pas dans la sienne, mais Kelvo lui montre maintenant l'écran qui le demande. Cet écran, et la demande qui se cache derrière, sont ce qu'il étudie ensuite.
-
Regardez la demande
L’écran de saisie du code est maintenant devant Bob. Il n'a pas le vrai code de Renata, mais avant d'essayer de le déchiffrer, il veut voir comment l'écran vérifie un code et où il l'envoie. Il tape un mauvais code et le soumet, puis regarde la requête que son navigateur fait dans le panneau Réseau.
-
Le point final, bien en vue
Le navigateur de Bob a envoyé le code à l'API de Kelvo et le panneau Réseau a capturé l'intégralité de la requête. Cela lui donne la seule chose dont il a besoin pour attaquer cela sans écran : le point final exact qui vérifie les codes.
-
Le script de force brute
Avec le point final en main, Bob ne devine pas à la main. Il ouvre le court script qu'il exécutera : une boucle qui soumet tous les codes possibles au point de terminaison de vérification de Kelvo jusqu'à ce que l'un d'eux revienne accepté.
-
Comment fonctionne la boucle
L’attaque entière est une poignée de lignes. Découvrez ce que fait chaque partie et pourquoi rien sur le serveur vulnérable ne l'arrête.
-
Parcourez chaque code
Bob exécute le script sur le point de terminaison de vérification de Kelvo. Il lance la même requête encore et encore, en incrémentant le code à chaque fois, et attend qu'une soit acceptée.
-
Un code qui fonctionne
Le script s'est exécuté sans opposition et a trouvé un code accepté par le serveur.
-
Utilisez le code
Bob prend le code trouvé par son script et l'envoie une nouvelle fois manuellement au point final, pour confirmer que le compte lui appartient et voir ce qu'il détient maintenant.
-
Une session live, à partir de six chiffres
Le point de terminaison a accepté le code deviné et a restitué une véritable session.
Couverture des référentiels de sécurité
OWASP API Top 10
- API2:2023 Broken Authentication
CWE
- CWE-287 Improper Authentication
- CWE-307 Improper Restriction of Excessive Authentication Attempts
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security