Cyberrange 1 - ciasteczko WP#

Autor: Tomasz Kowalski

Wszystko można zepsuć. Pomysł może być dobry, metody właściwe, implementacja rozsądna, a jednak czasami można przegapić drobny szczegół, który może mieć duże znaczenie.

Numer podatności#

Podatność, której się przyjrzymy była skutkiem rzeczywistego błędu. To naprawdę się zdarzyło i zostało skatalogowane jako CVE-2008-1930.

Katalog CVE#

 

Pomyśl o dowolnym sprzęcie (np. Twój domowy router wifi) lub oprogramowaniu (np. Twój edytor tekstu, zdjęć). Wyszukaj ten produkt na stronie https://cve.mitre.org/cve/search_cve_list.html, aby poznać jego historię podatności (ang. vulnerabilities).

Podatności kataloguje się z kilku niezmiernie ważnych powodów:

  1. Identyfikacja i standaryzacja

    Katalogowanie umożliwia jednoznaczną identyfikację podatności. To ułatwia komunikację między zespołami, producentami oprogramowania i użytkownikami.

  2. Zarządzanie ryzykiem i priorytetyzacja

    Każda podatność może być oceniona pod względem wpływu i prawdopodobieństwa wykorzystania (np. poprzez CVSS). To pomaga zdecydować, które podatności wymagają natychmiastowej reakcji.

  3. Automatyzacja

    Narzędzia do zarządzania bezpieczeństwem (np. skanery podatności) używają katalogów jak CVE, by automatycznie wykrywać znane luki i łączyć je z dostępnymi łatkami.

  4. Ułatwienie aktualizacji i łatania

    Mając konkretny identyfikator, można łatwiej powiązać podatność z odpowiednią aktualizacją, poprawką lub obejściem (workaround).

  5. Baza wiedzy i analiza trendów

    Katalogi tworzą historię podatności, co pozwala na analizę ich przyczyn, częstotliwości oraz zmian w czasie. To pomaga w projektowaniu bezpieczniejszego oprogramowania.

Środowisko do eksperymentów#

Uruchomienie starszej wersji pewnego oprogramowania bywa kłopotliwe z co najmniej kilku powodów:

  • niekompatybilność ze współczesnymi systemami operacyjnymi - nowsze systemy mogą nie obsługiwać starszych bibliotek i zależności,

  • konflikty z nowszymi wersjami bibliotek i zależności - starsze oprogramowanie może wymagać konkretnych, przestarzałych wersji bibliotek,

  • trudności w znalezieniu instalatorów i dokumentacji - mogą być już niedostępne na oficjalnych stronach.

Wygodnie jest skorzystać z maszyny wirtualnej. Potrzebny do tego będzie obraz ISO.

 

Pobierz właściwy dla tego ćwiczenia plik.

Link znajduje się w opisie ćwiczenia na https://pentesterlab.com/exercises/cve-2008-1930. Należy kliknąć na “Attachment/Files”; tam jest link do pobrania ISO.

Maszyna wirtualna, a więc komputer w komputerze#

Maszyna wirtualna (ang. Virtual Machine - VM) to symulacja komputera, która działa wewnątrz innego systemu operacyjnego (nazywanego hostem). Wewnątrz VM można zainstalować i uruchomić osobny system operacyjny (gość – guest), np. Linux na Windowsie, Windows na Macu itd.

Mamy więc trzy współpracujące komponenty:

  1. System główny (host) – np. Windows 11 bezpośrednio na Twoim komputerze,

  2. Oprogramowanie do wirtualizacji – np. VirtualBox, VMware, Hyper-V lub inne,

  3. Maszyna wirtualna (VM) – np. Ubuntu zainstalowane jako osobny „komputer” wewnątrz hosta

Maszyn wirtualnych używa się bardzo powszechnie, przykładowo do:

  • testowanie systemów i oprogramowania bez ryzyka uszkodzenia głównego systemu,

  • bezpieczne uruchamianie podejrzanych plików,

  • utrzymywanie różnych środowisk deweloperskich (np. testowanie aplikacji na różnych systemach operacyjnych),

  • kursy, laboratoria i nauka – bez potrzeby instalacji systemu na fizycznym dysku,

  • wirtualizacja serwerów (np. w chmurze), a więc taki układ, w którym wiele serwerów (np. różnych usług webowych) działa każdy jako osobna VM na jednym fizycznym serwerze.

 

