
Exploit für CVE-2024-40586: zwingt Windows-Hosts zur Authentifizierung über eine anfällige FortiClient Named Pipe, was eine Privilegienausweitung auf SYSTEM oder laterale Bewegung durch Relay-Angriffe ermöglicht.
Auf Windows-Systemen wurde festgestellt, dass FortiClient (App-Version 7.0.8.0427) einem entfernten, nicht privilegierten Benutzer erlaubt, Windows-Hosts zu zwingen, sich über eine benannte Pipe, die für den FortiSSLVPNdaemon-Dienst zuständig ist, gegenüber anderen Maschinen zu authentifizieren.
Es wurde beobachtet, dass die benannte Pipe "FortiSslvpnNamedPipe" Lese- und Schreibzugriff von jedem Benutzer erlaubt.

Die App liest das 5. Byte des Puffers aus der benannten Pipe als Opcode PipeBuffer+4

Es wurde beobachtet, dass die App eine Datei liest, wenn der Opcode gleich 24 (d.h. 0x18) ist.
Codeablauf: Case 24 => LABEL_26 => strncpy kopiert Payload in Variable Buffer => übergibt Payload an sub_7FF60C3EAC20 => Aufruf von CreateFileA => ReadFile



Allerdings unternimmt die Anwendung nichts mit dem Dateiinhalt.
Wir können einen manipulierten Traffic (d.h. "\x00\x00\x00\x00\x18\x00" verkettet mit dem Zielpfad) an die anfällige benannte Pipe "FortiSslvpnNamedPipe" senden, um Opcode 24 auszulösen und den Prozess "FortiSSLVPNdaemon.exe" zu zwingen, CreateFileA mit SYSTEM-Berechtigungen aufzurufen. Dadurch können wir den Server zwingen, eine entfernte Datei über einen UNC-Pfad (z.B. "\\<remote ip>\<file path>") zu verbinden oder eine lokale benannte Pipe (z.B. "\\127.0.0.1\pipe\<named pipe>") zu verbinden.
Um Windows-Hosts von einem entfernten, nicht authentifizierten Benutzer zur Authentifizierung gegenüber anderen Maschinen zu zwingen, kann der Benutzer die folgenden Schritte ausführen:

Um eine Privilegienausweitung auf SYSTEM von einem lokalen Benutzer mit "SeImpersonatePrivilege" (z.B. "nt authority\network service") durchzuführen, kann der Benutzer die folgenden Schritte ausführen:
ImpersonateNamedPipeClient() auf, um SYSTEM-Berechtigungen zu erlangen.