Rapport de recherche en laboratoire isolé pour VMware vCenter Server CVE-2021-21972, couvrant le téléchargement arbitraire de fichiers sans authentification jusqu'à l'exécution de code à distance (RCE), la détection basée sur Nmap, la chaîne d'exploitation et les mesures d'atténuation.
Auteur : Niranjan Pokhrel
Projet de recherche indépendant reproduisant et documentant une vulnérabilité critique et publiquement divulguée de VMware vCenter Server dans un laboratoire domestique isolé, afin de comprendre la classe de vulnérabilité, le chemin d'exploitation et les mesures défensives.
| CVE | CVE-2021-21972 |
| Score de base CVSSv3 | 9,8 (Critique) |
| Avis du fournisseur | VMSA-2021-0002 |
| Produit concerné | VMware vCenter Server 6.5 / 6.7 / 7.0 |
| Classe de vulnérabilité | Téléversement de fichier arbitraire non authentifié → Exécution de code à distance |
| Statut | Corrigé par VMware (nov. 2020 – févr. 2021). Le laboratoire a utilisé des versions volontairement obsolètes et isolées à des fins de recherche uniquement. |
vCenter Server est le plan de gestion central de l'infrastructure virtualisée VMware — le compromettre peut signifier compromettre un centre de données virtuel entier. Cette vulnérabilité est un exemple classique de la façon dont un contrôle d'authentification manquant sur un seul point de terminaison de plugin peut dégénérer en prise de contrôle totale de l'hôte. J'ai construit ce laboratoire pour passer de la lecture d'un avis CVE à la compréhension réelle de la surface d'attaque, de la chaîne d'exploitation et — tout aussi important — de la façon dont elle aurait dû être évitée et comment la détecter défensivement.
La vulnérabilité se situe dans le client vSphere (HTML5), plus précisément dans un plugin vCenter Server qui expose un point de terminaison de téléversement de fichier (/ui/vropspluginui/rest/services/uploadova) sans exiger d'authentification. Un attaquant ayant un accès réseau au port 443 peut envoyer une requête POST forgée à ce point de terminaison et téléverser des fichiers arbitraires — y compris un web shell — vers un répertoire accessible via le web sur le système d'exploitation sous-jacent. Cela donne à l'attaquant une exécution de code avec les privilèges du service vCenter, soit effectivement un contrôle total de l'appliance.
À un niveau élevé, la chaîne d'attaque est la suivante :
Construit entièrement dans un réseau virtuel isolé, sans accès Internet et sans données de production :
(Les adresses IP spécifiques, les identifiants et les détails d'infrastructure de la construction d'origine sont volontairement omis de cette présentation publique.)
La présence de la vulnérabilité peut être confirmée défensivement (c'est-à-dire par une équipe bleue ou un auditeur) en vérifiant si le point de terminaison de téléversement de la cible répond d'une manière cohérente avec la vulnérabilité non corrigée — c'est le même type de vérification qu'un scanner de vulnérabilités ou une équipe de sécurité interne exécuterait pour identifier les instances vCenter exposées et non corrigées sur leur réseau avant qu'un attaquant ne le fasse.
Un script de détection NSE public pour cette CVE est disponible dans plusieurs dépôts open-source de sécurité ; il n'est pas reproduit ici, conformément à l'objectif de ce README qui privilégie la documentation plutôt que la distribution d'outils de scan/exploitation prêts à l'emploi. Dans le laboratoire, une cible vulnérable a été signalée comme VULNERABLE (Exploitable) dans la sortie du scan, ce qui déclenche la priorisation d'un correctif immédiat.
Un exploit de preuve de concept fonctionnel pour cette CVE est publiquement disponible depuis 2021, suite à sa découverte par Mikhail Klyuchnikov de Positive Technologies ; dans un souci de ne pas distribuer une charge utile RCE prête à l'emploi depuis ce profil, je ne reproduis pas ici le code d'exploit — l'objectif de cette présentation est la compréhension, pas l'outillage. En résumé, l'exploit public automatise les étapes 2–3 ci-dessus : il conditionne un web shell JSP dans le format de téléversement attendu, l'envoie via POST au point de terminaison vulnérable, confirme qu'il a atterri dans un chemin accessible via le web, puis l'utilise pour déclencher un reverse shell vers l'attaquant.
Ce projet a été mené dans un environnement de laboratoire entièrement isolé et sans production, à des fins éducatives et de développement professionnel. Aucun système non autorisé n'a été accédé.