
Exploit de preuve de concept pour JetBrains TeamCity qui effectue une exécution de code à distance non authentifiée via la désérialisation du protocole d'interrogation des agents, déploie une charge utile JSP et prend en charge l'exécution de commandes multithread.
Aperçu • Flux visuel • Prérequis • Utilisation • Limitations • Atténuation
[!CAUTION] Ce PoC exécute une commande du système d'exploitation et peut modifier le répertoire de l'application TeamCity. Utilisez-le uniquement dans un laboratoire isolé ou sur des systèmes pour lesquels vous disposez d'une autorisation écrite explicite.
JetBrains indique que toutes les versions On-Premises de TeamCity antérieures aux versions corrigées sont concernées. Mettez à niveau vers une version prise en charge et récente dès que possible. Si une mise à niveau immédiate n'est pas possible, suivez les instructions du fournisseur concernant son plugin de correctif de sécurité.
[!NOTE] Ce dépôt ne prétend pas que la CVE figure dans le catalogue des vulnérabilités connues et exploitées (KEV) de la CISA. JetBrains n'a signalé aucune exploitation active connue lors de la publication de son avis de sécurité le 27 juillet 2026.
Dans les grandes lignes, le PoC :
result.txt.Le JSP généré tente de se supprimer lorsqu'il est invoqué. Considérez le nettoyage comme un effort au mieux, et non comme une garantie que la cible restera inchangée.
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] La charge utile invoque les commandes via
bash -c. Un serveur TeamCity sous Windows nécessite donc une installation Bash compatible ; sinon, l'étape d'exécution de la commande échouera.
Exécutez le PoC depuis le répertoire du projet :
python3 exploit.py
Le programme demande une cible, une commande et le nombre de threads souhaité :
[*] Target URL or file: http://127.0.0.1:8111
[*] Command: id
[*] Threads (default 10): 1
Saisissez l'URL de base complète de la cible. Lorsque le schéma est omis,
le script utilise automatiquement http://.
Pour plusieurs systèmes de laboratoire, saisissez le chemin d'un fichier texte contenant une URL par ligne :
http://127.0.0.1:8111
http://192.0.2.10:8111
https://teamcity.lab.example
N'ajoutez pas de commentaires en ligne aux lignes de cibles, car l'analyseur ne les supprime pas. Commencez avec un seul thread et n'augmentez la concurrence qu'après avoir confirmé la portée et la capacité du laboratoire autorisé.
Les résultats réussis sont ajoutés à result.txt :
http://127.0.0.1:8111 -> uid=1000(tcuser) gid=1000(tcuser) groups=1000(tcuser)
Le fichier peut contenir des sorties de commandes sensibles. Tenez-le hors du contrôle de version et supprimez-le de manière sécurisée lorsqu'il n'est plus nécessaire.
bash est disponible sur le serveur TeamCity.../webapps/ROOT ; les configurations
non standard de TeamCity ou du conteneur de servlets peuvent ne pas fonctionner.args non
défini. La première commande soumise s'exécute indépendamment, mais les commandes
supplémentaires issues de cette invite échoueront tant que le code n'est pas corrigé.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 ou une
version prise en charge plus récente.Ce code est fourni pour la recherche en sécurité, la validation et les tests défensifs dans des environnements que vous possédez ou que vous êtes explicitement autorisé à évaluer. Vous êtes responsable du respect des lois, contrats et règles d'engagement applicables. L'auteur et les contributeurs déclinent toute responsabilité en cas d'utilisation non autorisée ou de dommages qui en résulteraient.
| Propriété | Valeur |
|---|
| CVE | CVE-2026-63077 |
| Produit | JetBrains TeamCity On-Premises |
| Impact | Exécution de code à distance non authentifiée via le protocole de sondage des agents |
| Faiblesse | CWE-502 — Désérialisation de données non fiables |
| CVSS | 9.8 Critique — JetBrains CNA, CVSS 3.1 |
| Authentification | Non requise |
| Versions corrigées | 2025.11.7 et 2026.1.3 |
| Atténuation alternative | Plugin de correctif de sécurité JetBrains pour TeamCity 2017.1+ |
| TeamCity Cloud | Aucune action du client requise selon JetBrains |