
Exploit pour CVE-2024-40586 : force les hôtes Windows à s'authentifier via un named pipe vulnérable de FortiClient, permettant une élévation de privilèges vers SYSTEM ou un mouvement latéral via des attaques par relais.
Sur système Windows, il a été découvert que FortiClient (version d'application 7.0.8.0427) permet à un utilisateur distant non privilégié de forcer des hôtes Windows à s'authentifier auprès d'autres machines via un pipe nommé responsable du service FortiSSLVPNdaemon.
Il a été observé que le pipe nommé « FortiSslvpnNamedPipe » autorise la lecture et l'écriture depuis n'importe quel utilisateur.

L'application lit le 5ème octet du tampon du pipe nommé comme code d'opération PipeBuffer+4

Il a été observé que l'application lit un fichier si le code d'opération est égal à 24 (i.e., 0x18)
Flux du code : Case 24 => LABEL_26 => strncpy copie la charge utile dans la variable Buffer => passe la charge utile à sub_7FF60C3EAC20 => appelle CreateFileA => ReadFile



Cependant, l'application ne fait rien avec le contenu du fichier.
Nous pouvons envoyer un trafic forgé (c'est-à-dire "\x00\x00\x00\x00\x18\x00" concaténé avec le chemin cible) au pipe nommé vulnérable "FortiSslvpnNamedPipe" pour déclencher le code d'opération 24 et forcer le processus "FortiSSLVPNdaemon.exe" à appeler CreateFileA avec le privilège SYSTEM. Ainsi, nous pouvons forcer le serveur à se connecter à un fichier distant en soumettant un chemin UNC (par exemple, "\\<ip distante>\<chemin du fichier>") ou à se connecter à un pipe nommé local (par exemple, "\\127.0.0.1\pipe\<pipe nommé>")
Pour forcer des hôtes Windows à s'authentifier auprès d'autres machines avec un utilisateur distant non authentifié, l'utilisateur pourrait suivre les étapes :

Pour effectuer une élévation de privilèges vers SYSTEM à partir d'un utilisateur local disposant de « SeImpersonatePrivilege » (par exemple, « nt authority\network service »), l'utilisateur pourrait suivre les étapes :
ImpersonateNamedPipeClient() pour usurper le privilège SYSTEM.