23 - Pentesting Telnet

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Podstawowe informacje

Telnet to protokół sieciowy, który daje użytkownikom niezabezpieczony sposób dostępu do komputera przez sieć.

Domyślny port: 23

23/tcp open  telnet

Enumeracja

nc -vn <IP> 23

Całą interesującą enumerację można przeprowadzić za pomocą nmap:

nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>

Skrypt telnet-ntlm-info.nse uzyska informacje NTLM (wersje Windows).

From the telnet RFC: W protokole TELNET występują różne “options”, które mogą być zatwierdzone i używane ze strukturą “DO, DON’T, WILL, WON’T”, aby umożliwić użytkownikowi i serwerowi uzgodnienie użycia bardziej rozbudowanego (lub po prostu innego) zestawu konwencji dla ich połączenia TELNET. Takie opcje mogą obejmować zmianę zestawu znaków, trybu echo itp.

Wiem, że można wyenumerować te opcje, ale nie wiem jak — daj znać, jeśli wiesz.

Enumeracja opcji / funkcji Telnet

Telnet używa negocjacji IAC + DO/DONT/WILL/WONT do włączania opcji. Możesz obserwować obsługiwane opcje, przechwytując początkową negocjację oraz sondować konkretne funkcje.

Sondy opcji/funkcji 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>

Skrypt telnet-encryption sprawdza, czy opcja ENCRYPT jest obsługiwana; niektóre implementacje historycznie obsługiwały tę opcję nieprawidłowo i były podatne, ale skrypt tylko sprawdza obsługę. Skrypt telnet-ntlm-info ujawnia metadane NTLM (NetBIOS/DNS/OS build), gdy Microsoft Telnet NTLM jest włączony. Skrypt telnet-brute to NSE brute-force auditor dla Telnet.

Brute force

Plik konfiguracyjny

/etc/inetd.conf
/etc/xinetd.d/telnet
/etc/xinetd.d/stelnet

Automatyczne polecenia HackTricks

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'

Najnowsze podatności (2022-2026)

  • CVE-2024-45698 – D-Link Wi-Fi 6 routers (DIR-X4860): Improper input validation in the telnet service allows remote attackers to log in using hard-coded credentials and inject OS commands; fixed by firmware 1.04B05 or later.
  • CVE-2023-40478 – NETGEAR RAX30: Stack-based buffer overflow in the Telnet CLI passwd command enables network-adjacent code execution as root; authentication is required but can be bypassed.
  • CVE-2022-39028 – GNU inetutils telnetd: A two-byte sequence (0xff 0xf7 / 0xff 0xf8) can trigger a NULL-pointer dereference in telnetd, and repeated crashes can lead inetd to disable the service (DoS).

Uwzględnij te CVE podczas triage podatności — jeśli cel uruchamia niezałatwiony firmware lub przestarzały demon inetutils Telnet, możesz mieć prostą ścieżkę do code-execution lub destrukcyjnego DoS.

CVE-2026-24061 — GNU Inetutils telnetd auth bypass (Krytyczne)

Podsumowanie: telnetd w GNU Inetutils do wersji 2.7 umożliwia remote authentication bypass poprzez wartość zmiennej środowiskowej USER równej -f root, skutkując unauthenticated root access.
Przyczyna: argument injection (CWE-88), ponieważ telnetd przekazuje zmienną środowiskową USER dostarczoną przez klienta do login bez sanizacji.
Zakres: GNU Inetutils telnetd w wersjach 1.9.3–2.7 jest podatny (opublikowano 21 stycznia 2026).

Środki zaradcze

  • Zainstaluj poprawkę/aktualizuj dotknięte pakiety natychmiast (np. poprawki Debiana są w 2:2.4-2+deb12u2, 2:2.6-3+deb13u1, oraz 2:2.7-2).
  • Wyłącz Telnet lub ogranicz dostęp do zaufanych sieci zarządzania podczas aktualizacji.

Sniffing Credentials & Man-in-the-Middle

Telnet przesyła wszystko, w tym poświadczenia, w clear-text. Dwa szybkie sposoby na ich przechwycenie:

# 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)

W przypadku aktywnego MITM, połącz ARP spoofing (np. arpspoof/ettercap) z tymi samymi sniffing filters, aby zbierać hasła w sieciach przełączanych.

Automated Brute-force / 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

Większość botnetów IoT (warianty Mirai) nadal skanuje port 23 przy użyciu małych słowników domyślnych poświadczeń — odzwierciedlenie tej logiki pozwala szybko zidentyfikować słabe urządzenia.

Eksploatacja i post-eksploatacja

Metasploit ma kilka przydatnych modułów:

  • auxiliary/scanner/telnet/telnet_version – enumeracja banerów i opcji.
  • auxiliary/scanner/telnet/brute_telnet – wielowątkowe bruteforce.
  • auxiliary/scanner/telnet/telnet_encrypt_overflow – RCE przeciwko podatnemu Telnetowi w Solaris 9/10 (obsługa opcji ENCRYPT).
  • exploit/linux/mips/netgear_telnetenable – włącza usługę telnet za pomocą spreparowanego pakietu na wielu routerach NETGEAR.

Po uzyskaniu shella pamiętaj, że TTYs są zazwyczaj prymitywne; ulepsz go za pomocą python -c 'import pty;pty.spawn("/bin/bash")' lub skorzystaj z HackTricks TTY tricks.

Wzmocnienie i wykrywanie (Blue team corner)

  1. Preferuj SSH i wyłącz usługę Telnet całkowicie.
  2. Jeśli Telnet jest wymagany, ogranicz go do VLANów zarządzania, wymuś ACLs i ogranicz dostęp do demona przy użyciu TCP wrappers (/etc/hosts.allow).
  3. Zastąp przestarzałe implementacje telnetd rozwiązaniami typu ssl-telnet lub telnetd-ssl, aby dodać szyfrowanie transportu, ale to chroni jedynie dane w tranzycie — zgadywanie haseł pozostaje trywialne.
  4. Monitoruj ruch wychodzący na port 23; kompromitacje często uruchamiają reverse shelle przez Telnet, aby ominąć restrykcyjne filtry egress dla HTTP.

Źródła

  • D-Link Advisory – CVE-2024-45698 Critical Telnet RCE.
  • NVD – CVE-2022-39028 inetutils telnetd DoS.
  • NVD – CVE-2026-24061.
  • Canadian Centre for Cyber Security Alert AL26-002 (CVE-2026-24061).
  • Debian Security Tracker – CVE-2026-24061 fixed versions.

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks