security-tools/tools/brute-login/README.md

43 lines
1.5 KiB
Markdown
Raw Permalink Normal View History

2026-09-24 17:50:43 +01:00
# 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.