# Unquoted Service Path

## Introduction

La vulnérabilité Unquoted Service Path intervient lorsqu'un service dont le chemin contient des espaces qui ne sont pas mis entre guillemets est créé. Dans un tel contexte, un utilisateur ayant des droits d'écriture dans le répertoire sous-jacent à celui/ceux contenant un espace a la possibilité d'executer un script malveillant pouvant dans le meilleur des cas lui donner un accès en tant que authority nt/system à la machine.

### Pourquoi ?

Cette vulnérabilité est rendue possible par une mauvaise gestion des caractères espace. Windows lorsqu'il rencontre des espaces qui ne sont pas entre guillemets va tenter d'exécuter la première chaîne de caractères puis mettre le reste du chemin en argument.

Exemple:&#x20;

Si Windows rencontre un chemin tel que:

C:\Program Files\Micro S0ft\Vulnerable service\program.exe

Il suivra la demarche suivante:

* C:\Program.exe
* C:\Program File\Micro.exe
* C:\Program File\Micro S0ft
* C:\Program File\Micro S0ft\Vulnerable.exe
* C:\Program File\Micro S0ft\Vulnerable service\program.exe

## Detection

### Avec WMI

```
> wmi win32_service | select Name, DisplayName, StartMode, PathName | sls Auto | sls -NotMatch Windows,'"'
```

### Avec PowerUp.ps1

```powershell
> Import-Module .\PowerUp.ps1
> Get-UnquotedService
```

ressource: <https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1>

### Avec winpeas

```
> winPEASx64.exe quiet servicesinfo
```

## Exploitation

Exemple de chemin vulnérable:

Service "VulnServ" dans chemin "C:\Program Files\Micro S0ft\Vulnerable service\program.exe".

Ici, nous avons donc deux points potentiellement exploitables qui sont "Micro S0ft" ou "Vulnerable service".

Dans ce cas il nous faut tester les droits d'écriture dans les repertoires "Program Files" et "Micro S0ft".

Si on a les droits d'écriture dans Program Files, alors on peut y placer notre payload au nom de "Micro.exe".

Dans le cas ou on aurait les droits dans Micro S0ft, on peut y placer notre payload au nom de "Vulnerable.exe".

La demarche de windows sera alors la suivante:

* C:\Program.exe > inconnu
* C:\Program File\Micro.exe > <mark style="color:red;">payload</mark>
* C:\Program File\Micro S0ft > connu
* C:\Program File\Micro S0ft\Vulnerable.exe > <mark style="color:red;">payload</mark>
* C:\Program File\Micro S0ft\Vulnerable service\program.exe > connu

### Lancement de l'exploit

#### Dans cmd

<pre><code><strong>> sc start VulnServ
</strong></code></pre>

#### Dans Powershell

```powershell
> Service-Start VulnServ
```

{% hint style="warning" %}
Cela peut demander des droits d'administrateur
{% endhint %}

{% hint style="info" %}
Si le service se lance automatiquement au démarrage il est alors possible d'exécuter le payload en redemmarant la machine.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.s1rn3tz.ovh/post-exploitation/enumeration-elevation-de-privileges/windows/unquoted-service-path.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
