Co to jest przejmowanie sesji?

Opublikowany: 2023-04-27

Przejęcie sesji to rodzaj cyberataku, o którym właściciele witryn WordPress powinni wiedzieć. Przejęcie sesji, znane również jako przejęcie sesji TCP, sprawia, że ​​osoby atakujące wyglądają jak prawidłowo zalogowani użytkownicy. Osoba atakująca przejmuje sesję użytkownika, uzyskując jego identyfikator sesji bez wiedzy lub pozwolenia ważnego użytkownika. Po tym, jak osoba atakująca ukradnie identyfikator sesji użytkownika, może udawać atakowanego użytkownika. Osoba atakująca będzie mogła zrobić wszystko, co może zrobić autoryzowany użytkownik po zalogowaniu się autoryzowanego użytkownika do tego samego systemu.

Jedną z najgorszych rzeczy, jakie hakerzy mogą zrobić z przechwyconą sesją, jest uzyskanie dostępu do aplikacji internetowej lub kontrolek serwera bez uwierzytelnienia. Kiedy atakujący przejmuje sesję użytkownika, nie musi się uwierzytelniać, dopóki sesja jest aktywna. Aplikacja, która wygenerowała sesję, myśli, że jest uwierzytelnionym użytkownikiem, którego sesję przejęła.

Innymi słowy, haker będzie miał taki sam dostęp jak użytkownik, którego naruszył. Ponieważ legalny użytkownik już uwierzytelnił swoją sesję przed atakiem, udane przejęcie pozwala atakującemu całkowicie ominąć uwierzytelnianie.

W tym przewodniku zagłębimy się w szczegóły przejmowania sesji. Pokażemy Ci dokładnie, co musisz zrobić, aby temu zapobiec w Twojej witrynie WordPress.

Czym dokładnie jest sesja?

Sesja to po prostu seria interakcji między punktami końcowymi komunikacji, które występują w ramach pojedynczego połączenia HTTP.

Protokół przesyłania hipertekstu (HTTP) jest podstawą sieci. To właśnie umożliwia korzystanie z linków hipertekstowych i ładowanie stron internetowych. HTTP jest również protokołem warstwy aplikacji służącym do przekazywania informacji między urządzeniami w sieci.

Kluczową cechą HTTP jest to, że jest „bezstanowy”. Oznacza to, że nie zapisuje żadnych danych o klientach (takich jak Ty i Twoja przeglądarka), którzy otwierają sesję ze stroną internetową. Każda sesja jest zupełnie nowa. HTTP nie zachowuje danych o użytkownikach z ich poprzednich sesji.

Radzenie sobie z bezpaństwowością

Aplikacje internetowe, takie jak WordPress, muszą śledzić stan między wieloma połączeniami tego samego i różnych użytkowników. Musi identyfikować sesję każdego użytkownika po zalogowaniu — potencjalnie na więcej niż jednym urządzeniu lub przeglądarce.

Gdy użytkownik loguje się do aplikacji takiej jak WordPress, serwer tworzy sesję. Sesja będzie utrzymywać „stan” połączenia dla użytkownika, przechowując parametry, które są dla niego unikalne. Sesje są utrzymywane na serwerze przez cały okres, w którym użytkownik jest zalogowany do aplikacji.

Sesja kończy się w momencie wylogowania się użytkownika z systemu lub po określonym czasie braku aktywności. Po zakończeniu sesji użytkownika aplikacja powinna usunąć swoje dane z pamięci serwera.

Identyfikatory sesji

Identyfikatory sesji (lub „klucze” lub „tokeny”) to unikalne identyfikatory sesji. Zazwyczaj są to długie, losowe ciągi alfanumeryczne, które serwer i klient przesyłają do siebie. Aplikacja uwierzytelniająca zwykle przechowuje identyfikatory sesji w adresach URL, plikach cookie lub ukrytych polach na stronach internetowych.

