Zapis eskalacji uprawnień / etc / passwd, ale bez pozwolenia SUID na su

Dec 16 2020

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

3 RoryMcCune Dec 16 2020 at 23:46

Na standardowym hoście Linux (maszyna wirtualna lub serwer), jeśli masz dostęp /etc/passwdlub /etc/shadowmożesz modyfikować lub dodawać poświadczenia do kont, co oczywiście stanowiłoby poważny problem ( /etc/passwdw 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/passwdtego, modyfikacja może mieć wpływ, ale będzie to zależne od tego, co robi kontener.