Podczas testów penetracyjnych portalu B2B wykryliśmy scenariusz przejęcia konta oparty o session fixation i nieprawidłowe odświeżanie sesji po logowaniu. Aplikacja akceptowała identyfikator sesji ustawiony przed logowaniem i nie rotowała go po udanej autentykacji. W kontrolowanych warunkach umożliwiało to atakującemu przygotowanie sesji, “wciągnięcie” użytkownika w logowanie i finalnie przejęcie jego zalogowanej sesji. Naprawa: rotacja session ID po logowaniu, twarde ustawienia cookies (HttpOnly/Secure/SameSite), unieważnianie starych tokenów, oraz testy regresji dla flows logowania.

Kontekst: portal B2B, SSO i “zaufanie do przeglądarki”

Klient miał portal do obsługi kontraktów i rozliczeń (typowy system B2B: użytkownicy z różnych firm, role, uprawnienia, dostęp do dokumentów, eksporty, integracje). Autentykacja była klasyczna: login + hasło, a dla części kont SSO (single sign-on). Użytkownicy wchodzili z maili, z linków w powiadomieniach, z przeglądarki w firmowej sieci.

To jest środowisko, w którym ataki na sesję potrafią być bardzo skuteczne, bo użytkownik nie spodziewa się “czegoś dziwnego” na ekranie logowania. On po prostu robi swoje.

Problem: brak rotacji sesji po logowaniu

W idealnym świecie po udanym logowaniu aplikacja robi dwie rzeczy:

  1. unieważnia dotychczasową sesję (anonimową),
  2. generuje nowy identyfikator sesji dla stanu zalogowanego.

Tutaj drugi krok nie następował konsekwentnie. Aplikacja potrafiła przejść z “anonim” do “zalogowany” w ramach tego samego identyfikatora sesji, jeśli ten identyfikator był już ustawiony w przeglądarce przed logowaniem.

To właśnie otwiera drzwi do session fixation: atakujący “przykleja” użytkownikowi sesję, a potem czeka aż ofiara się zaloguje.

Jak pracowaliśmy: testy sesji bez czarnej magii

To nie są testy typu „strzelam payloadem i zobaczę co się stanie”. To jest raczej chirurgia:

  • obserwacja cookies i tokenów przed logowaniem,
  • analiza, czy po logowaniu następuje rotacja (Set-Cookie z nowym identyfikatorem),
  • weryfikacja, czy stara sesja jest unieważniana,
  • sprawdzenie, jak zachowują się równoległe sesje (ten sam user na dwóch urządzeniach, refresh, logout).

W praktyce sesje zdradzają się w prostych rzeczach: identyfikator nie zmienia się, a stan uprawnień rośnie. To jest sygnał ostrzegawczy.

Odkrycie: scenariusz przejęcia sesji (kontrolowany PoC)

Poniżej mechanika, zanonimizowana i skrócona do minimum.

Krok 1: atakujący inicjuje sesję i “przygotowuje” identyfikator

Atakujący uzyskuje identyfikator sesji (np. przez własną inicjację sesji na stronie) i doprowadza do tego, że ofiara zaczyna korzystać z aplikacji z tym samym identyfikatorem sesji.

Sposoby “dostarczenia” sesji w prawdziwym życiu to osobny temat (phishing, linki, błędy w przekazywaniu parametrów, źle ustawione subdomeny). W testach robiliśmy to bezpiecznie i w kontrolowanym środowisku.

Krok 2: ofiara loguje się, a sesja nie jest rotowana

Ofiara loguje się normalnie. Backend nie generuje nowej sesji po logowaniu, tylko “podnosi” uprawnienia w tej samej.

Krok 3: atakujący używa tego samego session ID

Atakujący, znając session ID, może odtworzyć stan zalogowanej sesji.

To jest to, co boli najbardziej: użytkownik robi wszystko “poprawnie”, a konto i tak może zostać przejęte.

Dlaczego to było groźne biznesowo

