Na wstępie chciałem przeprosić, że nie było mnie kilka dni na blogu. Ostatnio dosyć słabo radziłem sobie z przechodzeniem nowych labów, ale myślę, że teraz wszystko wróci do normy. Jutro postaram się opublikować dwa rozwiązania innych maszyn. Dzisiaj zajmę się maszyną, która sprawiła mi trochę trudności i była dosyć nietypowa w stosunku do innych labów, które robiłem. Zaczniemy oczywiście od Nmapa. Tradycyjnie OpenSSH nie jest podatne. Również Apache nie jest podatne. Skupmy się więc na stronie internetowej. Od razu zapuszczę skan dirb'em. Po przejrzeniu wszystkich plików i folderów nasza uwagę powinien przyciągnąć folder dbadmin oraz plik view.php. Plik view.php nie wygląda na użyteczny. Zerknijmy na panel logowania w lokalizacji dbadmin. Oczywiście zanim zaczniemy ataki warto przetestować kilka domyślnych haseł. Ja zacząłem od tradycyjnego hasła "admin". I to był dobry wybór, bo już po sekundzie ukazuje się nam panel administratora do zarządzania bazą danych. W bazie danych są dwa hasła do użytkownika root i zico. Niestety są zahashowane, a dekryptor md5 nie znajduje ich. Nie bardzo wiem w jaki sposób hasła są zaszyfrowane. Szczerze mówiąc nie wiem czym są zaszyfrowane. Po prostu jeszcze nie przerabiałem kryptografii. Jeżeli ktoś rozwiązał tą maszynę dzięki tym hasłom lub udało mu się odkodować hasło to bardzo proszę o komentarz: :). Nie mniej jednak zdaje mi się, że nie ma takiej możliwości. Wracając do tematu. Sprawdziłem podatność na aplikację phpLiteAdmin 1.9.3. Bingo! Dzięki skorzystaniu z tej podatności będziemy mogli zestawić połączenie z maszyną ofiary i uzyskać dostęp do systemu. Najpierw tworzę bazę danych pod nazwą "hack.php", oczywiście mogłaby być to jakakolwiek nazwa z końcówką php. Kolejną rzeczą jest stworzenie tabeli. Ja stworzyłem tabelę o nazwie "h". Następie musimy w domyślnej wartości wrzucić treść kodu php. Ja w tym przykładzie wrzuciłem to samo co na screenshocie. Po prostu chcę upewnić się czy wszystko działa. Jeżeli wszystko zadziała to wrzucimy tam inny kod, który pozwoli zestawić nam połączenie między naszą maszyną, a maszyną ofiary. Teraz oczywiście kluczowa sprawa. Wrzuciliśmy kod php, ale pytanie jak go otworzyć? Trochę zajęło mi czasu rozwiązanie tej zagadki. Zauważyłem, że strona korzysta z parametru page, żeby wyświetlić określone pliki czyli podstrony. Pomyślałem od razu, że sprawdzę czy ten parametr jest podatny na atak LFI. Udało mi się. Jednakże takie nawigowanie po systemie jest ciężkie. Sprawdzę czy mogę otworzyć plik hack.php. Udało się! W tym punkcie najwięcej się namęczyłem. Próbowałem wrzucać różne powłoki większe i mniejsze w miejsce domyślnej wartości tabeli, ale niestety żadna z nich nie działała, za to świetnie działała funkcja system(). Wpadłem w końcu na pomysł, żeby skopiować odwróconą powłokę przez polecenie system do folderu tmp na Linuxie. Zazwyczaj uprawienia do zapisu w tym folderze mają wszyscy użytkownicy. Ale po kolei, żeby skopiować odwróconą powłokę najpierw trzeba ją mieć. Tutaj myślę, że wszystko jest jasne. Wspomnę tylko, że mój adres IP to 192.168.0.241. Następnie musimy stworzyć skrypt, który pobierze powłokę do folderu tmp, nada jej uprawnienia do uruchamiania. Wyjaśnię wszystko krok po kroku. Funkcja system() oczywiście wywołuje polecenia systemowe. Pierwszym krokiem jest zmiana folderu na tmp czyli na miejsce gdzie mamy uprawnienia do zapisu. Kolejnym krokiem jest pobranie powłoki z serwera, a następnie przyznanie jej uprawnień. Jak pewnie zauważyliście serwerem jest mój komputer, żeby stworzyć taki prosty serwer wystarczy jedna linijka w terminalu, którą zaraz pokażę. Oczywiście kod php wrzucamy do tabeli tak samo jak poprzedni kod z phpinfo(). Włączamy znowu plik hack.php. Widzimy też na terminalu jak stworzyć taki prosty serwer. Widać też, że plik został pobrany. Nie pozostało nam nic innego jak otworzenie go, ale zanim to zrobimy. Ustawmy w metasploicie nasłuchiwanie. Oczywiście ścieżka do pliku się zmieniła. W końcu uruchamiamy powłokę, która pobraliśmy. Podniesienie uprawnieńSprawdźmy jakim jesteśmy użytkownikiem i do jakich grup należymy. Tutaj oczywiście przechodzimy do powłoki dzięki czemu możemy korzystać z poleceń linuxowych. Długo mi zajęło podnoszenie uprawnień na tej maszynie. Pewnie dlatego, że byłem przyzwyczajony do podnoszenia uprawnień przez typowe błędy bezpieczeństwa. W katalogu home możemy znaleźć jeden folder o nazwie zico. Sprawdźmy co w nim jest. Jest tutaj kilka folderów. Muszę nadmienić, że folder root oraz archiwum super.tar są moje. Zapomniałem usunąć ich kiedy pierwszy raz przechodziłem maszynę. Ciekawy jest folder wordpress ze względu na to, że zawiera plik wp-config.php w którym przechowywane jest hasło do bazy danych. Abstrahując od tematu, kiedy robiłem maszynę infosec oscp dopiero po kilku godzinach wpadłem na to, żeby przejrzeć ten plik. Niestety hasło z tego pliku nie pomogło mi w podniesieniu uprawnień i automatycznie podczas tej maszyny nie zaglądałem do niego co zabrało mi dużo czasu. Dobra, ale dosyć gadania zajmijmy się podnoszeniem uprawnień. W pliku wp-config.php znajduje się hasło do bazy danych. Nieraz spotykamy się z sytuacją, że ktoś ma te same hasła w wielu serwisach. Nie inaczej jest w tym przypadku, hasło do bazy danych sprawdza się też jako hasło użytkownika zico. Jednak, żeby zalogować się na użytkownika zico potrzebujemy innej powłoki, która nam to umożliwi. Można to zazwyczaj zrobić na wiele sposobów. Na tej stronie możemy znaleźć kilka poleceń w różnych językach do tworzenia powłoki: https://netsec.ws/?p=337 Ja tradycyjnie skorzystałem z Pythona, bo jest to jeden z najczęściej używanych języków więc na systemie raczej na pewno powinniśmy go znaleźć. W przeciwnym wypadku możemy próbować stworzyć powłokę z wykorzystaniem innego języka np. Perl. Po stworzeniu powłoki możemy zalogować się na użytkownika zico. Pierwszą rzeczą, którą robię jest zawsze sprawdzenie historii poleceń. Mamy poszlakę. Możemy najpewniej z uprawnieniami roota uruchomić polecenie tar. Sprawdźmy jeszcze konfigurację sudo. Nawet lepiej. Możemy bez hasła do roota uruchomić program tar i zip z najwyższymi uprawnieniami. Spakujmy więc folder roota do archiwum i umieśćmy go w naszym bieżącym katalogu tj. /home/zico. W przypadku archiwów tar.gz najpierw trzeba wypakować pliki poleceniem gunzip, a potem takie archiwum, które powstanie w wyniku tej akcji wypakować poleceniem tar. Wyświetlmy od razu flagę. Bingo! Mamy flagę. Chciałem tutaj zwrócić uwagę na mój mały błąd, nie mogłem się przenieść do folderu root, bo podałem ścieżkę bezwzględną czyli chciałem przenieść się do folderu /root, natomiast miałem na myśli folder root w katalogu /home/zico. Przepraszam więc za błąd na screenshocie. W każdym razie udało nam się zdobyć flagę, ale takie przejście tej maszyny nie jest satysfakcjonujące. W końcu nie podnieśliśmy uprawnień do superużytkownika. Postarajmy się to zrobić. Jest taka naprawdę świetna strona, która pokazuje nam co możemy zrobić przy pomocy danego polecenia omijając uprawnienia. Myślę, że strona jest tak istotna, że moje dwa zdania wraz z linkiem zostaną pogrubione: https://gtfobins.github.io/. Wpiszmy tam polecenie tar i zobaczmy co możemy dzięki niemu zrobić. Widzimy od razu, że możemy wrzucać pliki, ściągać je, czytać itd. Nas interesuje stworzenie powłoki z większymi uprawnieniami. Wykonajmy polecenie, oczywiście jako root. Udało się! Mamy roota. Teraz możemy odczytać flagę bez korzystania z polecenia tar. Muszę przyznać, że ta maszyna jest naprawdę ciekawa i bardzo dużo można z niej się nauczyć. Dziękuje za przeczytanie wpisu. Niedługo wrzucę kolejne.
0 Comments
Leave a Reply. |