
Une version enrichie de RottenPotatoNG, avec un peu plus de punch, c'est-à-dire un autre outil d'escalade de privilèges locale, depuis un compte de service Windows vers NT AUTHORITY\SYSTEM.
Une version sucrée de RottenPotatoNG, avec un peu de jus, c'est-à-dire un autre outil d'élévation de privilèges locaux, des comptes de service Windows à NT AUTHORITY\SYSTEM
RottenPotatoNG et ses variantes exploitent la chaîne d'élévation de privilèges basée sur le service BITS ayant l'écouteur MiTM sur 127.0.0.1:6666 et lorsque vous avez les privilèges SeImpersonate ou SeAssignPrimaryToken. Lors d'une revue de build Windows, nous avons trouvé une configuration où BITS était intentionnellement désactivé et le port 6666 était occupé.
Nous avons décidé d'armurer RottenPotatoNG : Dites bonjour à Juicy Potato.
Pour la théorie, voir Rotten Potato - Élévation de privilèges des comptes de service à SYSTEM et suivez la chaîne de liens et de références.
Nous avons découvert qu'en plus de BITS, il existe plusieurs serveurs COM que nous pouvons abuser. Ils doivent simplement :
IMarshalAprès quelques tests, nous avons obtenu et testé une liste étendue de CLSID intéressants sur plusieurs versions de Windows.
JuicyPotato vous permet de :
CLSID cible
choisissez n'importe quel CLSID. Ici vous trouverez la liste organisée par OS.
Port d'écoute COM
définissez le port d'écoute COM de votre choix (au lieu du 6666 codé en dur)
Adresse IP d'écoute COM
lier le serveur sur n'importe quelle IP
Mode de création de processus
en fonction des privilèges de l'utilisateur emprunté, vous pouvez choisir entre :
CreateProcessWithToken (nécessite SeImpersonate)CreateProcessAsUser (nécessite SeAssignPrimaryToken)bothProcessus à lancer
lancer un exécutable ou un script si l'exploitation réussit
Argument du processus
personnaliser les arguments du processus lancé
Adresse du serveur RPC
pour une approche furtive, vous pouvez vous authentifier sur un serveur RPC externe
Port du serveur RPC
utile si vous voulez vous authentifier sur un serveur externe et que le pare-feu bloque le port 135...
Mode TEST
principalement à des fins de test, par exemple tester les CLSID. Il crée le DCOM et affiche l'utilisateur du jeton. Voir
T:\>JuicyPotato.exe
JuicyPotato v0.1
Mandatory args:
-t createprocess call: <t> CreateProcessWithToken, <u> CreateProcessAsUser, <*> try both
-p <program>: program to launch
-l <port>: COM server listen port
Optional args:
-m <ip>: COM server listen address (default 127.0.0.1)
-a <argument>: command line argument to pass to program (default NULL)
-k <ip>: RPC server ip address (default 127.0.0.1)
-n <port>: RPC server listen port (default 135)
-c <{clsid}>: CLSID (default BITS:{4991d34b-80a1-4291-83b6-3328366b9097})
-z only test CLSID and print token's user

Si l'utilisateur a les privilèges SeImpersonate ou SeAssignPrimaryToken, alors vous êtes SYSTEM.
Il est presque impossible d'empêcher l'abus de tous ces serveurs COM. Vous pourriez penser à modifier les permissions de ces objets via DCOMCNFG mais bonne chance, cela va être difficile.
La véritable solution est de protéger les comptes et applications sensibles qui s'exécutent sous les comptes * SERVICE.
Arrêter DCOM inhiberait certainement cette exploitation mais pourrait avoir un impact sérieux sur le système d'exploitation sous-jacent.
Une compilation automatique est disponible. Les binaires peuvent être téléchargés depuis la section Artifacts ici.
Également disponible dans BlackArch.