Writable Sys Path +Dll Hijacking Privesc
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wprowadzenie
Jeśli odkryłeś, że możesz zapisywać w folderze System Path (zauważ, że to nie zadziała, jeśli możesz zapisywać w folderze User Path), istnieje możliwość, że możesz eskalować uprawnienia w systemie.
Aby to zrobić, możesz wykorzystać Dll Hijacking, gdzie zamierzasz przejąć bibliotekę ładowaną przez usługę lub proces z wyższymi uprawnieniami niż twoje, a ponieważ ta usługa ładuje Dll, która prawdopodobnie nawet nie istnieje w całym systemie, spróbuje załadować ją z System Path, w którym możesz zapisywać.
Aby uzyskać więcej informacji na temat czym jest Dll Hijacking, sprawdź:
Dll HijackingEskalacja uprawnień z Dll Hijacking
Znalezienie brakującej Dll
Pierwszą rzeczą, którą musisz zrobić, jest zidentyfikowanie procesu działającego z wyższymi uprawnieniami niż ty, który próbuje załadować Dll z System Path, w którym możesz zapisywać.
Problem w tych przypadkach polega na tym, że prawdopodobnie te procesy już działają. Aby znaleźć, które Dll brakuje usługom, musisz uruchomić procmon tak szybko, jak to możliwe (zanim procesy zostaną załadowane). Aby znaleźć brakujące .dll, wykonaj:
Utwórz folder
C:\privesc_hijacking
i dodaj ścieżkęC:\privesc_hijacking
do zmiennej środowiskowej System Path. Możesz to zrobić ręcznie lub za pomocą PS:
Uruchom
procmon
i przejdź doOptions
-->Enable boot logging
i naciśnijOK
w oknie dialogowym.Następnie zrestartuj komputer. Gdy komputer się uruchomi,
procmon
zacznie rejestrować zdarzenia jak najszybciej.Po uruchomieniu Windows uruchom ponownie
procmon
, powie ci, że działa i zapyta, czy chcesz zapisać zdarzenia w pliku. Powiedz tak i zapisz zdarzenia w pliku.Po wygenerowaniu pliku, zamknij otwarte okno
procmon
i otwórz plik ze zdarzeniami.Dodaj te filtry, a znajdziesz wszystkie Dll, które niektóre procesy próbowały załadować z folderu zapisywalnego System Path:
Przegapione Dll
Uruchamiając to na darmowej wirtualnej maszynie (vmware) Windows 11 uzyskałem te wyniki:
W tym przypadku .exe są bezużyteczne, więc je zignoruj, przegapione DLL pochodziły od:
Usługa | Dll | Linia CMD |
---|---|---|
Harmonogram zadań (Schedule) | WptsExtensions.dll |
|
Usługa polityki diagnostycznej (DPS) | Unknown.DLL |
|
??? | SharedRes.dll |
|
Po znalezieniu tego, znalazłem ten interesujący post na blogu, który również wyjaśnia, jak nadużyć WptsExtensions.dll do podniesienia uprawnień. Co właśnie zamierzamy teraz zrobić.
Wykorzystanie
Aby podnieść uprawnienia, zamierzamy przejąć bibliotekę WptsExtensions.dll. Mając ścieżkę i nazwę, musimy tylko wygenerować złośliwy dll.
Możesz spróbować użyć któregokolwiek z tych przykładów. Możesz uruchomić payloady takie jak: uzyskać powłokę rev, dodać użytkownika, wykonać beacon...
Zauważ, że nie wszystkie usługi są uruchamiane z NT AUTHORITY\SYSTEM
, niektóre są również uruchamiane z NT AUTHORITY\LOCAL SERVICE
, co ma mniejsze uprawnienia i nie będziesz mógł stworzyć nowego użytkownika nadużywając jego uprawnień.
Jednak ten użytkownik ma uprawnienie seImpersonate
, więc możesz użyć potato suite do podniesienia uprawnień. W tym przypadku powłoka rev jest lepszą opcją niż próba stworzenia użytkownika.
W momencie pisania usługa Harmonogram zadań jest uruchamiana z Nt AUTHORITY\SYSTEM.
Mając wygenerowany złośliwy Dll (w moim przypadku użyłem x64 rev shell i uzyskałem powłokę, ale defender ją zabił, ponieważ pochodziła z msfvenom), zapisz go w zapisywalnym System Path pod nazwą WptsExtensions.dll i zrestartuj komputer (lub zrestartuj usługę lub zrób cokolwiek, aby ponownie uruchomić dotkniętą usługę/program).
Gdy usługa zostanie ponownie uruchomiona, dll powinien zostać załadowany i wykonany (możesz ponownie użyć sztuczki procmon, aby sprawdzić, czy biblioteka została załadowana zgodnie z oczekiwaniami).
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)
Last updated