Testy penetracyjne aplikacji WWW – przykład ciekawego raportu

dodał 13 września 2017 o 06:30 w kategorii Info  z tagami:
Testy penetracyjne aplikacji WWW – przykład ciekawego raportu

Choć na świecie codziennie przeprowadzane pewnie są dziesiątki, jak nie setki pentestów, to raporty z nich lądują najczęściej w zamkniętych szufladach, by nie ujrzeć nigdy światła dziennego. Na szczęście czasem można je jednak poczytać.

Firma Securitum opublikowała własnie pełny raport z testów bezpieczeństwa rozbudowanej aplikacji WWW – systemu CRM YetiForce. Warto tutaj podziękować klientowi za zgodę na publikację – mało kto decyduje się na taką transparentność, najczęściej chcąc zataić popełnione błędy. Można także podziękować firmie Securitum, która przeprowadza audyty bezpieczeństwa, za udostępnienie wyników prac. Spójrzmy zatem, co w raporcie można znaleźć – bo jest kilka ciekawostek (wszystkie błędy zostały usunięte).

Najciekawsze odkrycia

Zacznijmy od ważnej informacji – w raporcie znaleźć możemy informację, że zakres prac ograniczony był do siedmiu pentesterskich dniówek, zatem istnieje możliwość, że dłuższe poszukiwania mogły przynieść więcej rezultatów. Niemniej błędów znalezionych w aplikacji nie brakuje.

Najciekawszym, bo dającym zalogowanemu użytkownikowi z prawem wgrywania plików możliwość zdalnego wykonania kodu, jest błąd w mechanizmach importu danych. Po pierwsze, aplikacja umożliwia przesłanie w ramach archiwum ZIP plików PHP. Po drugie, rozpakowuje je do katalogu o przewidywalnej nazwie. Po trzecie, katalog ten dostępny jest dla użytkownika. Pozwala to na wgranie dowolnego pliku PHP i wykonanie go na serwerze, czyli oddanie atakującemu kontroli nad tym, co stanie się na maszynie. Co więcej, dzięki brakowi kontroli nad ścieżką zawartą w pliku ZIP, możliwe było wgranie pliku do dowolnego katalogu serwera dostępnego dla serwera WWW. Warto przeczytać szczegółowy opis błędu i sprawdzić swoje aplikacje pod kątem tej podatności.

Drugim ciekawym sposobem zdalnego uruchomienia kodu odkrytym przez załogę Securitum okazała się funkcja połączenia skrzynki poczty elektronicznej z kontem w aplikacji. Możliwość wysłania wiadomości z kodem HTML (a przy okazji JavaScript) połączona z przewidywalną ścieżką zapisywania załączników wiadomości na serwerze dała zdalne wykonanie kodu przesłanego w załączniku i wywołanego z poziomu emaila. Dzięki błędowi XSS możliwe okazało się uruchomienie złośliwego kodu po kliknięciu w wiadomość przez użytkownika – metoda ta może okazać się przydatna, gdy serwer aplikacji znajduje się w sieci lokalnej. Gdy jest dostępny publicznie, to można po prostu odwołać się do przewidywalnej ścieżki, w której został zapisany załącznik.

Fragment raportu

W raporcie znajdziecie także opis wielu błędów XSS, błąd SQLi (dostępny dla zalogowanego użytkownika z dostępem do konkretnego modułu), możliwość ataków MiTM na zewnętrzne zasoby aplikacji oraz dwie metody ominięcia zabezpieczenia przed atakami typu brute force w panelu logowania (w tym jeden przez manipulację strefą czasową – bardzo ciekawe).

Wymiar edukacyjny

Oprócz opisu błędów w raporcie znajdziecie także dokładne instrukcje, jak błędy usunąć (oraz historię tego, jak autorzy błędy usunąć próbowali, czasem w kilku iteracjach). Oprócz tego Securitum udostępniło maszynę wirtualną z podatną wersją systemu, by każdy mógł sam podobny test przeprowadzić. Instrukcja instalacji wygląda tak:

mkdir yetipentest
cd yetipentest
wget https://www.sekurak.pl/vagrant/yeti/Vagrantfile
vagrant up
curl 127.0.0.1:8080

Dla pełnej przejrzystości – za publikację tego artykułu pobieramy wynagrodzenie.