
Exploit para CVE-2024-40586: força hosts Windows a autenticar através de um pipe nomeado vulnerável do FortiClient, permitindo escalada de privilégio para SYSTEM ou movimento lateral através de ataques de relay.
Em sistemas Windows, foi descoberto que o FortiClient (versão do aplicativo 7.0.8.0427) permite que um usuário remoto não privilegiado force a autenticação de hosts Windows em outras máquinas através de um pipe nomeado responsável pelo serviço FortiSSLVPNdaemon.
Observou-se que o pipe nomeado "FortiSslvpnNamedPipe" permite LEITURA e ESCRITA de qualquer usuário.

O aplicativo lê o 5º byte do buffer do pipe nomeado como código de operação PipeBuffer+4

Observou-se que o aplicativo lerá um arquivo se o código de operação for igual a 24 (ou seja, 0x18)
Fluxo do código: Case 24 => LABEL_26 => strncpy copia o payload para a variável Buffer => passa o payload para sub_7FF60C3EAC20 => chama CreateFileA => ReadFile



No entanto, o aplicativo não faz nada com o conteúdo do arquivo.
Podemos enviar um tráfego manipulado (ou seja, "\x00\x00\x00\x00\x18\x00" concatenado com o caminho de destino) para o pipe nomeado vulnerável "FortiSslvpnNamedPipe" a fim de acionar o código de operação 24 e forçar o processo "FortiSSLVPNdaemon.exe" a chamar CreateFileA com privilégio de SYSTEM. Portanto, podemos forçar o servidor a conectar um arquivo remoto enviando um caminho UNC (ex.: "\\<ip remoto>\<caminho do arquivo>") ou conectar um pipe nomeado local (ex.: "\\127.0.0.1\pipe\<pipe nomeado>")
Para coagir hosts Windows a autenticar em outras máquinas com um usuário remoto não autenticado, o usuário pode seguir os passos:

Para realizar uma escalada de privilégio para SYSTEM a partir de um usuário local com "SeImpersonatePrivilege" (ex.: "nt authority\network service"), o usuário pode seguir os passos:
ImpersonateNamedPipeClient() para personificar o privilégio de SYSTEM.