Do swojej ulubionej wyszukiwarki wpisz hasło np. “virtual machine android on windows”.

Z pewnością już pierwsze linki będą kierowały do (wideo)tutoriali, które pokażą jak na typowym komputerze stacjonarnym uruchomić system znany głównie z telefonów i tabletów. Oczywiście można też uruchomić ten sam system wewnątrz symulowanego komputera, a więc np. uruchomić osobny Windows jako VM wewnątrz Windowsa pracującego jako główny system (system hosta).

Montaż i podłączanie symulowanego komputera#

Tutaj wykorzystamy VirtualBox, gdyż:

  • jest darmowy i otwartoźródłowy:

    • VirtualBox jest całkowicie darmowy do użytku osobistego i komercyjnego,

    • kod źródłowy jest dostępny (projekt Oracle, z otwartą licencją GPL dla głównej części);

  • działa na wielu systemach operacyjnych:

    • hosty: Windows, macOS, Linux,

    • goście: praktycznie dowolny system – Linux, Windows, BSD, Solaris, nawet stare systemy jak MS-DOS (jeśli ktoś lubi np. retrogaming 😄).

 

Pobierz i uruchom VirtualBox. Oficjalna strona download to: https://www.virtualbox.org/wiki/Downloads

Jest on tak popularny, że bez trudu odnajdziesz opisy ze zdjęciami lub wideo na temat jego instalacji na Twoim systemie i komputerze.

 

Poniżej znajdziesz pomocne instrukcje dla VirtualBox, ale jest bardzo wiele innych możliwości.

Możesz użyć dowolnego wirtualizatora, który jest dostępny na Twój system/sprzęt. Na pewno każdy z nich obsługuje uruchomienie VM z użyciem obrazu ISO i każdy z nich umożliwia dostęp do VM przez sieć. Możesz także użyć usług chmurowych, aby uruchomić VM.

Na Wikipedii można odnaleźć pewne zestawienie cech różnych “wirtualizatorów”: https://en.wikipedia.org/wiki/Comparison_of_platform_virtualization_software

Utwórz nową maszynę wirtualną w VirtualBox (ver. 7)#

Tworzenie nowego symulowanego komputera polega na określeniu z jakiego (symulowanego) sprzętu ma on być zbudowany oraz tego co i jak ma być do niego podłączone. W tym przypadku wystarczy “złożyć” zupełnie przeciętny (słaby) komputer: wystarczy jeden rdzeń procesora, 0,5GB RAM i nawet nie potrzeba dysku twardego. Użyjemy pliku ISO, który symulować będzie płytę CD/DVD włożoną do tego komputera.

  1. Kliknij “Nowa” (jest to ikona na pasku narzędzi lub wpis w menu); okno dialogowe, które się pojawi podzielone jest na cztery grupy opcji:

    1. Nazwa i system operacyjny:

      1. nazwij maszynę, np. “Ćwiczenie WP”,

      2. wskaż plik ISO (”obraz ISO”, “ISO image”, po kliknięciu w to pole wskaż pobrany wcześniej plik ISO).

       

      Pozostałe pola wypełnią się automatycznie. Jeśli nie, to ustaw następujące wartości:

      1. typ: Linux,

      2. subtype: Debian,

      3. wersja: Debian (32-bit).

    2. Instalacja nienadzorowana (Unattended Install):

       

      W tej części nie musisz nic robić. Nie będziemy instalować maszyny wirtualnej, a jednie ją uruchamiać z pliku ISO.

    3. Sprzęt (Hardware):

      1. przydziel co najmniej 512MB pamięci RAM,

      2. przydziel co najmniej 1 procesor.

       

      Jeśli przydzielisz więcej zasobów nie będzie to błędem, ale na maszyna na prawdę nie wymaga więcej.

    d. Dysk twardy (Hard Disk):

    Wybierz opcję “Nie dodawaj dysku wirtualnego twardego” (Do Not Add a Virtual Hard Disk).

     

    Ta maszyna wirtualna będzie przypominać komputer bez dysku. Nie będziemy nic instalować, więc ten symulowany komputer nie potrzebuje dysku.

  2. Kliknij “Zakończ”.

    Utworzona przez Ciebie maszyna wirtualna widoczna jest na liście maszyny po lewej stronie. Klikając na maszynę uaktywnisz pasek narzędzi, które pozwalają wykonywać na niej szereg operacji, a więc przede wszystkim: uruchamianie, wyłączanie i konfigurowanie. Te same opcje dostępne są w menu “Maszyna”.

