# Vulnerability Type: Unquoted Service Path(No soy experto pero entiendo esto:)
Implica que un proceso (servicio en este caso) busca un ejecutable en una ruta, PERO dicha ruta tienes espacios en blanco (
C:\Program files (x86)) y no tiene comillas (unquoted) lo que obliga al sistema operativo a "adivinar", por ejemplo:
Primero inicio Process Monitor y le digo que solo me muestre el Acceso a Archivos
Luego:
1. Creo un servicio, los servicios se ejecutan por defecto como SYSTEM mediante el proceso services.exe
2. Consulto mediante WMIC el Nombre y la Ruta del servicio, obtengo que mi ruta no tiene comillaas (UnQuoted)
3. Ejecuto mi servicio en una ventana aparte ( Start /Min )
4. Reviso mediante TaskList el proceso wordpad.exe y veo que el usuario que lo ejecuto es: SYSTEM
5. Reviso el LOG de Process Monitor y veo que hay intensiones de buscar y ejecutar "
C:\Program.exe", "
C:\Program Files\Windows.exe" y finalmente "
C:\Program Files\Windows NT\Accessories\wordpad.exe", este ultimo se ejecuta sin problemas
C:\Windows\system32>SC Create "MyWordpad" BinPath="C:\Program Files\Windows NT\Accessories\wordpad.exe" Start="AUTO" DisplayName="My Wordpad"
[SC] CreateService CORRECTO
C:\Windows\system32>WMIC Service Get Name, PathName | FindStr MyWordpad
MyWordpad C:\Program Files\Windows NT\Accessories\wordpad.exe <===== Ruta sin comillas OJO
C:\Windows\system32>Start /Min SC Start "MyWordpad"
C:\Windows\system32>TaskList /V /FI "ImageName EQ wordpad.exe"
Nombre de imagen PID Nombre de sesión Núm. de ses Uso de memor Estado Nombre de usuario
================ ===== ================ =========== ============
wordpad.exe 1312 Services 0 26.628 KB Unknown NT AUTHORITY\SYSTEM
Process Monitor LOG:services.exe 524 CreateFile C:\Program NAME NOT FOUND
services.exe 524 CreateFile C:\Program.exe NAME NOT FOUND
services.exe 524 CreateFile C:\Program Files\Windows NAME NOT FOUND
services.exe 524 CreateFile C:\Program Files\Windows.exe NAME NOT FOUND
services.exe 524 CreateFile C:\Program Files\Windows NT\Accessories\wordpad.exe SUCCESS
El Bug está ahí, alguien puede poner un archivo "
C:\Program.exe" o "
C:\Program Files\Windows.exe" y este se ejecutaria como
SYSTEMPor esto, el servicio debería ser creado especificando comillas (En Batch hay que escaparlas con
\"):
C:\Windows\system32>SC Delete "MyWordpad"
[SC] DeleteService CORRECTO
C:\Windows\system32>SC Create "MyWordpad" BinPath="\"C:\Program Files\Windows NT\Accessories\wordpad.exe\"" Start="AUTO" DisplayName="My Wordpad"
[SC] CreateService CORRECTO
C:\Windows\system32>WMIC Service Get Name, PathName | FindStr MyWordpad
MyWordpad "C:\Program Files\Windows NT\Accessories\wordpad.exe" <=== Ruta con comillas
C:\Windows\system32>Start /Min SC Start "MyWordpad"
Luego se ve en Process Explorer que directamente se llamo a "
C:\Program Files\Windows NT\Accessories\wordpad.exe"
services.exe 524 CloseFile C:\Windows\Temp SUCCESS
services.exe 524 CreateFile C:\Program Files\Windows NT\Accessories\wordpad.exe SUCCESS
services.exe 524 QueryBasicInformationFile C:\Program Files\Windows NT\Accessories\wordpad.exe SUCCESS
-----
Hay que considerar una serie de cosas, como bien dice:
#Exploit:
# 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.
- Si se tienen permisos para poner un archivo .exe en las rutas que muestra Process Monitor como
C:\Program.exe y
C:\Program Files\Windows.exe , pues estos se ejecutarían como System, ahora tambien considerar que un usuario normal no debería de poder escribir en estas rutas SALVO que el programa de instalación de dicho servicio haya cambiado permisos a estas rutas y se tengan los permisos, otra cosa a considerar también es que un usuario sin privilegios no puede iniciar servicios, por esto habría que esperar a que la PC reinicie y si el servicio tiene puesto el Flag para Autoiniciar, pues listo.