NFsec Logo

Uciekając z sudo – część pierwsza

18/08/2014 w Bezpieczeństwo Brak komentarzy.  (artykuł nr 453, ilość słów: 410)

S

udo jest narzędziem stosowanym w świecie systemów Unix i Linux do „bezpiecznego” ograniczenia dostępów do poleceń i plików wymagających praw administratora. Różni się tym od polecenia su -, że su daje natychmiastowy dostęp do konta root. Sudo natomiast pozwala na dostrojenie, które rzeczywiście polecenia mogą zostać uruchomione z wyższymi uprawnieniami. Problem z sudo jest taki, że nie jest ono w stanie przewidzieć / ograniczyć dalszych działań uprawnionych programów, ani upewnić się, że środowisko wokół tych programów nie posiada żadnych luk konfiguracyjnych, które mogą negatywnie wpłynąć na rozszerzenie nadanych praw.

Prostym przykładem będzie zezwolenie wszystkim użytkownikom należącym do grupy users do wykonywania prostego polecenia less z prawami administratora, tak aby mogli oni czytać przykładowy plik /etc/named.conf. W tym celu dodajemy odpowiedni wpis do pliku /etc/sudoers

%users ALL=/usr/bin/less /etc/named.conf

Jako użytkownik należący do grupy users możemy teraz wydać polecenie:

sudo less /etc/named.conf

Oczywiście system poprosi nas o podanie hasła (aktualnego użytkownika, nie administratora). Raz wpisane hasło powinno wyświetlić nam zawartość pliku konfiguracyjnego serwera DNS, a w dzienniku aktywności programu sudo pojawi się wpis podobny do tego:

Aug 17 21:24:27 darkstar sudo:  agresor : TTY=pts/0 ; PWD=/home/agresor ;
USER=root ; COMMAND=/usr/bin/less /etc/named.conf

Widzimy informację, która zapisała nam datę i czas; kto wykonał polecenie; z jakiego terminala; w jakim katalogu aktualnie się znajdował; jaki poziom uprawnień uzyskał; jakie polecenie wraz z opcjami zostało wykonane (w tym przypadku ścieżka do pliku). Wracając do naszego polecenia less, które cały czas wyświetla nam zawartość pliku… Wydajmy w nim następującą komendę:

! [Enter]

Czyli wpisujemy znak wykrzyknika i naciskamy klawisz Enter. W tym momencie powinna zgłosić się nam powłoka z uprawnieniami administratora. Dla pewności możemy wydać polecenie: whoami, które rozwieje nasze wątpliwości:

[agresor@darkstar ~]$ sudo less /etc/named.conf
[sudo] password for agresor:
[root@darkstar agresor]# whoami
root

I tak oto uciekliśmy z ograniczenia programu, a wydanie polecenia whoami, czy uruchomienie pełnej powłoki administratora nie wygenerowało nawet pojedynczego wpisu w logach bezpieczeństwa systemu. Innymi słowy – raz uruchomiona powłoka za pomocą polecenia less pozwala nam na dowolne działania, które nie zostaną odnotowane przez program sudo, a jedynie w pliku .bash_history użytkownika root (który możemy teraz wyczyścić).

Nauka z powyższej historii wynika, że nie możemy przyznawać podwyższonego dostępu do narzędzi, które pozwalają na uruchamianie powłoki jako subprocesów. Przeszukując podręcznik pomocy polecenia less pod kątem słowa kluczowego shell przed przyznaniem uprawnień byśmy byli w stanie uniknąć tego błędu i zamiast nadać je dla programu less – wybrali raczej bezpieczną alternatywę, czyli cat.

Więcej informacji: Breaking out of a sudo shell

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , ,

Zostaw odpowiedź.

Musisz być zalogowany by móc komentować.