
Interception des identifiants du plugin TeamCity pour IntelliJ IDEA
Rapport de preuve de concept | Analyse du flux de travail | Script serveur
Ceci est une reproduction de CVE-2020-35667 en créant un faux point de terminaison XML-RPC TeamCity.
CVE-2020-35667 est une vulnérabilité SSRF dans le plugin TeamCity de JetBrains pour IntelliJ IDE.
L'ancien plugin TeamCity IntelliJ demande une clé publique au serveur, chiffre le mot de passe avec celle-ci, puis le renvoie.
Comme le serveur est contrôlé par l'attaquant, ce dernier déchiffre et journalise les identifiants en clair.
La vulnérabilité a été signalée par Jonathan Leitschuh (https://blog.jetbrains.com/blog/2021/02/03/jetbrains-security-bulletin-q4-2020/).
L'impact de l'exploitation de cette vulnérabilité est l'interception des identifiants utilisateur en clair pendant le processus de connexion du plugin, via un point de terminaison XML-RPC contrôlé par l'attaquant.
Voici ma configuration pour reproduire le problème :
IntelliJ IDEA Community Edition 2018.1.8
TeamCity 2020.2.1 (build 85633)
Plugin TeamCity IntelliJ vulnérable
TeamCity-IDEAplugin.zip;98aaaea4276f718c6c9cf3cb5383da1be6af9daa29e5b17fda8fa70d6bc1342fSystème d'exploitation : Windows 10
Version de Python : 3.12.7
Les dépendances Python se trouvent dans cve2020-35667/requirements.txt
pip install -r requirements.txt
python poc_server.py
# Server listens on http://127.0.0.1:8888
http://127.0.0.1:8888.Résultat attendu (vulnérable) : les identifiants utilisateur sont journalisés dans la console du serveur.
Comportement attendu si sécurisé : le client vérifie l'identité du serveur et l'authenticité de la clé ; les identifiants ne sont pas exposés à un point de terminaison usurpé.