
В операционной системе Windows обнаружено, что FortiClient (версия приложения 7.0.8.0427) позволяет удалённому непривилегированному пользователю принуждать хосты Windows проходить аутентификацию на других машинах через именованный канал, отвечающий за службу FortiSSLVPNdaemon.
Было обнаружено, что именованный канал "FortiSslvpnNamedPipe" разрешает чтение и запись любому пользователю.

Приложение считывает 5-й байт буфера из именованного канала как код операции PipeBuffer+4

Было обнаружено, что приложение прочитает файл, если код операции равен 24 (т.е. 0x18).
Поток выполнения: Case 24 => LABEL_26 => strncpy копирует полезную нагрузку в переменную Buffer => передаёт полезную нагрузку в sub_7FF60C3EAC20 => вызывает CreateFileA => ReadFile



Однако приложение ничего не делает с содержимым файла.
Мы можем отправить специально сформированный трафик (т.е. "\x00\x00\x00\x00\x18\x00", объединённый с целевым путём) в уязвимый именованный канал "FortiSslvpnNamedPipe", чтобы вызвать код операции 24 и заставить процесс "FortiSSLVPNdaemon.exe" вызвать CreateFileA с привилегиями SYSTEM. Таким образом, мы можем заставить сервер подключиться к удалённому файлу, передав UNC-путь (например, "\\<remote ip>\<file path>"), или подключиться к локальному именованному каналу (например, "\\127.0.0.1\pipe\<named pipe>").
Чтобы принудить хосты Windows проходить аутентификацию на других машинах с помощью удалённого неаутентифицированного пользователя, можно выполнить следующие шаги:

Чтобы повысить привилегии до SYSTEM из-под локального пользователя с привилегией "SeImpersonatePrivilege" (например, "nt authority\network service"), можно выполнить следующие шаги:
ImpersonateNamedPipeClient(), чтобы олицетворить привилегии SYSTEM.