ld.so privesc exploit example
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
W poniższej sekcji znajdziesz kod plików, które zamierzamy użyć do przygotowania środowiska
Utwórz te pliki na swoim komputerze w tym samym folderze
Skompiluj bibliotekę: gcc -shared -o libcustom.so -fPIC libcustom.c
Skopiuj libcustom.so
do /usr/lib
: sudo cp libcustom.so /usr/lib
(uprawnienia root)
Skompiluj wykonywalny: gcc sharedvuln.c -o sharedvuln -lcustom
Sprawdź, czy libcustom.so jest ładowane z /usr/lib i czy możesz wykonać binarny.
W tym scenariuszu zakładamy, że ktoś stworzył podatny wpis w pliku /etc/ld.so.conf/:
The vulnerable folder is /home/ubuntu/lib (gdzie mamy dostęp do zapisu). Pobierz i skompiluj następujący kod w tym katalogu:
Teraz, gdy utworzyliśmy złośliwą bibliotekę libcustom w źle skonfigurowanej ścieżce, musimy poczekać na ponowne uruchomienie lub na to, aby użytkownik root wykonał ldconfig
(jeśli możesz wykonać ten plik binarny jako sudo lub ma on bit suid, będziesz mógł go wykonać samodzielnie).
Gdy to nastąpi, sprawdź ponownie, skąd wykonywalny plik sharevuln
ładuje bibliotekę libcustom.so
:
Jak widać, ładowanie odbywa się z /home/ubuntu/lib
i jeśli jakikolwiek użytkownik to uruchomi, zostanie uruchomiona powłoka:
Zauważ, że w tym przykładzie nie podnieśliśmy uprawnień, ale modyfikując wykonywane polecenia i czekając na to, aby root lub inny użytkownik z uprawnieniami wykonał podatny plik binarny, będziemy w stanie podnieść uprawnienia.
W poprzednim przykładzie sfałszowaliśmy błędną konfigurację, w której administrator ustawił folder bez uprawnień w pliku konfiguracyjnym w /etc/ld.so.conf.d/
.
Jednak istnieją inne błędne konfiguracje, które mogą powodować tę samą lukę; jeśli masz uprawnienia do zapisu w jakimś pliku konfiguracyjnym w /etc/ld.so.conf.d
, w folderze /etc/ld.so.conf.d
lub w pliku /etc/ld.so.conf
, możesz skonfigurować tę samą lukę i ją wykorzystać.
Załóżmy, że masz uprawnienia sudo do ldconfig
.
Możesz wskazać ldconfig
, skąd ładować pliki konfiguracyjne, więc możemy to wykorzystać, aby ldconfig
ładował dowolne foldery.
Więc stwórzmy pliki i foldery potrzebne do załadowania "/tmp":
Teraz, jak wskazano w poprzednim exploicie, stwórz złośliwą bibliotekę w /tmp
.
A na koniec załadujmy ścieżkę i sprawdźmy, skąd binarny plik ładuje bibliotekę:
Jak widać, mając uprawnienia sudo do ldconfig
, możesz wykorzystać tę samą podatność.
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)