
En sistemas Windows, se encontró que FortiClient (versión de la aplicación 7.0.8.0427) permite a un usuario remoto sin privilegios coaccionar a los hosts de Windows para que se autentiquen en otras máquinas a través de una tubería con nombre (named pipe) responsable del servicio FortiSSLVPNdaemon.
Se observó que la tubería con nombre "FortiSslvpnNamedPipe" permite LECTURA y ESCRITURA desde cualquier usuario.

La aplicación lee el quinto byte del búfer de la tubería con nombre como código de operación PipeBuffer+4

Se observó que la aplicación leerá un archivo si el código de operación es igual a 24 (es decir, 0x18).
Flujo de código: Case 24 => LABEL_26 => strncpy copia el payload a la variable Buffer => pasa el payload a sub_7FF60C3EAC20 => llama a CreateFileA => ReadFile



Sin embargo, la aplicación no hace nada con el contenido del archivo.
Podemos enviar tráfico manipulado (es decir, "\x00\x00\x00\x00\x18\x00" concatenado con la ruta de destino) a la tubería con nombre vulnerable "FortiSslvpnNamedPipe" para activar el código de operación 24 y obligar al proceso "FortiSSLVPNdaemon.exe" a llamar a CreateFileA con privilegio de SYSTEM. Por lo tanto, podemos forzar al servidor a conectarse a un archivo remoto enviando una ruta UNC (por ejemplo, "\\<IP remota>\<ruta de archivo>") o conectarse a una tubería con nombre local (por ejemplo, "\\127.0.0.1\pipe\<tubería con nombre>").
Para coaccionar a los hosts de Windows a autenticarse en otras máquinas con un usuario remoto no autenticado, el usuario podría seguir los siguientes pasos:

Para realizar una escalada de privilegios a SYSTEM desde un usuario local con "SeImpersonatePrivilege" (por ejemplo, "nt authority\network service"), el usuario podría seguir los siguientes pasos:
ImpersonateNamedPipeClient() para suplantar el privilegio de SYSTEM.