
(Nota: este manual é válido apenas para membros do laboratório DSNS.)
Esta é uma vulnerabilidade de execução remota de código (RCE) que residia em uma extensão do Visual Studio Code (VS Code) chamada npm, desenvolvida pela Microsoft e destinada a suportar a execução dos scripts npm definidos no arquivo package.json.
Para explorar esta vulnerabilidade, o atacante pode enviar um script malicioso oculto em arquivos para seu repositório público do GitHub, com um pequeno ajuste na configuração usada pela extensão npm. Se alguém baixar este repositório e abri-lo em um ambiente VS Code que tenha a extensão especificada instalada, assim que ele(a) visualizar o arquivo package.json, o script malicioso será executado. No meu cenário, o script malicioso é um arquivo batch chamado calc.bat e executará um programa deployagent.ps1, que então estabelecerá um túnel DNS para o servidor Caldera do laboratório DSNS em http://192.168.1.29:8888.
Como este CVE foi descoberto em 2021 e a equipe da Microsoft o corrigiu em versões posteriores, precisamos encontrar uma maneira de baixar uma versão mais antiga ([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)) da extensão npm. Em vez disso, eu o incluí no GitHub por conveniência. Também está incluído um script para instalar o VS Code no Windows.
Em um sistema Windows (por exemplo, APT3 no laboratório DSNS), execute o comando para obter este repositório
git clone https://github.com/jason-ntu/CVE-2021-26700.git
(Você também pode baixar e extrair o repositório através da GUI). As etapas a seguir são assumidas como executadas dentro do repositório (ou seja, o diretório clonado CVE-2021-26700).
Para instalar o VS Code no Windows, execute .\install-vscode.bat
Configure o comando code como um atalho para abrir o VS Code adicionando a seguinte configuração ao settings.json do VS Code.
Para instalar a versão necessária da extensão npm, execute .\install-extension.bat
Para explorar o CVE, você precisa abrir o repositório no VS Code e visualizar o arquivo package.json. Após alguns segundos de espera, uma conexão DNS do Caldera em http://192.168.1.29:8888 para a vítima deve ter sido estabelecida. O RCE está concluído!
Referência: github do jackadamson