security-tools/tools/brute-login/README.md
2026-09-24 18:11:03 +01:00

1.5 KiB

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

./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.