🍞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:

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

> 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 > payload

  • C:\Program File\Micro S0ft > connu

  • C:\Program File\Micro S0ft\Vulnerable.exe > payload

  • C:\Program File\Micro S0ft\Vulnerable service\program.exe > connu

Lancement de l'exploit

Dans cmd

> sc start VulnServ

Dans Powershell

> Service-Start VulnServ

Cela peut demander des droits d'administrateur

Si le service se lance automatiquement au démarrage il est alors possible d'exécuter le payload en redemmarant la machine.

Dernière mise à jour