(注意:本手册仅适用于DSNS实验室成员。)
这是一个远程代码执行(RCE)漏洞,存在于Visual Studio Code(VS Code)的一个名为npm的扩展中,该扩展由微软开发,旨在支持运行package.json文件中定义的npm脚本。
为了利用此漏洞,攻击者可以将其公共GitHub仓库中的文件隐藏一些恶意脚本,并对npm扩展使用的配置进行微小调整。如果有人下载此仓库并在已安装指定扩展的VS Code环境中打开,一旦他/她查看package.json文件,恶意脚本就会执行。在我的场景中,恶意脚本是一个名为calc.bat的批处理文件,它将执行deployagent.ps1程序,进而建立一条DNS隧道,连接到DSNS实验室的Caldera服务器(http://192.168.1.29:8888)。
由于此CVE发现于2021年,微软团队已在后续版本中修复,我们需要找到一种方法来下载npm扩展的旧版本([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))。为方便起见,我已将其包含在GitHub上。同时还包括一个用于在Windows上安装VS Code的脚本。
在Windows系统(例如DSNS实验室的APT3)上,运行命令获取此仓库:
git clone https://github.com/jason-ntu/CVE-2021-26700.git
(你也可以通过图形界面下载并解压仓库)。以下步骤假设在仓库目录内执行(即克隆的CVE-2021-26700目录)。
要在Windows上安装VS Code,运行 .\install-vscode.bat
将命令 code 设置为打开VS Code的快捷方式,方法是将以下配置添加到VS Code的 settings.json 中。
要安装所需版本的npm扩展,运行 .\install-extension.bat
要利用此CVE,你需要在VS Code中打开仓库,并查看 package.json 文件。等待几秒钟后,Caldera(http://192.168.1.29:8888)到受害者的DNS连接应该已经建立。RCE完成!