
JetBrains TeamCity용 개념 증명(PoC) 익스플로잇으로, 에이전트 폴링 프로토콜 역직렬화를 통해 인증되지 않은 원격 코드 실행을 수행하고 JSP 페이로드를 배포하며 다중 스레드 명령 실행을 지원합니다.
개요 • 시각적 흐름 • 요구 사항 • 사용법 • 제한 사항 • 완화 조치
[!CAUTION] 이 PoC는 운영체제 명령을 실행하며 TeamCity 애플리케이션 디렉터리를 수정할 수 있습니다. 격리된 실습 환경 또는 명시적인 서면 승인을 받은 시스템에서만 사용하세요.
JetBrains는 수정 버전 이전의 모든 TeamCity On-Premises 릴리스가 영향을 받는다고 밝혔습니다. 가능하면 현재 지원되는 릴리스로 업그레이드하세요. 즉시 업그레이드가 불가능하면 공급업체의 보안 패치 플러그인에 대한 지침을 따르세요.
[!NOTE] 이 저장소는 해당 CVE가 CISA KEV(공개적으로 악용된 취약점) 카탈로그에 등재되어 있다고 주장하지 않습니다. JetBrains는 2026년 7월 27일 권고를 게시할 당시 알려진 활발한 악용 사례가 없다고 보고했습니다.
개략적으로 PoC는 다음을 수행합니다:
result.txt에 기록합니다.생성된 JSP는 호출될 때 자신을 삭제하려고 시도합니다. 정리는 최선 노력(best-effort)으로 간주하세요. 대상이 변경되지 않은 상태로 남는다는 보장은 아닙니다.
Python 3.9 or later
Target Authorized TeamCity On-Premises lab instance
Transport HTTP or HTTPS access
Shell bash available on the TeamCity server
Packages Python standard library only
Safety Disposable environment or verified backup
[!IMPORTANT] 페이로드는
bash -c를 통해 명령을 호출합니다. 따라서 Windows TeamCity 서버에는 호환되는 Bash 설치가 필요합니다. 그렇지 않으면 명령 실행 단계가 실패합니다.
프로젝트 디렉터리에서 PoC를 실행하세요:
python3 exploit.py
프로그램은 대상, 명령, 원하는 스레드 수를 묻습니다:
[*] Target URL or file: http://127.0.0.1:8111
[*] Command: id
[*] Threads (default 10): 1
대상의 전체 기본 URL을 입력하세요. 스킴이 생략되면 스크립트는 자동으로 http://를 사용합니다.
여러 실습 시스템의 경우 줄마다 URL이 하나씩 있는 텍스트 파일의 경로를 입력하세요:
http://127.0.0.1:8111
http://192.0.2.10:8111
https://teamcity.lab.example
파서가 제거하지 않으므로 대상 줄에 인라인 주석을 추가하지 마세요. 스레드 1개로 시작하고 승인된 실습 환경의 범위와 용량을 확인한 후에만 동시성을 늘리세요.
성공적인 결과는 result.txt에 추가됩니다:
http://127.0.0.1:8111 -> uid=1000(tcuser) gid=1000(tcuser) groups=1000(tcuser)
이 파일에는 민감한 명령 출력이 포함될 수 있습니다. 버전 관리에서 제외하고 더 이상 필요하지 않으면 안전하게 삭제하세요.
bash를 사용할 수 있다고 가정합니다.../webapps/ROOT으로 하드코딩되어 있습니다. 비표준 TeamCity 또는 서블릿 컨테이너 레이아웃에서는 작동하지 않을 수 있습니다.args 객체를 참조합니다. 처음 제출된 명령은 독립적으로 실행되지만, 코드가 수정될 때까지 해당 프롬프트의 추가 명령은 실패합니다.flowchart LR
A["Identify TeamCity version"] --> B{"Patched release?"}
B -- "No" --> C["Upgrade to 2025.11.7 / 2026.1.3+"]
B -- "Upgrade blocked" --> D["Apply JetBrains security patch plugin"]
C --> E["Restrict access to trusted networks or VPN"]
D --> E
E --> F["Review logs, credentials, artifacts, and pipelines"]
2025.11.7, 2026.1.3 또는 최신 지원 릴리스로 업그레이드하세요.이 코드는 귀하가 소유하거나 명시적으로 평가 권한을 받은 환경에서의 보안 연구, 검증, 방어적 테스트를 위해 제공됩니다. 귀하는 적용 가능한 법률, 계약, 참여 규칙을 준수할 책임이 있습니다. 작성자와 기여자는 무단 사용 또는 그로 인한 손해에 대해 책임을 지지 않습니다.
| 속성 | 값 |
|---|
| CVE | CVE-2026-63077 |
| 제품 | JetBrains TeamCity On-Premises |
| 영향 | 에이전트 폴링 프로토콜을 통한 인증되지 않은 원격 코드 실행 |
| 취약점 | CWE-502 — 신뢰할 수 없는 데이터의 역직렬화 |
| CVSS | 9.8 심각 — JetBrains CNA, CVSS 3.1 |
| 인증 | 필요하지 않음 |
| 수정 릴리스 | 2025.11.7 및 2026.1.3 |
| 대체 완화 조치 | TeamCity 2017.1+용 JetBrains 보안 패치 플러그인 |
| TeamCity Cloud | JetBrains에 따르면 고객 조치 불필요 |