AWWW-1st3.6-w13.tresc-1.0-Slajd10

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Przejęcie sesji

Przejęcie sesji


W ramach wykładu pt. "Logika prezentacji I" omówiliśmy problem emulacji sesji dla protokołu HTTP. Idea rozwiązania opierała się na założeniu, że serwer aplikacji generuje dla każdego klienta HTTP niepowtarzalny identyfikator, nazywany identyfikatorem sesji. Identyfikator ten jest zwykle zapisywany w zmiennej Cookie, dzięki czemu powraca do serwera aplikacji przy każdym kolejnym żądaniu HTTP zgłaszanym przez tego samego klienta HTTP. Po stronie serwera aplikacji znajduje się tzw. tablica sesji, w której z każdą wartością identyfikatora sesji związany jest zbiór programowych obiektów Java reprezentujących stan sesji.

Zauważmy, że serwer aplikacji rozpoznaje użytkownika końcowego i udostępnia mu stan sesji wyłącznie w oparciu o wartość identyfikatora sesji. Co by się stało, gdyby inny użytkownik posługiwał się identycznym identyfikatorem sesji? Wtedy obaj użytkownicy byliby nierozróżnialni dla serwera aplikacji, a ich działania traktowane byłyby jak działania pojedynczego użytkownika. Serwery aplikacji oczywiście dbają o to, aby nie generować identycznych identyfikatorów sesji dla różnych użytkowników, lecz może się zdarzyć, że intruz celowo zmodyfikuje wartość własnej zmiennej Cookie tak, aby posiadała ona wartość identyfikatora sesji innego użytkownika. Tego typu atak nazywany jest "Przejęciem sesji" (ang. session hijack).

Wyobraźmy sobie jak przebiegałby atak typu "Przejęcie sesji" w kontekście wykorzystywania aplikacji bankowości internetowej. Do systemu loguje się rzeczywisty właściciel konta. Wprowadza nazwę użytkownika i hasło, być może nawet bezpieczne hasło jednokrotne. System bankowy generuje dla tego użytkownika identyfikator sesji i zapisuje w zmiennej Cookie. Od tego momentu każda operacja finansowa, której towarzyszy właśnie ten identyfikator sesji jest traktowana jako operacja zlecona przez powyższego użytkownika. A teraz wyobraźmy sobie, że intruz samodzielnie tworzy zmienną Cookie reprezentującą identyfikator sesji i wprowadza do nie identyczny identyfikator jak rzeczywisty właściciel konta. Operacje finansowe zlecane teraz przez intruza są rozpoznawane jako operacje zlecone przez rzeczywistego właściciela konta. Intruz może np. dokonać kradzieży pieniędzy poprzez wykonanie przelewu bankowego.

Aby atak typu "Przejęcie sesji" mógł się powieść, intruz musi wiedzieć, jaki identyfikator sesji został wygenerowany dla innego użytkownika. Istnieją trzy metody poznania identyfikatora sesji. Może on zostać podsłuchany podczas transmisji zmiennej Cookie, można go próbować odgadnąć, lub też wykraść. Dwie ostatnie metody omówimy na kolejnych slajdach.


<< Poprzedni slajd | Spis treści | Następny slajd >>