
Proof-of-Concept-Exploit für JetBrains TeamCity, der eine nicht authentifizierte Remote-Codeausführung über die Deserialisierung des Agent-Polling-Protokolls durchführt, eine JSP-Payload bereitstellt und mehrthreadige Befehlsausführung unterstützt.
Überblick • Visueller Ablauf • Voraussetzungen • Verwendung • Einschränkungen • Abwehrhinweise
[!CAUTION] Dieser PoC führt einen Betriebssystembefehl aus und kann das TeamCity-Anwendungsverzeichnis verändern. Verwenden Sie ihn nur in einer isolierten Laborumgebung oder gegen Systeme, für die Sie eine ausdrückliche schriftliche Genehmigung besitzen.
JetBrains gibt an, dass alle TeamCity-On-Premises-Versionen vor den behobenen Versionen betroffen sind. Aktualisieren Sie nach Möglichkeit auf eine aktuell unterstützte Version. Falls ein sofortiges Upgrade nicht möglich ist, befolgen Sie die Anweisungen des Herstellers für sein Sicherheitspatch-Plugin.
[!NOTE] Dieses Repository behauptet nicht, dass die CVE im Katalog der Known Exploited Vulnerabilities der CISA aufgeführt ist. JetBrains meldete bei Veröffentlichung seiner Sicherheitsmeldung am 27. Juli 2026 keine bekannte aktive Ausnutzung.
Im Überblick führt der PoC Folgendes aus:
result.txt auf.Die generierte JSP versucht, sich beim Aufruf selbst zu löschen. Behandeln Sie die Bereinigung als Best-Effort, nicht als Garantie dafür, dass das Ziel unverändert bleibt.
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] Das Payload führt Befehle über
bash -caus. Ein Windows-TeamCity-Server benötigt daher eine kompatible Bash-Installation; andernfalls schlägt die Befehlsausführungsphase fehl.
Führen Sie den PoC aus dem Projektverzeichnis aus:
python3 exploit.py
Das Programm fragt nach einem Ziel, einem Befehl und der gewünschten Thread-Anzahl:
[*] Target URL or file: http://127.0.0.1:8111
[*] Command: id
[*] Threads (default 10): 1
Geben Sie die vollständige Basis-URL des Ziels ein. Wenn das URL-Schema fehlt, verwendet das Skript automatisch http://.
Geben Sie für mehrere Laborsysteme den Pfad zu einer Textdatei mit einer URL pro Zeile ein:
http://127.0.0.1:8111
http://192.0.2.10:8111
https://teamcity.lab.example
Fügen Sie den Zielzeilen keine Inline-Kommentare hinzu, da der Parser diese nicht entfernt. Beginnen Sie mit einem Thread und erhöhen Sie die Parallelität erst, nachdem Sie Umfang und Kapazität des autorisierten Labors bestätigt haben.
Erfolgreiche Ergebnisse werden an result.txt angehängt:
http://127.0.0.1:8111 -> uid=1000(tcuser) gid=1000(tcuser) groups=1000(tcuser)
Die Datei kann sensible Befehlsausgaben enthalten. Halten Sie sie aus der Versionskontrolle heraus und löschen Sie sie sicher, sobald sie nicht mehr benötigt wird.
bash auf dem TeamCity-Server verfügbar ist.../webapps/ROOT codiert; nicht standardmäßige TeamCity- oder Servlet-Container-Layouts funktionieren möglicherweise nicht.args-Objekt. Der erste übermittelte Befehl wird unabhängig ausgeführt, aber weitere Befehle über diese Eingabeaufforderung schlagen fehl, bis der Code korrigiert ist.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 oder eine neuere unterstützte Version.Dieser Code wird für Sicherheitsforschung, Validierung und defensive Tests in Umgebungen bereitgestellt, die Ihnen gehören oder für deren Bewertung Sie ausdrücklich autorisiert sind. Sie sind dafür verantwortlich, geltende Gesetze, Verträge und Rules of Engagement einzuhalten. Autor und Mitwirkende übernehmen keine Haftung für unbefugte Nutzung oder daraus entstehende Schäden.
| Eigenschaft | Wert |
|---|
| CVE | CVE-2026-63077 |
| Produkt | JetBrains TeamCity On-Premises |
| Auswirkung | Nicht authentifizierte Remote-Codeausführung über das Agent-Polling-Protokoll |
| Schwachstelle | CWE-502 — Deserialisierung nicht vertrauenswürdiger Daten |
| CVSS | 9.8 Kritisch — JetBrains CNA, CVSS 3.1 |
| Authentifizierung | Nicht erforderlich |
| Behobene Versionen | 2025.11.7 und 2026.1.3 |
| Alternative Abhilfemaßnahme | JetBrains-Sicherheitspatch-Plugin für TeamCity 2017.1+ |
| TeamCity Cloud | Laut JetBrains sind keine Maßnahmen seitens des Kunden erforderlich |