Writable Sys Path +Dll Hijacking Privesc
Wprowadzenie
Jeśli odkryłeś, że możesz pisać w folderze System Path (zauważ, że to nie zadziała, jeśli możesz pisać w folderze User Path), istnieje możliwość, że możesz eskalować uprawnienia w systemie.
Aby to zrobić, możesz wykorzystać Dll Hijacking, gdzie przechwycisz bibliotekę, która jest ładowana przez usługę lub proces z większymi uprawnieniami niż Twoje, a ponieważ ta usługa ładuje Dll, który prawdopodobnie nie istnieje w całym systemie, spróbuje go załadować z System Path, gdzie możesz pisać.
Aby uzyskać więcej informacji na temat czym jest Dll Hijacking, sprawdź:
pageDll HijackingPrivesc z Dll Hijacking
Znalezienie brakującego Dll
Pierwszą rzeczą, którą musisz zrobić, jest zidentyfikowanie procesu, który działa z większymi uprawnieniami niż Ty i próbuje załadować Dll z System Path, w którym możesz pisać.
Problem w tych przypadkach polega na tym, że prawdopodobnie te procesy już działają. Aby dowiedzieć się, które pliki .dll brakuje usługom, musisz uruchomić procmon tak szybko jak to możliwe (przed załadowaniem procesów). Więc, 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ź doOpcje
-->Włącz logowanie rozruchu
i naciśnijOK
w oknie dialogowym.Następnie zrestartuj system. Po ponownym uruchomieniu komputera
procmon
rozpocznie rejestrację zdarzeń natychmiast.Gdy Windows się uruchomi, uruchom ponownie
procmon
, program poinformuje Cię, że działał i zapyta, czy chcesz zapisać zdarzenia w pliku. Wybierz tak i zapisz zdarzenia w pliku.Po wygenerowaniu pliku, zamknij otwarte okno
procmon
i otwórz plik zdarzeń.Dodaj te filtry, aby znaleźć wszystkie biblioteki DLL, które próbowały zostać załadowane z zapisalnego folderu Ścieżki Systemowej:
Brakujące DLL
Uruchamiając to na darmowej wirtualnej maszynie Windows 11 (vmware), otrzymałem następujące wyniki:
W tym przypadku pliki .exe są bezużyteczne, więc zignoruj je, brakujące DLL pochodziły z:
Usługa | Dll | Wiersz poleceń |
---|---|---|
Harmonogram zadań (Schedule) | WptsExtensions.dll |
|
Usługa zasad diagnostycznych (DPS) | Unknown.DLL |
|
??? | SharedRes.dll |
|
Po znalezieniu tego, natrafiłem na interesujący post na blogu, który również wyjaśnia, jak wykorzystać WptsExtensions.dll do eskalacji uprawnień. To właśnie zamierzamy teraz zrobić.
Wykorzystanie
Aby zwiększyć uprawnienia, zamierzamy przejąć bibliotekę WptsExtensions.dll. Mając ścieżkę i nazwę, musimy tylko wygenerować złośliwą bibliotekę DLL.
Możesz spróbować użyć któregoś z tych przykładów. Możesz uruchamiać ładunki takie jak: uzyskać powłokę rev, dodać użytkownika, wykonać beacon...
Zauważ, że nie wszystkie usługi są uruchamiane z kontem NT AUTHORITY\SYSTEM
, niektóre są również uruchamiane z kontem NT AUTHORITY\LOCAL SERVICE
, które ma mniej uprawnień, i nie będziesz mógł utworzyć nowego użytkownika, nadużyć jego uprawnień.
Jednak ten użytkownik ma uprawnienie seImpersonate
, więc możesz użyć pakietu potato do eskalacji uprawnień. W tym przypadku powłoka rev jest lepszą opcją niż próba utworzenia użytkownika.
W chwili pisania usługa Harmonogram zadań jest uruchamiana z kontem NT AUTHORITY\SYSTEM.
Po wygenerowaniu złośliwej biblioteki DLL (w moim przypadku użyłem powłoki rev x64 i uzyskałem powłokę, ale defender ją zabił, ponieważ pochodziła z msfvenom), zapisz ją w zapisalnym folderze Ścieżki Systemowej pod nazwą WptsExtensions.dll i zrestartuj komputer (lub zrestartuj usługę lub wykonaj inne czynności, aby ponownie uruchomić dotkniętą usługę/program).
Gdy usługa zostanie ponownie uruchomiona, biblioteka DLL powinna zostać załadowana i wykonana (możesz ponownie użyć sztuczki z procmonem, aby sprawdzić, czy biblioteka została załadowana zgodnie z oczekiwaniami).
Last updated