# Race Condition

## [Race condition](https://blog.s1rn3tz.ovh/pentest-web/race-conditions) dans une fonctionnalité de génération de magic links menant à la prise de contrôle de comptes utilisateurs

### Description

L'application était une application Web avec 3 niveaux de rôles (administrateur, un utilisateur spécifique utilisé pour un usage spécifique et des utilisateurs normaux). L'authentification pour les utilisateurs normaux était sans mot de passe. Pour s'authentifier, un lien magique était envoyé par e-mail et générait un jeton spécifique et unique pour une courte période de temps. Cette fonction était vulnérable à une vulnérabilité de condition de concurrence conduisant à générer exactement le même jeton pour différents utilisateurs lors de l'envoi de la requête en simultané.

### Exploitation

* J'ai capturé la requête de demande de magik link via burp\*
* J'ai fait un click droit sur la requête puis "copy as curl command"
* Sur un terminal j'ai collé la requête pour mon utilisateur puis ajouté un "&" afin de lancer la commande en arrière plan puis collé une nouvelle fois la requête en changeant le nom d'utilisateur pour la seconde requête.
* J'ai lancé les commandes puis me suis rendu sur mes boîtes de reception afin de vérifier les token généré.
* Les token étaient identiques pour les deux utilisateurs.

### Risques

Générer exactement le même jeton de connexion pour de nombreux utilisateurs peut entraîner une prise de contrôle de compte en masse.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bugbounty.s1rn3tz.ovh/race-condition.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
