43 lines
No EOL
1.5 KiB
Markdown
43 lines
No EOL
1.5 KiB
Markdown
# brute-login
|
|
|
|
Teste la résistance de l'authentification preprod par énumération de
|
|
mots de passe sur un utilisateur connu.
|
|
|
|
## Principe
|
|
|
|
Pour chaque mot de passe d'une wordlist, émet un `POST` sur
|
|
`LOGIN_PATH` et compare le code HTTP renvoyé à `LOGIN_SUCCESS_CODE`.
|
|
S'arrête à la première réussite. Le but est de **mesurer** la
|
|
robustesse (wordlist courte = compromise rapide → authentification
|
|
fragile ; rate-limit / lockout / 2FA = résistance), pas de produire
|
|
un déni de service.
|
|
|
|
## Préparation
|
|
|
|
1. `cp targets.example.env targets.env` et renseignez
|
|
`TARGET_SCOPE_ACK="yes"`, `TARGET_BASE_URL`, `LOGIN_PATH`,
|
|
`LOGIN_USERNAME`, `LOGIN_WORDLIST`.
|
|
2. Placez votre wordlist dans `wordlists/passwords.txt` (ignoré par
|
|
git) ou pointez `LOGIN_WORDLIST` vers un chemin absolu.
|
|
|
|
## Lancement
|
|
|
|
```bash
|
|
./brute-login.sh
|
|
```
|
|
|
|
## Sortie
|
|
|
|
- stdout : progression + verdict (réussite/échec).
|
|
- `output/brute-login.log` : une ligne par tentative
|
|
(`horodatage \t code \t mot-de-passe`).
|
|
|
|
## Interprétation
|
|
|
|
- **Réussite rapide** sur une wordlist triviale → politique de mots
|
|
de passe trop faible. Corriger : longueur minimale, complexité,
|
|
audit contre une liste de mots de passe courants.
|
|
- **429 / lockout** → rate-limiting actif (bon). Notez le seuil.
|
|
- **Même code d'échec partout** → impossible de distinguer réussite
|
|
d'échec par le code seul ; envisagez un indiceur de succès plus
|
|
fin (taille du corps, présence d'un jeton) en adaptant le script. |