# 4. Local Privilege Escalation Part 1
Centrandonos en los problemas con los servicios y escalada de privilegios locales.
Si eliminamos el secuestro de dll, los problemas de servicio se pueden clasificar en 3 tipos:
### Get services with unquoted paths and a space in their name
```
Get-ServiceUnquoted -Verbose
```
Vulnerabilidad de la ruta sin comillas, donde el bin path del servicio usa una ruta codificada y hay un espacio en el nombre que nos permite colocar un ejecutable.
Hay servicios donde podemos modificar su ruta binaria o cambiar los argumentos para que alteremos su funcionalidad.
Podemos verificar los permisos de los servicios, si en caso estos no están configurados correctamente y si hay una opción para cambiar las propiedades interesantes del servicio.
- Para ver todas las rutas de todos los servicios
```
Get-wmiObject -Class win32_service | fl *
Get-wmiObject -Class win32_service | select pathname
```

### Get services where the current user can write to its binary path or change arguments to the binary
```
Get-ModifiableServiceFile -Verbose
```
Esto consiste en obtener o recuperar servicios donde el usuario actual puede anular su binario o cambiar los argumentos
### Get the services whose configuration current user can modify
```
Get-ModifiableServiceFile -Verbose
```
Consiste en modificar el servicio en sí mismo y hacer que apunte temporalmente a otro ejecutable, esto es posible con suficientes permisos en el servicio.
## Herramientas a usar
- PowerUp
```
Invoke-AllChecks
```
- BeRoot
```
.\beRoot.exe
```
- Privesc
```
Invoke-PrivEsc
```
## POC
### PowerUP
~~~
.\PowerUp.ps1
Invoke-AllChecks
~~~

Hay un espacio en el Path
Algo a tener en cuenta con la vulnerabilidad de las comillas es que el servicio se ejecuta con LocalSystem, privilegios mas altos, esto se ve en:
StartName : LocalSystem
Lo segundo es que debemos tener la capacidad para reiniciar el servicio a nuestra voluntad, aunque también es puede esperar que alguien reinicie este mismo:
CanRestart : True
~~~
Get-WmiObject -Class win32_service | select pathname
~~~
Falso positivo:

Puesto que se necesita crear un Program.exe en la ruta C:\, lo cual no es posible puesto que se necesitan privilegios administrativos.
También se puede modificar el ejecutable `abyssws.exe` debido a que tenemos permisos de modificación en el path.

O también podemos tener permisos para cambiar el path del servicio AbysswebServer, es decir, hacer que el servicio apunte a otro ejecutable

### beRoot
```
.\beRoot.exe
```
Primero verifica los servicios cuya configuración podría modificarse:

También una ruta de escritura sin comillas:

Y por último, el binario se encuentra ubicado en un directorio en el cual tenemos permisos de escritura:

### privesc
```
. .\privesc.ps1
Invoke-Privesc
```
