
Su sistemi Windows, è stato riscontrato che FortiClient (versione app 7.0.8.0427) consente a un utente remoto non privilegiato di forzare gli host Windows ad autenticarsi verso altre macchine tramite una named pipe responsabile del servizio FortiSSLVPNdaemon.
È stato osservato che la named pipe "FortiSslvpnNamedPipe" consente la lettura e la scrittura da parte di qualsiasi utente.

L'app legge il 5° byte del buffer dalla named pipe come opcode PipeBuffer+4

È stato osservato che l'app legge il file se l'opcode è uguale a 24 (cioè 0x18)
Flusso del codice: Case 24 => LABEL_26 => strncpy copia il payload nella variabile Buffer => passa il payload a sub_7FF60C3EAC20 => chiama CreateFileA => ReadFile



Tuttavia, l'applicazione non fa nulla con il contenuto del file.
Possiamo inviare un traffico appositamente creato (cioè "\x00\x00\x00\x00\x18\x00" concatenato con il percorso del target) alla named pipe vulnerabile "FortiSslvpnNamedPipe" per attivare l'opcode 24 e forzare il processo "FortiSSLVPNdaemon.exe" a chiamare CreateFileA con privilegi SYSTEM. Pertanto, possiamo forzare il server a connettersi a un file remoto inviando un percorso UNC (ad es., "\\<ip remoto>\<percorso file>") o a connettersi a una named pipe locale (ad es., "\\127.0.0.1\pipe\<named pipe>")
Per forzare gli host Windows ad autenticarsi verso altre macchine con un utente remoto non autenticato, l'utente potrebbe seguire questi passaggi:

Per eseguire un'elevazione dei privilegi a SYSTEM da un utente locale con "SeImpersonatePrivilege" (ad es., "nt authority\network service"), l'utente potrebbe seguire questi passaggi:
ImpersonateNamedPipeClient() per impersonare i privilegi SYSTEM.