"SYSTEM" за $5000. Найден способ взломать Windows Admin Center через обычную папку

Ошибка прав доступа в WAC превращает админский инструмент Microsoft в трамплин для локальной эскалации привилегий.


dvos36yodm8xax9k6wcjbrhdkryx2o08.jpg

Cymulate Research Labs обнаружила уязвимость локального повышения привилегий в Microsoft Windows Admin Center (WAC) версии 2.4.2.1, которая затрагивает все установки WAC вплоть до версии 2411. Проблема оказалась не в «хитром баге», а в банальной, но опасной ошибке конфигурации: каталог C:\ProgramData\WindowsAdminCenter доступен на запись любому обычному пользователю. На первый взгляд это выглядит как рядовая недоработка прав, но внутри этой папки работают компоненты, которые запускаются как служба с привилегиями SYSTEM — и это превращает запись в каталог в прямую точку входа для эскалации.

По сути, любая организация, использующая WAC для управления серверами или инфраструктурой, автоматически наследует риск: достаточно, чтобы у злоумышленника был доступ к файловой системе на хосте, где установлен WAC. Cymulate отмечает, что уязвимость бьёт по технологическому слою, а не по конкретным отраслям: под ударом любые развёртывания, где задействованы WAC Gateway, интегрированные расширения, привилегированные административные сценарии или Windows Server-хосты с установленным WAC. Исследователи показали, что из-за неверных прав доступа можно собрать рабочие цепочки эксплуатации и подняться от низких привилегий до SYSTEM, фактически ломая границу безопасности Windows.

Первый путь эксплуатации связан с механизмом удаления расширений. Исследователи рассуждали просто: какие действия почти гарантированно выполняются с повышенными привилегиями, но при этом касаются пользовательского содержимого? Установка и удаление — классический ответ. Поскольку WAC — .NET-приложение, команда взяла dnSpy и быстро нашла код, отвечающий за uninstall. Он формирует путь к папке uninstall, перечисляет там все .ps1-файлы и запускает их через PowerShell с политикой выполнения AllSigned. То есть процесс WAC по сути доверяет любым PowerShell-скриптам, оказавшимся в этой директории.

Если родительская папка доступна для записи всем, то обычный пользователь может подложить туда полезную нагрузку — хотя есть нюанс: скрипт должен быть подписан. Cymulate подчёркивает, что это не значит «подкинул любой ps1 и готово»: нужно либо найти подписанный скрипт, который можно злоупотребить, либо создать и подписать свой.