Chociaż identyfikatory sesji są przydatne do utrzymywania stanu w systemie bezstanowym, wiążą się one również z pewnymi potencjalnymi zagrożeniami bezpieczeństwa. Na przykład, jeśli rozumiemy algorytmy generujące identyfikatory sesji dla aplikacji internetowej, możemy je wygenerować samodzielnie. Ponadto, jeśli aplikacja internetowa nie używa szyfrowania SSL do szyfrowania HTTP jako HTTPS, będzie przesyłać identyfikatory sesji w sposób wyraźny. W sieci publicznej każdy może podsłuchiwać nieszyfrowane połączenia i kraść identyfikatory sesji.

Jak dokładnie działa przejęcie sesji w praktyce?

Udany atak polegający na przejęciu sesji jest wyjątkowo niewidoczny. Zwykle są wykonywane w bardzo obciążonych sieciach z wieloma aktywnymi sesjami komunikacyjnymi.

Niektóre z najczęstszych form przejmowania sesji wykorzystują:

  • Przewidywalne identyfikatory tokenów sesji
  • Wąchanie sesji
  • Sidejacking sesji
  • Złośliwe oprogramowanie typu „człowiek w przeglądarce”.
  • Skrypty między witrynami
  • Utrwalenie sesji

Przyjrzyjmy się każdemu z tych wektorów zagrożeń z osobna.

Przewidywalne identyfikatory tokenów sesji

Wiele serwerów internetowych używa niestandardowych algorytmów lub predefiniowanych wzorców do generowania identyfikatorów sesji. Im większa ogólna przewidywalność unikalnego tokena sesji, tym jest on słabszy.

A hakerowi łatwiej jest przewidzieć.

Wąchanie sesji

Podsłuchiwanie sesji to jedna z najprostszych i podstawowych metod wykorzystywanych przez hakerów do przejmowania sesji w warstwie aplikacji.

Osoba atakująca użyje sniffera pakietów, takiego jak Wireshark, lub serwera proxy, takiego jak OWASP Zed, aby przechwycić ruch sieciowy. Jeśli ten ruch zawiera niezaszyfrowane identyfikatory sesji dla połączeń między klientami a witryną internetową, identyfikatory te mogą zostać skradzione. Hakerzy mogą użyć ważnego identyfikatora lub tokena, aby szybko uzyskać nieautoryzowany dostęp do witryny i kont jej użytkowników.

Sesja Sidejacking

Osoba atakująca może użyć wąchania pakietów w celu przechwycenia sesyjnych plików cookie użytkowników podczas logowania się do witryny. Jeśli strony logowania nie są zaszyfrowane lub stosowane jest słabe szyfrowanie, cyberprzestępca może w ten sposób łatwo przejąć kontrolę nad sesjami użytkownika.

Człowiek w przeglądarce

W tym ataku atakujący musi początkowo zainfekować komputer lub przeglądarkę ofiary złośliwym oprogramowaniem.

To złośliwe oprogramowanie może w niewidoczny sposób modyfikować informacje o transakcjach przeglądarki i tworzyć transakcje bez wiedzy użytkownika. Żądania uszkodzonej przeglądarki są inicjowane przez fizyczne urządzenie ofiary, więc zakłada się, że są prawidłowe.

Skrypty między witrynami

Cyberprzestępca może wykorzystać luki w zabezpieczeniach aplikacji lub serwera do wstrzyknięcia dowolnego kodu na strony internetowe witryny. Spowoduje to, że przeglądarki odwiedzających wykonają ten kod po załadowaniu zainfekowanej strony.

Gdy w sesyjnych plikach cookie nie jest ustawiony tylko HTTP, istnieje możliwość kradzieży klucza sesji za pomocą wstrzykniętego kodu. Dałoby to atakującym wszystko, czego potrzebują do przejęcia sesji użytkownika.

Utrwalanie sesji

Używa prawidłowego identyfikatora sesji, który nie został jeszcze uwierzytelniony. Wykorzystując utrwalanie sesji, osoba atakująca będzie próbowała nakłonić użytkownika do uwierzytelnienia przy użyciu tego konkretnego identyfikatora.

Po uwierzytelnieniu osoba atakująca ma teraz pełny dostęp do komputera ofiary.

Utrwalanie sesji bada duże ograniczenie w sposobie zarządzania identyfikatorem sesji przez aplikację internetową.

Co zyskuje haker po przejęciu sesji?