Konfiguracja sieci maszyny wirtualnej#

Choć po uruchomieniu VM będziesz widzieć okienko z podglądem tego co widać na monitorze symulowanego komputera, to jednak pamiętaj, że to jest oddzielny komputer i dostać się do niego można praktycznie tylko przez sieć.

Domyślnym typem sieci dla maszyny wirtualnej jest NAT. Oznacza to, że VirtualBox symuluje urządzenie sieciowe podobne do Twojego domowego routera wifi. Maszyna wirtualna jest do niego podłączona tak, jak Ty podłączasz urządzenia do swojego routera (a więc przez wifi lub gniazda oznaczone jako LAN).

 

VirtualBox potrafi symulować różne rodzaje sieci. Techniczne informacje o tym znaleźć można np. w oficjalnej dokumentacji, w rozdziale szóstym: https://www.virtualbox.org/manual/ch06.html

Jednak na forum użytkowników VirtualBox znaleźć można ciekawszy opis z rysunkami: https://forums.virtualbox.org/viewtopic.php?t=96608

W przypadku Twojego domowego routera, aby dostać się do z zewnątrz do Twojej sieci konieczne jest ustanowienie tzw. przekierowania portów. Podobnie jest w przypadku maszyny wirtualnej w trybie NAT.

Aby móc połączyć się z VM przez sieć z Twojego komputera musisz zdefiniować przekierowanie portów:

  1. Kliknij “Ustawienia”.

    Gdy zaznaczona jest maszyna wirtualna to “Ustawienia” dostępne są jako ikona z kołem zębatym na pasku narzędzi lub wpis w menu “Maszyna” lub w menu kontekstowym pojawiającym się po kliknięciu prawym przyciskiem na wybranej maszynie.

  2. Kliknij “Sieć”.

    Domyślnie pierwsza karta sieciowa będzie podłączona do “NAT”. Pozostaw to bez zmian.

  3. Kliknij “Przekierowanie portów”.

    1. Klikając przycisk z plusikiem dodaj nową regułę przekierowania portów.

      1. w “Port hosta” wpisz np. 1234

      2. w “Port gościa” wpisz 80

       

      Nazwa nie ma znaczenia. Protokół pozostaw ustawiony na TCP.

Uruchamianie maszyny wirtualnej#

Aby wystartować symulowany komputer wystarczy wybrać go z listy i kliknąć “Uruchom”. Gdy zaznaczona jest maszyna wirtualna to “Uruchom” dostępne są jako ikona ze strzałką na pasku narzędzi lub wpis w menu “Maszyna” lub w menu kontekstowym pojawiającym się po kliknięciu prawym przyciskiem na wybranej maszynie.

Uruchomienie maszyny spowoduje wyświetlenie okna, które symuluje monitor podłączony do niej.

 

Jeśli klikniesz na okno VM to Twoja klawiatura i myszka zostaną podłączone do symulowanego komputera.

VirtualBox zapewne wyświetli wtedy dłuższy dialog z opisem tego procesu, a najważniejsze w tym opisie jest, aby zapamiętać jak odłączyć klawiaturę i myszkę do symulowanego komputera (aby móc znów używać innych aplikacji na Twoim komputerze).

Zapamiętaj proszę jakim “magicznym przyciskiem” możesz to zrobić. (Domyślnie jest to prawy Ctrl ).

Aby wyłączyć maszynę po prostu zamknij okienko z podglądem jej ekranu. Jeśli VirtualBox zapyta Cię wtedy co dokładnie ma zrobić wybierz opcję “Power off”.

Przebieg ćwiczenia#

 

Oryginalny opis ćwiczenia dostępny jest na https://pentesterlab.com/exercises/cve-2008-1930.

O co chodzi z tym vulnerable?#

