Poważny błąd w dystrybucji Trixbox

Krótko wprowadzając, dystrybucja Trixbox to system, który z założenia ma pełnić funkcje centrali telefonicznej (za pomocą oprogramowania centrali o otwartym kodzie źródłowym Asterisk). Choć sama dystrybucja zasadniczo jest instalowana na maszynach w sieciach wewnętrznych, niedostępnych bezpośrednio z sieci Internet to do napisania niniejszej wiadomości skłoniło mnie opublikowanie błędu umożliwiającego uzyskanie uprawnień administratora (root) poprzez główny panel zarządzający całym systemem (WWW).

Pierwsza część błędu znajduje się w aplikacji WWW odpowiedzialnej za zarządzanie systemem. Istnieje możliwość przemycenia do zmiennej langChoice, wysłanej za pomocą metody POST, wartości innej niż zakłada aplikacja. Aby działała sztuczka ze znakiem %00 musimy posiadać wersję PHP nie odporną na tego typu atak. W dystrybucji Trixbox akurat z taką mamy do czynienia. Dodatkowo ustawienia PHP muszą umożliwiać nam wykonanie powyższych akcji – akurat w wypadku Trixboxa – umożliwiają.
Trik polega na przesłaniu danych sesyjnych, które zawierać będą złośliwy kod (choćby uruchomienie dowolnej komendy). Dane te – zostaną zapisane w pliku /tmp/sess_$idsesji. $idsesji jest nam znane. W związku z tym wracając do naszego początkowego błędu, załączamy plik znajdujący się lokalnie na serwerze langChoice=../../../../../../../../../../tmp/sess_$phpsessionid%00, a w nim znajdują się uprzednio przesłane dane. Oznaczają one tyle, że użytkownik asterisk będzie posiadał uprawnienia do uruchamiania powyższych poleceń z uprawnieniami administratora (poprzez systemowy wrapper sudo).
Najciekawsza jest tutaj ostatnia linijka, która oznacza tyle, że zalogowany jako użytkownik asterisk (użytkownik centralki telefonicznej) możemy uruchomić powłokę /bin/bash z uprawnieniami administratora (bez podawania nawet swojego hasła).
Znów reasumując. Wysyłamy zdalny kod na serwer, załączamy go do interpretera PHP i uruchamiamy. Za pomocą komendy: sudo /bin/bash uzyskujemy uprawnienia administratora [oklaski].

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

  1. Awatar soda2
    soda2

    wydaje mi się że to miałą być wiadomość a nie howto 😉

  2. Awatar krzy
    krzy

    Chyba nie wszystko się ze źródła skopiowało, w związku z tym tekst jest miejscami niejasny. Ale nie ważne.

    Exploit opiera się na istnieniu dwóch błędów, tj.:

    1. Użycie zmiennej na którą ma wpływ użytkownik w funckji PHP include().

    2. Umożliwieniu web aplikacji wykonania polecenia "sudo bash".

    O ile pierwszy jeszcze można jakoś zrozumieć (aczkolwiek jest to błąd wręcz podręcznikowy), to drugi jest zupełnie dyskwalifikujący.

    1. Awatar haael
      haael

      PHP jest bezpieczne tylko, kiedy jest odinstalowane.

      1. Awatar pudlo
        pudlo

        Z takim podejściem napewno napiszesz dużo bezpiecznych aplikacji web w innych językach.

  3. Awatar morsik
    morsik

    Czy autorzy nie umią się wysilić i czegoś napisać samodzielnie?

    Przecież to jest żywcem skopiowane z innego serwisu!

    1. Awatar randomek1
      randomek1

      Autor tekstu samodzielnie napisał tekst i samodzielnie dodał do osnews.pl :] Więc wszystko jest w znamienitym porządku.
      pozdrawiam

  4. Awatar dzikus
    dzikus

    Jakość newsa żałosna.

    Do tego trixbox wyłącza najfajnieszą imho fukncjonalność CentOS czyli selinux'a.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *