# 23 - Pentesting Telnet {{#include ../banners/hacktricks-training.md}} ## **Grundinformationen** Telnet ist ein Netzwerkprotokoll, das Benutzern eine unsichere Möglichkeit bietet, über ein Netzwerk auf einen Computer zuzugreifen. **Standardport:** 23 ``` 23/tcp open telnet ``` ## **Enumeration** ### **Banner Grabbing** ```bash nc -vn 23 ``` Alle interessanten Aufzählungen können mit **nmap** durchgeführt werden: ```bash nmap -n -sV -Pn --script "*telnet* and safe" -p 23 ``` Das Skript `telnet-ntlm-info.nse` wird NTLM-Informationen (Windows-Versionen) abrufen. Aus dem [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): Im TELNET-Protokoll gibt es verschiedene "**Optionen**", die genehmigt werden und mit der Struktur "**DO, DON'T, WILL, WON'T**" verwendet werden können, um es einem Benutzer und einem Server zu ermöglichen, sich auf die Verwendung eines elaborierteren (oder vielleicht einfach anderen) Satzes von Konventionen für ihre TELNET-Verbindung zu einigen. Solche Optionen könnten das Ändern des Zeichensatzes, des Echo-Modus usw. umfassen. **Ich weiß, dass es möglich ist, diese Optionen aufzulisten, aber ich weiß nicht wie, also lass es mich wissen, wenn du weißt wie.** ### [Brute Force](../generic-hacking/brute-force.md#telnet) ## Konfigurationsdatei ```bash /etc/inetd.conf /etc/xinetd.d/telnet /etc/xinetd.d/stelnet ``` ## HackTricks Automatische Befehle ``` 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' ``` ### Aktuelle Schwachstellen (2022-2025) * **CVE-2024-45698 – D-Link Wi-Fi 6 Router (DIR-X4860)**: Der integrierte Telnet-Dienst akzeptierte fest codierte Anmeldeinformationen und konnte Eingaben nicht bereinigen, was eine nicht authentifizierte Remote-RCE als Root über manipulierte Befehle auf Port 23 ermöglichte. In Firmware ≥ 1.04B05 behoben. * **CVE-2023-40478 – NETGEAR RAX30**: Ein stackbasierter Pufferüberlauf im Telnet-CLI-Befehl `passwd` ermöglicht es einem benachbarten Angreifer, die Authentifizierung zu umgehen und beliebigen Code als Root auszuführen. * **CVE-2022-39028 – GNU inetutils telnetd**: Eine Zwei-Byte-Sequenz (`0xff 0xf7` / `0xff 0xf8`) löst eine NULL-Zeiger-Dereferenzierung aus, die `telnetd` zum Absturz bringen kann, was nach mehreren Abstürzen zu einem persistierenden DoS führt. Behalten Sie diese CVEs während der Schwachstellenbewertung im Hinterkopf – wenn das Ziel eine nicht gepatchte Firmware oder einen veralteten inetutils Telnet-Daemon ausführt, haben Sie möglicherweise einen direkten Weg zur Codeausführung oder zu einem störenden DoS. ### Abfangen von Anmeldeinformationen & Man-in-the-Middle Telnet überträgt alles, einschließlich Anmeldeinformationen, in **Klartext**. Zwei schnelle Möglichkeiten, um sie abzufangen: ```bash # 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) ``` Für aktives MITM kombinieren Sie ARP-Spoofing (z.B. `arpspoof`/`ettercap`) mit denselben Sniffing-Filtern, um Passwörter in geschalteten Netzwerken zu ernten. ### Automatisierter Brute-Force / Passwort-Spraying ```bash # Hydra (stop at first valid login) hydra -L users.txt -P rockyou.txt -t 4 -f telnet:// # Ncrack (drop to interactive session on success) ncrack -p 23 --user admin -P common-pass.txt --connection-limit 4 # Medusa (parallel hosts) medusa -M telnet -h targets.txt -U users.txt -P passwords.txt -t 6 -f ``` Die meisten IoT-Botnets (Mirai-Varianten) scannen weiterhin Port 23 mit kleinen Standard-Anmeldeinformationen-Dictionaries – diese Logik zu spiegeln, kann schnell schwache Geräte identifizieren. ### Ausnutzung & Nachausnutzung Metasploit hat mehrere nützliche Module: * `auxiliary/scanner/telnet/telnet_version` – Banner- & Optionsenumeration. * `auxiliary/scanner/telnet/brute_telnet` – Multithreaded Bruteforce. * `auxiliary/scanner/telnet/telnet_encrypt_overflow` – RCE gegen anfällige Solaris 9/10 Telnet (Option ENCRYPT-Verarbeitung). * `exploit/linux/mips/netgear_telnetenable` – aktiviert den Telnet-Dienst mit einem gestalteten Paket auf vielen NETGEAR-Routern. Nachdem eine Shell erhalten wurde, denken Sie daran, dass **TTYs normalerweise dumm sind**; aktualisieren Sie mit `python -c 'import pty;pty.spawn("/bin/bash")'` oder verwenden Sie die [HackTricks TTY-Tricks](/generic-hacking/reverse-shells/full-ttys.md). ### Härtung & Erkennung (Blue Team Ecke) 1. Bevorzugen Sie SSH und deaktivieren Sie den Telnet-Dienst vollständig. 2. Wenn Telnet erforderlich ist, binden Sie es nur an Verwaltungs-VLANs, erzwingen Sie ACLs und umhüllen Sie den Daemon mit TCP-Wrappers (`/etc/hosts.allow`). 3. Ersetzen Sie veraltete `telnetd`-Implementierungen durch `ssl-telnet` oder `telnetd-ssl`, um Transportverschlüsselung hinzuzufügen, aber **dies schützt nur Daten im Transit – Passwort-Raten bleibt trivial**. 4. Überwachen Sie den ausgehenden Verkehr zu Port 23; Kompromittierungen erzeugen oft Reverse-Shells über Telnet, um strenge HTTP-Egress-Filter zu umgehen. ## Referenzen * D-Link Advisory – CVE-2024-45698 Kritische Telnet RCE. * NVD – CVE-2022-39028 inetutils `telnetd` DoS. {{#include ../banners/hacktricks-training.md}}