Zapis eskalacji uprawnień / etc / passwd, ale bez pozwolenia SUID na su
To nie jest ćwiczenie, może nie być rozwiązania.
Tworzymy obraz Dockera (oparty na CentOS), który jest przeznaczony do wykonania przez użytkownika innego niż root. Jednak ten użytkownik ma prawa zapisu do / etc / passwd, ponieważ znajduje się w grupie "root". Oto uprawnienia / etc / passwd:
-rw-rw-r-- 1 root root 692 Dec 16 14:35 /etc/passwd
Jest to krytyczna wada, która ma umożliwić łatwą eskalację uprawnień. Mogę dodać użytkownika do / etc / passwd.
Ale nie mogę przełączyć się na tego użytkownika, ponieważ su nie ma uprawnienia SUID:
-rwxr-xr-x 1 root root 32128 Sep 30 17:46 /bin/su
W rezultacie użytkownik nie ma wystarczających uprawnień do pomyślnego wykonania su:
su: cannot set groups: Operation not permitted
Jak zrozumiałem, w większości Linuksa polecenie su jest skonfigurowane z uprawnieniem SUID. Oznacza to, że ktokolwiek wykonuje su, jest uważany za wykonanego przez użytkownika root. Inną alternatywą może być zabawa z możliwościami. Przypuszczam, że CAP_SETGID i CAP_SETUID są wymagane, a może i kilka innych. Jeśli su został skonfigurowany z tymi możliwościami, uprawnienie SUID może nie być potrzebne. Ale w naszym obrazie Dockera nie ma możliwości na su. Wygląda więc na to, że tylko root może poprawnie wykonać su.
Ponadto sudo nie jest zainstalowane i nie jest uruchomiony żaden sshd / telnetd.
Jak więc mogę użyć poświadczeń dodanych do / etc / passwd? Curl jest dostępny, jeśli to może pomóc.
Odpowiedzi
Na standardowym hoście Linux (maszyna wirtualna lub serwer), jeśli masz dostęp /etc/passwd
lub /etc/shadow
możesz modyfikować lub dodawać poświadczenia do kont, co oczywiście stanowiłoby poważny problem ( /etc/passwd
w tej odpowiedzi są szczegóły dotyczące konsekwencji zezwolenia na modyfikację
W kontenerze Dockera zwykle oprogramowanie korzystające z tych plików nie jest instalowane, więc nie ma Linux PAM, SSHD ani innego oprogramowania, które korzystałoby z bazy danych uwierzytelniania.
Bez zainstalowania tego typu oprogramowania niewiele można zrobić, ponieważ nie ma programów, które operują na tych plikach.
Oczywiście, jeśli aplikacja uruchomiona w kontenerze korzysta z /etc/passwd
tego, modyfikacja może mieć wpływ, ale będzie to zależne od tego, co robi kontener.