W systemach B2B przejęcie konta to zwykle nie “ktoś zobaczył profil”. To często:

  • dostęp do dokumentów, faktur, danych kontraktowych,
  • możliwość eksportów (czyli łatwe “wyniesienie” danych),
  • działania w imieniu organizacji (zależnie od ról).

Do tego dochodzi problem wykrywalności: sesja wygląda jak normalna, bo jest normalna. W logach to zwykle będzie “użytkownik zalogowany i aktywny”.

Remediacja: co wdrożyliśmy i dlaczego to działa

Naprawa sesji musi być banalnie konsekwentna. Nie “w większości przypadków”. Zawsze.

1) Rotacja identyfikatora sesji po logowaniu
Po udanym logowaniu generowany jest nowy session ID. Stara sesja jest unieważniana.

2) Unieważnianie sesji po zmianie uprawnień
Jeśli zmienia się stan bezpieczeństwa (logowanie, reset hasła, podniesienie roli), sesja musi się odświeżyć lub zostać odtworzona w bezpieczny sposób.

3) Twarde ustawienia cookies
Wdrożenie flag: HttpOnly, Secure, SameSite (dobrane do realnego flow SSO). To ogranicza kradzież sesji przez pewne klasy ataków i minimalizuje ryzyko “wycieku” w nietypowych scenariuszach.

4) Wylogowanie unieważnia serwerowo
Logout to nie tylko “usuń cookie”. Serwer musi unieważnić sesję po stronie backendu.

5) Testy regresji
Dodaliśmy testy, które sprawdzają rotację sesji po logowaniu i brak możliwości “kontynuowania” sesji anonimowej jako zalogowanej bez zmiany identyfikatora. To jest mała rzecz, a ratuje przyszłość.

Po wdrożeniu wykonaliśmy retesty i potwierdziliśmy, że sesja rotuje się zawsze, a stary identyfikator nie daje dostępu do zasobów po zalogowaniu.

Efekt: mniej ryzyka “cichego przejęcia” i lepsza higiena sesji

Po poprawkach klient dostał stabilny wzorzec zarządzania sesją, który działa zarówno dla klasycznego logowania, jak i dla SSO. To też ułatwiło pracę zespołowi, bo zniknęły “dziwne” przypadki typu: ktoś się wylogował, a sesja dalej żyje, albo sesje zachowują się inaczej w zależności od ścieżki wejścia.

To jest dokładnie ta kategoria poprawek, które nie wyglądają spektakularnie na slajdzie, ale realnie zmniejszają ryzyko incydentu.

Jak Pentestica może pomóc

Jeśli masz portal B2B, panel klienta, aplikację z rolami, SSO albo wrażliwe dane, testy penetracyjne powinny obejmować nie tylko podatności “w polach formularza”, ale też logikę sesji, uprawnień i przepływów logowania.

W Pentestica robimy pentesty aplikacji web i API z naciskiem na rzeczy, które najczęściej prowadzą do realnych incydentów: autoryzacja, sesje, multi-tenant, integracje, logika biznesowa.

Cyberbezpieczeństwo dla firm - Pentestica

Redakcja Pentestica.pl zespół ekspertów ds. cyberbezpieczeństwa, którzy dzielą się swoją wiedzą i praktycznym doświadczeniem w zakresie testów penetracyjnych, audytów it, regulacji NIS2, MiCA, DORA i nowych technologii. Nasi autorzy to doświadczeni pentesterzy, specjaliści bezpieczeństwa IT oraz konsultanci, którzy z pasją tworzą profesjonalne artykuły, aby przybliżyć Państwu tematykę cyberbezpieczeństwa w praktyce. Znajdą tu Państwo dogłębne analizy zagrożeń, omówienia technik ataków, porady dotyczące ochrony systemów oraz praktyczne wskazówki z zakresu testów penetracyjnych i wdrożeń regulacji. Naszym celem jest dostarczanie rzetelnej i aktualnej wiedzy, która pomoże Państwu lepiej zrozumieć świat cyberbezpieczeństwa i skutecznie chronić swoje zasoby cyfrowe.