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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-20660 — CVE-2026-20660에 대한 독립형 PoC 익스플로잇: Safari의 gzip 디코더에서의 경로 탐색. 서버가 악성 gzip을 전달하여 취약한 macOS에서 임의의 파일을 씁니다. | Kitploit
도구/GitHubGitHub/retx0/cve-2026-20660
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration Testing
GitHubretx0/cve-2026-20660

CVE-2026-20660

CVE-2026-20660에 대한 독립형 PoC 익스플로잇: Safari의 gzip 디코더에서의 경로 탐색. 서버가 악성 gzip을 전달하여 취약한 macOS에서 임의의 파일을 씁니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-20660 PoC 번들

이 폴더에는 다음에 대한 독립형 개념 증명(PoC)이 포함되어 있습니다.

  • CVE-2026-20660
  • CFNetwork NSGZipDecoder gzip FNAME을 통한 경로 탐색
  • 자동 열림(auto-open)이 활성화된 취약한 macOS Safari에 미치는 영향

1. 디렉터리 구조

  • server.py: 구성 가능한 탐색 깊이(depth)와 대상 이름을 가진 메인 PoC 서버
  • server_overwrite.py: ../../pwn.sh를 쓰는 데 초점을 맞춘 변형
  • README.md: 재현 노트 및 동작 로그

2. 사전 조건

  1. 대상은 취약한 macOS Safari(26.3 패치 라인 이전)입니다.
  2. Safari 설정이 활성화되어 있어야 합니다:
    • 환경설정 -> 일반 -> 다운로드 후 안전한 파일 열기
  3. 대상 브라우저에서 이 호스트에 접근할 수 있어야 합니다.

3. 근본 원인 요약

패치 diff는 -[NSGZipDecoder filenameWithOriginalFilename:] 동작이 변경되었음을 보여줍니다.

  • 이전 동작: gzip FNAME에서 파생된 이름을 직접 반환.
  • 새 동작: 반환하기 전에 lastPathComponent를 적용.

이렇게 하면 FNAME의 ../와 같은 디렉터리 구성 요소와 절대 경로가 차단됩니다.

4. Content-Disposition이 벡터가 아닌 이유

HTTP 파일 이름이 깨끗하더라도 공격은 성공할 수 있습니다.

  • HTTP Content-Disposition 파일 이름: 깨끗함 (예: report.gz)
  • gzip 헤더 FNAME: 악의적임 (예: ../../proof.txt)

Safari 측의 삭제(sanitization)는 주로 HTTP 계층 이름에 적용되며, 취약한 흐름에서 NSGZipDecoder가 소비하는 내장 gzip FNAME에는 적용되지 않습니다.

5. 빠른 시작

저장소 루트에서:

root@kitploit:~
python3 exploit/cve-2026-20660/server.py --port 8888 --depth 2

취약한 Safari에서 열기:

root@kitploit:~
http://<server-ip>:8888/

Trigger depth=2를 클릭합니다.

6. 검증

트리거 후 대상 머신에서 쓰기 결과 확인:

root@kitploit:~
ls -la ~/cve-2026-20660-proof.txt
cat ~/cve-2026-20660-proof.txt

덮어쓰기 변형의 경우:

root@kitploit:~
python3 exploit/cve-2026-20660/server_overwrite.py --port 9999

그런 다음 열기:

root@kitploit:~
http://<server-ip>:9999/

확인:

root@kitploit:~
ls -la ~/pwn.sh
cat ~/pwn.sh

7. 매개변수 참고 사항 (server.py)

  • --bind, -b: 바인드 주소 (기본값 0.0.0.0)
  • --port, -p: 수신 포트 (기본값 8888)
  • --depth, -d: 탐색 깊이 (../ 반복 횟수, 기본값 2)
  • --name, -n: 대상 출력 파일 이름

예시:

root@kitploit:~
# 깊이가 런타임 디렉터리 중첩과 일치할 때 ~/proof.txt에 쓰기
python3 exploit/cve-2026-20660/server.py -p 8888 -d 2 -n proof.txt

# 명시적 절대 경로 테스트 (리졸버가 허용하는 경우)
python3 exploit/cve-2026-20660/server.py -p 8888
# 그런 다음 사용: /download?depth=0&fname=/tmp/proof.txt

8. 관찰된 동작 (현재 노트)

  1. 압축 해제는 ~/Downloads 아래의 임시 디렉터리에서 발생할 수 있으므로, ~/로 빠져나가려면 깊이가 >= 2인 경우가 많습니다.
  2. 기존 대상 파일을 덮어쓰지 못할 수 있습니다. 다운로드 스택이 충돌을 피하기 위해 자동으로 이름을 변경할 수 있습니다.
  3. 스크립트 페이로드는 관찰된 실행에서 실행 비트와 함께 나타날 수 있습니다. 빌드/구성에 따라 검증하십시오.

9. 문제 해결

  1. 쓰기가 관찰되지 않는 경우:
    • Safari 자동 열림 설정이 활성화되어 있는지 확인하십시오.
    • 깊이를 늘려보십시오(2, 3, 4).
  2. 파일이 다운로드 폴더에 남아 있는 경우:
    • 현재 압축 해제 디렉터리 중첩에 비해 깊이가 너무 얕습니다.
  3. 연결이 실패하는 경우:
    • 호스트 방화벽과 LAN 연결 가능성을 확인하십시오.
  4. 대상 경로가 변경되지 않는 경우:
    • 기존 파일 이름 충돌로 인해 출력 이름이 변경될 수 있습니다.

10. 안전 및 범위

승인된 테스트 환경에서만 사용하십시오.

  • 명시적 허가 없이 시스템을 대상으로 하지 마십시오.
  • 재현성을 위해 페이로드를 비파괴적으로 유지하십시오.
  • 평가 증거를 위해 스크린샷/로그를 저장하십시오.

11. 권장 증거 수집

  1. Safari 버전 및 OS 빌드 스크린샷.
  2. PoC 서버 콘솔 로그(요청 + FNAME).
  3. 파일 시스템 확인 명령 및 출력.
  4. 대상 경로에 대한 이전/이후 디렉터리 목록.

12. 상세 기술 문서

더 자세한 설명은 다음을 참조하십시오:

  • https://ret0.dev/posts/cve-2026-20660/
도구 다운로드