Dzisiaj omówię rozwiązanie maszyny nawiązującej do Ricka i Mortiego. Jest to jedna z najlepszych maszyn na poziomie easy/beginner, które robiłem na Vulnhubie. Zrobienie jej zajmuje trochę czasu, ale satysfakcja płynąca z jej ukończenia jest bardzo duża. Zanim zaczniemy rozwiązywanie tej maszyny muszę dodać dwie rzeczy. Na maszynie jest określona ilość flag. Za każdą z nich można dostać punkty. Łącznie mamy do zdobycia 130 punktów. To jest nasz pierwszy cel. Drugim celem jest podniesienie uprawnień. Myślę, że nie będe już przedłużał, więc zaczynajmy. Tradycyjnie skan nmapem. Zerknijmy najpierw na FTP. Widzimy, że logowanie anonimowe jest dozwolone. W przypadku FTP wystarczy jako nazwę użytkownika wpisać anonymous, a hasło dowolne. Dzięki temu będziemy mogli przejrzeć zasoby udostępnione dla naszego użytkownika. Zalogowaliśmy się. Pierwsze co robimy to oczywiście wyświetlamy zawartość naszego bieżącego katalogu. Widzimy jeden plik i jeden folder. Zerknijmy czy znajdziemy coś w folderze. Niestety folder jest pusty. Teraz spróbujmy wyświetlić plik FLAG.txt. Niestety FTP nie udostępnia nam takiej opcji. Musimy go pobrać metodą get, a następnie wyświetlić na naszym komputerze. Super, mamy już 10 punktów. Zerknijmy na wyniki nmapa, przy porcie 13337 widzimy taką wiadomość. Zebraliśmy już 20 punktów. Równie dobrze moglibyśmy połączyć się z tym portem i dostalibyśmy taką samą wiadomość. To samo zrobił nam nmap. Teraz pokaże Wam jak się połączyć z określonym portem. Tym razem będzie to tajemniczy port 60000. Połączyliśmy się z portem na którym działa odwrócona powłoka. Dostaliśmy dostęp do pewnego miejsca na maszynie. Tutaj też znajduje się kolejna flaga. Doliczamy sobie kolejne punkty. Teraz mamy 30 punktów. Niestety z poziomu tej powłoki nie możemy się już nigdzie indziej nawigować. Zerknijmy więc na nmapa. Na porcie 80 widać odpalony serwer. Nie będziemy sprawdzać podatności na tą wersję Apache póki co. Zobaczmy stronę na tym porcie. Naszym oczom ukazuje się Morty. Podejrzyjmy kod źrodłowy. Nic w nim nie ma. Sprawdźmy czy istnieje plik robots.txt. Bingo! Sprawdźmy po kolei oba pliki. W przypadku root_shell.cgi. Mamy tylko komentarz, że strona jest w budowie. W kodzie też nic nie ma oprócz Ricka, który się z nas śmieje. Zerknijmy na drugi plik. Mamy miejsce na wpisanie adresu ip do którego chcemy śledzić ścieżkę. Polecenie te czyli traceroute sprawdza przez jakie routery przechodzi nasze połączenie, żeby dostać się do zdefiniowanego przez nas adresu IP. Prawdopodobnie polecenie zostaje wywoływane na Linuxie w formie traceroute IP_KTORY_WPISALISMY. Sprawdźmy czy rzeczywiście tak jest. Rzeczywiście tak jest. Najprawdopodobniej możemy wykonać złośliwy kod łącząc polecenia jednym z sposobów. Nie będę omawiał jakie są na to metody. Zalinkuje tylko mój wpis opisujący łączenie poleceń w Linuxie: https://wandenreich.weebly.com/blog/laczenie-polecen-w-linuxie. Sprawdźmy to. Udało nam się! Zerknijmy czy nie ma czegoś ciekawego na tej stronie. Spawdźmy więc folder nadrzędny. Zerknijmy w folder passwords. W jednym z plików w folderze passwords mamy kolejną flagę. Jesteśmy już coraz blizej. Mamy 40 punktów. W drugim pliku nie ma nic oprócz wiadomości. Zerknijmy jeszcze do kodu źrodłowego, mamy jakieś hasło. Prawdopodobnie do SSH, zobaczmy. Odczytajmy jeszcze plik /etc/passwd przy użyciu skryptu trace, którego używaliśmy wcześniej. Tutaj musze dodać jedną ważną rzecz. Polecenie cat nie działało w tym formularzu. Zostało podmienione z rysunkiem kota. Najpewniej celowo zostało zmodyfikowane. Używam więc podobnego polecenia head o trochę innych właściwosiach, ale nie będę go opisywał. Można o nim przeczytać chociażby w podręczniku man, korzystając z polecenia man head w terminalu Linuxa. Plik etc/passwd nie pokazał nam żadnych użytkowników specyficznych użytkowników. Myślę, że na tej stronie nic już nie znajdziemy. Możliwe, że formularz z poleceniem trace można byłoby wykorzystać do włamania się, ale na razie wstrzymamy się z tym. Zobaczmy wyniki Nmapa. Na porcie 9090 również działa usługa Apache. Zerknijmy na nią, dopisując w URL po adresie IP dwukropek i port. W tym przypadku 9090. Kolejna flaga. Łącznie zdobyliśmy już 50 punktów. Sprawdźmy kod źrodłowy, szczególnie miejsce gdzie powinno być pole na hasło. Niestey nie dowiedzieliśmy się nic nowego. Po wpisaniu użytkownika i kliknieciu ENTER nic się nie dzieje. Prawdopodobnie jest to formularz dla zmyłki. Spawdźmy stronę dirbusterem. Między czasie sprawdźmy czy usługa FTP jest podatna i czy mamy na nią jakiegoś exploita. Niestety nic nie ma. To samo zróbmy dla wersji Apache na porcie 80 i 9090. Niestety nic. Dirbuster, którego przed chwilą włączyliśmy też nic ciekawego nie pokazuje. Mamy tylko hasło, ale nie znamy użytkownika. Sprawdźmy SSH. Próbując się podłączyć z SSH dostajemy komunikat o odrzuceniu połączenia. Czyżby SSH było źle skonfigurowane? Być może. Ale jak przyjrzymy się wynikom nmapa to zobaczmy jeszcze jedno SSH na porcie 22222. W tym przypadku połączenie działa, ale nie znamy danych logowania. Odszukajmy je metodą brute-force przy użyciu Hydry. Jednakże sprawdzimy tylko loginy. W końcu znaleźliśmy jakies hasło, może akurat jest do SSH. Jak nie do SSH to pewnie do FTP. Jeżeli trochę poczekamy to w końcu hydra znajdzie nam login - Summer. Zalogujmy się z naszym hasłem i loginem. Weszliśmy! No to teraz od razu wylistujmy katalogi i pliki. Sprawdźmy też historie poleceń. Ten sam kod co wcześniej. Po wykonaniu polecenia cat /etc/passwd. Dostajemy ten sam wynik. Ktoś podmienił polecenia. Od tej pory do wyświetlenia plików na użytkowniku Summer będziemy używać head. Odczytajmy zawartość pliku FLAG.txt. Świetnie. To już 60 punktów. Przejdźmy do katalogu nadrzędnego. Mamy w nim trzy foldery: Summer, Morty, RickSanchez. Podejrzyjmy zawartość folderu Morty. Jest tam zdjęcie prawdopodobnie z hasłem i archiwum (najprawdopodobniej jest to dziennik Mortiego). Spróbujmy je wypakować. Niestety archiwum jest zaszyfrowane hasłem. Hasło jest pewnie w pliku jpg. Niestety przez SSH nie możemy zobaczyć plików graficznych. Uruchommy na naszym celu serwer Pythona na porcie 8080. Dzięki temu będziemy mogli ściągnąć te zdjęcie na swój komputer. Do ściągania plików z serwera tradycyjnie używam polecenia wget. Teraz pora na sprawdzenie zawartości obrazka. Duże rozczarowanie! Nic nie ma! Ale czy na pewno? Użyjmy ciekawego polecenia strings, które wyświetla ciągi znaków w plikach. Może gdzieś w tym pliku jest ukryty jakiś istotny ciąg znaków? Nie myliłem się. Mamy hasło do archiwum journal.txt.zip. Niestety kiedy próbujemy je wypakować mamy błąd zapisu. Na nasze nieszczęście nie możemy zapisać w folderze Morty naszego wypakowanego archiwum. Jednakże nic straconego. Moglibyśmy przeszukać poleceniem find katalogi w których możemy zapisywać pliki, ale po co sobie utrudniać życie. Po prostu ściągnijmy plik na nasz komputer i go wypakujmy. Dobra mamy następną flagę. To już 80 punktów. Tekst nam sugeruje, że gdzieś jest jakiś plik, archiwum lub program na hasło. Tylko jakie hasło? Przypuszczam, że hasłem będzie ta flaga. Jest nietypowa w stosunku do pozostałych. Wygląda właśnie jak pin do "sejfu". Przejrzyjmy zawartość folderu RichSanchez w katalogu home. Mamy tam folder w którym jest plik txt. Niestety nie zawiera ona żadnej flagi. W drugim folderze znajduje się plik wykonywalny. Można to sprawdzić poleceniem file, które informuje nas o typie pliku. Uruchommy go. Niestety nie mamy uprawnień do uruchamiania tego pliku. Więc zróbmy to co poprzednio ściągnijmy go na nasz system i uruchommy z argumentem naszej flagi czyli najprawdopodbniej z szyfrem do sejfu. Świetnie. Już prawie koniec. Mamy 100 punktów. Program wyświetla nam wskazówkę do hasła Ricka. Najpierw jedna duża litera, potem jedna cyfra, a na koniec jeden z wyrazów ulubionego zespołu Ricka. Przeglądając Internet w poszukiwaniu tego zespołu znalazłem coś ciekawego. Jest to najprawdopodbniej ten zespół. Uruchamiamy program crunch to generowania słownika. Zakładam, że jeden z wyrazów zespołu to Curtains lub Flesh. Zacznę od Curtains. W moim przypadku program crunch przyjmuje 4 argumenty. Pierwsze dwie dziesiątki oznaczają kolejno minimalną ilość znaków hasła i maksymalną. W naszym wypadku hasło ma 10 znaków ponieważ słowo Curtains jest długości 8 znaków, a dodatkowo według programu safe hasło ma posiadać jedną cyfrę i jedną literę. Więc minimalna i maksymalna liczba znaków jest taka sama czyli nasze stałe 10. Opcja t pozwala nam skorzystać z specyficznych wzorców reprezentacji znaków. Mianowicie, przecinek oznacza dowolną dużą literę z alfabetu łacińskiego, procent oznacza dowolną cyfrę. Oczywiście reszta to już znany nam ciąg znaków, który jest doklejony do tych dwóch znaków generowanych dynamicznie. Opcja o to nic innego jak ścieżka do pliku w którym ma być zapisany słownik. W naszym przypadku słownik zostanie zapisany w katalogu roboczym pod nazwą Rick.txt. Spróbujmy przy użyciu tego słownika zalogować się na użytkownika RickSanchez, ale korzystając z usługi SSH. Tak będzie nam wygodniej, niż jakby próbować łamać hasło już z poziomu użytkownika Summer. Odpalamy tak jak poprzednio Hydre. Czekamy na wyniki. Udało się! Świetnie. Teraz możemy zalogować się na użytkownika RickSanchez. Jeżeli wyłączyliście terminal z odpalonym SSH to wystarczy połączyć się ponownie, ale już pod nowym użytkownikiem. Przypuszczam, że niewiele nam zostało więc pewnie RickSanchez jest naszym ostatnim użytkownikiem tuż przed uzyskaniem roota. Przejdźmy teraz do sekcji podnoszenia uprawnień. Podnoszenie UprawnieńNa początek sprawdźmy poleceniem sudo z opcją l jakie komendy może wykonywać nasz użytkownik. Bingo! Możemy wykonywać każde polecenie. W takim razie możemy zmienić użytkownika na roota. Wystarczy wpisać sudo su. Normalnie polecenie su przyjmuje jako argument nazwę użytkownika. Jeżeli jednak jej nie podamy polecenie będzie domyślnie próbowało zalogować się na superużytkownika, dlatego równie dobrze moglibyśmy wpisać sudo su root. Wykonajmy więc jedno z tych dwóch poleceń, a kiedy zostaniemy poproszeni o hasło to wpiszmy te, którego używaliśmy do logowania się przez SSH na użytkownika RickSanchez. Mamy roota! Pierwsza część zadania skończona. Zostało nam jeszcze zdobyć pozostałe 30 punktów. Najpewniej flaga będzie jak to zwykle bywa w folderze root do którego można uzyskać dostęp mając uprawnienia superużytkownika. Zmieńmy katalog na root i sprawdźmy pliki, które się w nim znajdują. Udało się! Łącznie mamy już 130 punktów. Zebraliśmy wszystkie punkty jak i zdobyliśmy uprawnnienia roota. Maszyna ukończona. Trzeba było się trochę wysilić mimo że, zadania były dosyć proste to było ich dużo. Jest to naprawdę świetny lab do nauki. Posługiwaliśmy się tutaj wieloma narzędziami. Nie odzwierciedlał on co prawda prawdziwego włamywania się na hosta, ale występowały w nim elemnty, które w takich atakach występują. Chociażby podnoszenie uprawnień, albo generowanie słownika. Bardzo dziękuje za przeczytanie tego długiego wpisu. W najbliższym czasie postaram się opublikować kolejne write-upy labów.
0 Comments
Leave a Reply. |