๐Ÿž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