
(Nota: este manual es válido únicamente para los miembros del laboratorio DSNS).
Esta es una vulnerabilidad de ejecución remota de código (RCE) que residía en una extensión de Visual Studio Code (VS Code) llamada npm, desarrollada por Microsoft y cuyo objetivo era permitir ejecutar los scripts npm definidos en el archivo package.json.
Para explotar esta vulnerabilidad, el atacante podría subir algún script malicioso oculto en archivos a su repositorio público de GitHub, con un pequeño ajuste en la configuración utilizada por la extensión npm. Si alguien descarga este repositorio y lo abre en un entorno de VS Code que tenga instalada la extensión especificada, en cuanto vea el archivo package.json, el script malicioso se ejecutará. En mi escenario, el script malicioso es un archivo por lotes llamado calc.bat que ejecutará un programa deployagent.ps1, el cual establecerá un túnel DNS hacia el servidor Caldera del laboratorio DSNS en http://192.168.1.29:8888.
Dado que este CVE fue encontrado en 2021 y el equipo de Microsoft lo corrigió en versiones posteriores, necesitamos encontrar una forma de descargar una versión anterior ([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 la extensión npm. Por comodidad, la he incluido en GitHub. También se incluye un script para instalar VS Code en Windows.
En un sistema Windows (p. ej., APT3 en el laboratorio DSNS), ejecute el comando para obtener este repositorio
git clone https://github.com/jason-ntu/CVE-2021-26700.git
(También puede descargar y extraer el repositorio mediante la interfaz gráfica). Se asume que los siguientes pasos se ejecutan dentro del repositorio (es decir, en el directorio clonado CVE-2021-26700).
Para instalar VS Code en Windows, ejecute .\install-vscode.bat
Configure el comando code como acceso directo para abrir VS Code añadiendo la siguiente configuración en el settings.json de VS Code.
Para instalar la versión requerida de la extensión npm, ejecute .\install-extension.bat
Para explotar el CVE, debe abrir el repositorio en VS Code y ver el archivo package.json. Después de unos segundos de espera, debería haberse establecido una conexión DNS desde Caldera en http://192.168.1.29:8888 hacia la víctima. ¡La RCE está hecha!
Referencia: github de jackadamson