Parce que l'authentification SFTP est l'authentification SSH, les attaques par mot de passe visent le service SSH sur le port 22. Un mot de passe valide donne un accès aux fichiers par SFTP et, si le compte n'est pas restreint au sous-système SFTP, il donne un shell complet, de sorte que la devinette d'identifiants peut aboutir directement à de l'exécution de commandes. Les serveurs SSH limitent souvent le débit des tentatives et peuvent être en mode clé uniquement (pas d'authentification par mot de passe), l'attaque se mène donc idéalement comme un spraying lent et discret de noms d'utilisateur validés contre des mots de passe probables plutôt qu'un brute force rapide.
# confirm password auth is even offered before spraying
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no user@<target>
# spray one likely password across validated users (quiet), stop on success
hydra -L users.txt -p 'Summer2025!' ssh://<target> -t 4 -f
nxc ssh <target> -u users.txt -p passwords.txt # netexec, marks shell vs no-shell
# a single credential: test both subsystem and shell
sftp user@<target>; ssh user@<target> id
Notes d'exploitation#
- Vérifiez d'abord que l'authentification par mot de passe est activée ; de nombreux serveurs SSH sont en mode clé uniquement, auquel cas passez aux voies par clé plutôt que de deviner des mots de passe.
- Faites du spraying lentement et avec peu de threads : SSH journalise chaque échec et peut limiter le débit ou bloquer, de sorte qu'une liste d'utilisateurs validés et une courte liste de mots de passe déduite du contexte valent mieux qu'une grande wordlist.
- NetExec indique si un identifiant fonctionnel donne un shell ou seulement le sous-système SFTP ; un shell est une exécution immédiate, un compte limité à SFTP oriente vers l'évasion de shell restreint.
- Les identifiants SSH sont un matériau de réutilisation de premier choix ; testez toute trouvaille contre d'autres hôtes et services.