
Exploit éducatif RCE pour CVE-2021-26700 dans l'extension npm de VS Code, démontrant le tunneling DNS vers un serveur C2 Caldera via l'exécution malveillante de package.json.
(Note : ce manuel est valable uniquement pour les membres du lab DSNS.)
Il s'agit d'une vulnérabilité d'exécution de code à distance (RCE) qui résidait dans une extension de Visual Studio Code (VS Code) appelée npm, développée par Microsoft et destinée à prendre en charge l'exécution des scripts npm définis dans le fichier package.json.
Pour exploiter cette vulnérabilité, l'attaquant peut télécharger un script malveillant caché dans des fichiers sur son dépôt GitHub public, avec quelques ajustements mineurs dans la configuration utilisée par l'extension npm. Si quelqu'un télécharge ce dépôt et l'ouvre dans un environnement VS Code avec l'extension spécifiée installée, dès qu'il(elle) visualise le fichier package.json, le script malveillant sera exécuté. Dans mon scénario, le script malveillant est un fichier batch appelé calc.bat et il exécutera un programme deployagent.ps1, qui établira ensuite un tunneling DNS vers le serveur Caldera du lab DSNS sur http://192.168.1.29:8888.
Comme cette CVE a été trouvée en 2021 et que l'équipe Microsoft l'a corrigée dans les versions ultérieures, nous devons trouver un moyen de télécharger une version plus ancienne ([v0.3.13](https://eg2.gallery.vsassets.io/_apis/public/gallery/publisher/eg2/extension/vscode-npm- script/0.3.13/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage)) de l'extension npm. Je l'ai incluse sur GitHub pour plus de commodité. Est également inclus un script pour installer VS Code sur Windows.
Sur un système Windows (par exemple APT3 dans le lab DSNS), exécutez la commande pour obtenir ce dépôt
git clone https://github.com/jason-ntu/CVE-2021-26700.git
(Vous pouvez également télécharger et extraire le dépôt via l'interface graphique). Les étapes suivantes sont supposées être exécutées à l'intérieur du dépôt (c'est-à-dire le répertoire cloné CVE-2021-26700).
Pour installer VS Code sur Windows, exécutez .\install-vscode.bat
Configurez la commande code comme raccourci pour ouvrir VS Code en ajoutant la configuration suivante dans le fichier settings.json de VS Code.
Pour installer la version requise de l'extension npm, exécutez .\install-extension.bat
Pour exploiter la CVE, vous devez ouvrir le dépôt dans VS Code et visualiser le fichier package.json. Après quelques secondes d'attente, une connexion DNS depuis Caldera sur http://192.168.1.29:8888 vers la victime devrait être établie. Le RCE est terminé !
Référence : jackadamson's github