HTB - Redeemer
Kolejnym wyzwaniem na platformie Hack The Box w ścieżce Starting Point jest maszyna Redeemer, oznaczona poziomem trudności Very Easy. W tym laboratorium analizuję konfigurację serwera Redis – magazynu struktur danych w pamięci – oraz sprawdzam skutki braku uwierzytelniania w publicznie dostępnej usłudze bazodanowej.
Skanowanie i identyfikacja usługi
Zadanie rozpoczynam od pełnego rekonesansu portów TCP na przydzielonym adresie IP maszyny docelowej. Aby sprawdzić cały zakres portów oraz zidentyfikować wersje uruchomionych usług, wykonuję skanowanie narzędziem nmap:
nmap -Pn -sV -p- 10.129.19.162
W poleceniu wykorzystałem następujące przełączniki:
- Pominięcie wykrywania hosta (Skip Host Discovery) – flaga
-Pnnakazuje traktować host docelowy jako aktywny, co zapobiega przerwaniu badania przy blokowaniu zapytań ICMP. - Wykrywanie wersji (Service Version Detection) – parametr
-sVodpytuje otwarte porty, aby ustalić nazwę i wersję oprogramowania. - Pełny zakres portów (All Ports) – opcja
-p-skanuje wszystkie 65535 portów TCP.
Wynik skanowania wskazuje otwarty port 6379/tcp:
Nmap scan report for 10.129.19.162
Host is up (0.061s latency).
Not shown: 65534 closed tcp ports (reset)
PORT STATE SERVICE VERSION
6379/tcp open redis Redis key-value store 5.0.7
Na badanym hoście działa usługa Redis key-value store 5.0.7.
Połączenie z serwerem Redis
Do interakcji z serwerem bazodanowym wykorzystuję narzędzie redis-cli. Nawiązuję bezpośrednie połączenie z adresem maszyny docelowej:
redis-cli -h 10.129.19.162
W poleceniu użyto parametru:
- Wskazanie hosta (Host Specification) – flaga
-hokreśla docelowy adres IP, z którym nawiązywane jest połączenie.
Serwer akceptuje sesję bez żądania hasła i udostępnia interaktywną konsolę tekstową.
Eksploracja bazy danych i zdobycie flagi
Po uzyskaniu dostępu do konsoli sprawdzam stan instancji oraz statystyki bazy danych poleceniem INFO:
10.129.19.162:6379> INFO
W sekcji dotyczącej przestrzeni kluczy sprawdzam obecność zapisanych danych. Następnie wyświetlam listę wszystkich kluczy w bieżącej bazie:
10.129.19.162:6379> KEYS *
Wśród zwróconych wyników znajduje się klucz o nazwie flag. Aby odczytać przypisaną do niego zawartość, wykonuję polecenie GET:
10.129.19.162:6379> GET flag
Baza zwraca poszukiwany ciąg znaków, co pozwala na pomyślne zdobycie flagi i zaliczenie zadania.
Podczas pracy z bazą Redis wykorzystałem polecenia:
- Informacje o instancji (Instance Information) – polecenie
INFOwyświetla konfigurację, statystyki oraz stan bazy. - Przeszukiwanie kluczy (Key Search) – komenda
KEYS *listuje wszystkie klucze pasujące do zadanego wzorca. - Pobranie wartości (Get Key Value) – polecenie
GET flagzwraca wartość zapisaną pod wskazanym kluczem.
Podsumowanie
Laboratorium Redeemer pokazuje konsekwencje pozostawienia serwera Redis bez wymuszonego uwierzytelniania w sieci. Domyślny brak ochrony hasłem pozwala każdemu na natychmiastowy odczyt, modyfikację oraz usunięcie przechowywanych struktur danych. W celu zabezpieczenia instancji przed nieuprawnionym dostępem należy ustawić silne hasło w dyrektywie requirepass, ograniczyć nasłuchiwanie do lokalnego interfejsu pętli zwrotnej (bind 127.0.0.1) oraz zablokować port 6379 na poziomie zapory sieciowej.
Raport z testów można pobrać tutaj.