W konfiguracji Wordpress zdefiniowane są dwie wartości: Wordpress Address (URL) i Site Address (URL). Domyślnie obie wskazują na vulnerable, który pewnie nie jest nazwą DNS rozwiązywalną na Twoim komputerze.

 

DNS (Domain Name System) to system, który tłumaczy nazwy domenowe (np. example.com) na adresy IP (np. 93.184.216.34), czyli coś, co komputer rozumie i czego używa do komunikacji w sieci.

Ludzie zapamiętują nazwy, a komputery komunikują się za pomocą adresów IP. DNS działa jak książka telefoniczna internetu – zamiast pamiętać IP serwera Google, wpisujesz google.com, a DNS mówi Twojemu komputerowi, pod jaki adres IP ma się połączyć.

 

Jest szereg możliwości poradzenia sobie z tą trudnością bez modyfikacji VM. Jednak wymagają one modyfikacji Twojego tzw. lokalnego resolvera lub np. modyfikacji resolvera dla sieci, w której aktualnie jesteś.

Jeśli masz uprawnienia administratora to możesz spróbować edycji pliku hosts. Wskazówki dla różnych systemów operacyjnych znaleźć można np. na tej stronie: https://docs.rackspace.com/docs/modify-your-hosts-file

Nie mając uprawnień administratora do komputera lub sieci najprostszym rozwiązaniem jest modyfikacja maszyny wirtualnej i zmienienie problematycznych wpisów w konfiguracji Wordpress.

W tym celu w okienku uruchomionej maszyny wpisz w jednej linii następującą komendę i wykonaj ją wciskając Enter:

mysql -u root wordpress -e 'update wp_options set option_value="http://localhost:1234/" where option_name="siteurl" or option_name="home"'

To dość długie polecenie modyfikuje dwa wpisy w bazie danych Wordpress.

Jeśli polecenie uda się wykonać to możesz teraz w przeglądarce w pasek adresu wpisać: http://ocalhost:1234

Zła sława ciasteczek#

Ciasteczka HTTP (HTTP cookies) to małe fragmenty danych, które serwer wysyła do przeglądarki, a przeglądarka przechowuje i odsyła z powrotem przy kolejnych żądaniach do tego samego serwera.

Służą do identyfikacji, śledzenia sesji, zapamiętywania ustawień użytkownika i wielu innych rzeczy:

  1. Utrzymywanie sesji:

    • Gdy logujesz się na stronę, np. do konta e-mail, serwer ustawia ciasteczko z unikalnym identyfikatorem sesji.

    • Dzięki temu nie musisz logować się przy każdym kliknięciu.

  2. Zapamiętywanie preferencji użytkownika:

    • Język strony, motyw ciemny/jasny, zawartość koszyka – to wszystko może być zapisane w ciasteczkach.

  3. Śledzenie użytkownika (np. do reklam):

    • Strony trzecie (np. systemy reklamowe) mogą ustawiać własne ciasteczka, by śledzić, jakie strony odwiedzasz.

    • Na tej podstawie budowany jest profil reklamowy.

Ciasteczka nie są złe, ale mogą być nadużywane.

  • niezbędne do działania większości stron (logowanie, sesje itp.),

  • ale mogą być też używane do śledzenia użytkowników, co budzi obawy o prywatność.

Dlatego obecnie przeglądarki ograniczają ciasteczka stron trzecich, a strony muszą prosić o zgodę na ich użycie (tzw. „ciasteczkowe bannery”).

 

Być może warto mieć osobną przeglądarkę do “łażenia po internecie”.

Zerknij na https://duckduckgo.com/ aby pobrać przeglądarkę na Twój system. Po uruchomieniu włącz wszystkie opcje ochrony prywatności, blokowania wszelkich trackerów i reklam. Ustaw opcje automatycznego kasowania otwartych kart i wszystkich danych przeglądania. (To ten płomyczek w pobliżu paska adresu).

W ten sposób skonfigurujesz dla siebie wygodne narzędzie do “błąkania się po internecie”, gdyż wszystko co ewentualnie zapisałoby się w czasie takiej przygody zostanie zniszczone przez przeglądarkę.

⚠️ Pamiętaj jednak, że to nie gwarantuje Twojego bezpieczeństwa w sieci, a jedynie (lub aż) jest sposobem, aby z czasem nie gromadziły się w Twojej przeglądarce np. niechciane ciasteczka.