Gdy haker przejmuje kontrolę nad sesją, może zrobić wszystko, do czego uprawniony użytkownik był upoważniony w tej aktywnej sesji.

Najbardziej skuteczne — i szkodliwe — przejęcie sesji może spowodować:

  • Przejęte konta bankowe
  • Nieautoryzowane zakupy online przedmiotów online
  • Kradzież tożsamości
  • Kradzież danych z wewnętrznych systemów firmy

Niedobrze! Udana sesja przejęcia sesji może wyrządzić wiele szkód.

Jakie są przykłady przejmowania sesji?

Jesienią 2012 roku dwóch badaczy bezpieczeństwa, Juliano Rizzo i Thai Duong, ogłosiło CRIME, atak wykorzystujący wyciek informacji w ramach współczynnika kompresji żądań TLS jako kanału bocznego. Umożliwiło im to odszyfrowanie żądań wysyłanych przez klienta do serwera.

To z kolei pozwoliło im przechwycić plik cookie logowania użytkownika i przejąć sesję, podszywając się pod niego w witrynach internetowych o dużej wartości, takich jak witryny handlu elektronicznego i banki.

Ta demonstracja pokazała, w jaki sposób haker może przeprowadzić ten typ ataku w celu odzyskania nagłówków żądania HTTP.

CRIME działa w celu odszyfrowania plików cookie HTTPS, które są ustawiane przez strony internetowe w celu zapamiętania uwierzytelnionych użytkowników przy użyciu brutalnej siły. Kod ataku zmusza przeglądarkę ofiary do wysyłania specjalnie spreparowanych żądań HTTPS do docelowej witryny i analizuje zmiany ich długości po skompresowaniu, aby określić wartość pliku cookie sesji ofiary. Jest to możliwe, ponieważ SSL/TLS używa algorytmu kompresji o nazwie DEFLATE, który eliminuje zduplikowane ciągi, jak widzieliśmy powyżej.

Kod ataku nie może odczytać sesyjnego pliku cookie zawartego w żądaniach z powodu mechanizmów bezpieczeństwa w przeglądarce. Może jednak kontrolować ścieżkę każdego nowego żądania i może wstawiać do niego różne ciągi, próbując dopasować wartość pliku cookie.

Sesyjne wartości plików cookie mogą być bardzo długie. Składają się z wielkich i małych liter oraz cyfr.

W rezultacie kod ataku CRIME musi zainicjować bardzo dużą liczbę żądań ich odszyfrowania, co może zająć kilka minut.

Zapobieganie przejmowaniu sesji

Należy pamiętać, że osoby atakujące mogą ukraść i ponownie wykorzystać identyfikatory sesji (lub inne poufne wartości plików cookie), gdy są one przesyłane lub przechowywane w sposób niezabezpieczony. Chociaż 100% ochrona nie jest gwarancją, szyfrowanie jest główną obroną.

Gdy użytkownicy uwierzytelniają się, SSL i bezpieczne pliki cookie muszą być obowiązkowe. A kiedy uwierzytelnieni użytkownicy odwiedzają więcej niż jedną bezpieczną stronę, trzeba ich zmusić do korzystania z protokołu HTTPS.

Poza tym właściciele witryn WordPress muszą używać wtyczki bezpieczeństwa iThemes Security Pro WordPress do ochrony przed przejęciem sesji. Funkcja Zaufane urządzenia wbudowana w iThemes Security Pro będzie działać 24 godziny na dobę, siedem dni w tygodniu, aby chronić Twoją witrynę przed tym niebezpiecznym atakiem. Dowiedz się, jak to skonfigurować dla użytkowników Twojej witryny.

Zrozumienie i zapobieganie przejmowaniu sesji

Dzięki informacjom zawartym w tym przewodniku wiesz wszystko, czego potrzebujesz, aby chronić swoją witrynę WordPress przed przejęciem sesji:

  1. Upewnij się, że Twoja witryna jest w pełni zaszyfrowana przy użyciu protokołu SSL i zmusi użytkowników do pozostania przy użyciu protokołu HTTPS.
  2. Pobierz i zainstaluj wtyczkę iThemes Security Pro.

Wykonując te proste kroki, ochronisz swoją witrynę przed przejęciem sesji.