Wykorzystywanie luk w mechanizmach resetowania hasła – analiza zagrożeń i technik ataku

Resetowanie hasła to funkcja powszechnie wykorzystywana w aplikacjach internetowych, która ma na celu zapewnienie wygody i dostępności kont użytkowników. Niestety, źle zaimplementowany mechanizm resetu może stanowić poważną lukę bezpieczeństwa, umożliwiającą przejęcie konta bez znajomości hasła. W artykule przyjrzymy się najczęściej spotykanym metodom resetowania hasła oraz błędom, które są z nimi związane. Co więcej, artykuł wyjaśnia, w jaki sposób atakujący wykorzystują przewidywalne tokeny oraz jakie narzędzia wspierają ataki typu brute force. Zrozumienie tych zagrożeń jest kluczowe dla zabezpieczania nowoczesnych aplikacji webowych.


Najczęstsze metody resetowania hasła i ich słabe punkty

Mechanizm resetowania hasła zazwyczaj opiera się na jednej z trzech metod: poprzez e-mail, SMS lub pytania bezpieczeństwa. Mimo zastosowanych zabezpieczeń każda z tych metod posiada podatności, które atakujący mogą realnie wykorzystać.

  • Reset przez e-mail wymaga zaufania do bezpieczeństwa konta pocztowego użytkownika oraz tajności linku resetującego. Jeśli łącze nie wygasa szybko lub token jest przewidywalny, atak staje się możliwy.
  • Reset przez pytania bezpieczeństwa może zostać złamany, jeśli odpowiedzi są zbyt oczywiste lub dane osobowe użytkownika są dostępne publicznie.
  • Reset przez SMS jest podatny na ataki typu SIM swapping, w których numer telefonu zostaje przejęty przez atakującego.

W każdej z tych metod ogromne znaczenie ma sposób generowania, przesyłania i weryfikowania tokenów resetujących hasło.


Przewidywalne tokeny – poważne zagrożenie bezpieczeństwa

Jednym z największych zagrożeń w kontekście resetowania hasła są tokeny o przewidywalnej strukturze, które można odgadnąć lub wygenerować metodą brute-force. Dla przykładu:

$token = mt_rand(100, 200);

Co istotne, w powyższym kodzie autor zawęził zakres tokena do losowych wartości od 100 do 200, aby uprościć proces testowania. To sprawia, że możliwych kombinacji jest zaledwie 101. Brak złożoności tokena drastycznie obniża poziom bezpieczeństwa.


Praktyczna demonstracja ataku

Na potrzeby testów można odwiedzić http://enum.thm/labs/predictable_tokens/. Po przesłaniu formularza z adresem e-mail admin@admin.com, aplikacja informuje o wysłaniu linku resetującego. Przechodząc do adresu URL resetu, np.:

http://enum.thm/labs/predictable_tokens/reset_password.php?token=123

można zauważyć, że token ma formę prostej liczby. Co więcej, w procesie odgadywania prawidłowego tokena wykorzystujemy Burp Suite w połączeniu z modułem Intruder oraz generatorem słownika Crunch.

crunch 3 3 -o otp.txt -t %%% -s 100 -e 200

W ten sposób generuje się wszystkie możliwe trzycyfrowe kombinacje. Zaimportowanie listy do Intrudera i wysłanie żądań do serwera pozwala zidentyfikować prawidłowy token na podstawie zmiany długości odpowiedzi.


Krytyczne błędy w logice resetowania

Podczas analizy błędów w logice resetu hasła należy zwrócić szczególną uwagę na:

  • Brak wygasania tokenów – zbyt długi czas życia tokenów zwiększa ryzyko ich przechwycenia.
  • Brak walidacji tokena po jego użyciu – ponowne użycie tego samego tokena może umożliwić wielokrotne logowania.
  • Użycie protokołów niezabezpieczonych (brak HTTPS) – dane przesyłane wrażliwymi kanałami mogą zostać przechwycone.
  • Ujawnianie informacji w komunikatach systemowych – np. „E-mail nie istnieje” potwierdza istnienie konta i umożliwia jego wyliczenie.

Podsumowanie:


Mechanizmy resetowania hasła, mimo że zaprojektowane z myślą o użytkownikach, mogą stać się bronią w rękach atakujących. W artykule omówiono, jak przewidywalne tokeny i źle zabezpieczone przepływy uwierzytelniania są wykorzystywane do ataków typu brute-force i przejęcia kont. Aby ograniczyć ryzyko, należy stosować tokeny o dużej entropii, krótkim czasie życia oraz uniemożliwiać ich ponowne użycie. Ponadto, wszystkie komunikaty systemowe powinny być neutralne i pozbawione szczegółów. Wdrożenie najlepszych praktyk w zakresie bezpiecznego resetowania haseł to jeden z filarów skutecznej ochrony aplikacji webowych.

źródło: https://tryhackme.com/room/enumerationbruteforce dostęp 11.04.2025

AI analiza bezpieczeństwa aplikacje i programy automatyzacja bezpieczeństwo informacji bezpieczeństwo IT bezpieczeństwo obronne bezpieczeństwo ofensywne cyberbezpieczeństwo cyberbezpieczeństwo bezpieczeństwo informacji cyberzagrożenia zarządzanie ryzykiem bezpieczeństwo IT cyberzagrożenia definicje inżynieria bezpieczeństwa języki kodowania kariera linux podstawowe narzędzia podstawowe narzędzia sieciowe protokoły systemy operacyjne sztuczna inteligencja teoria sieci testowanie typowe ataki ubezpieczenia usługi sieciowe wiadomości windows zadania zarządzanie i regulacje zarządzanie ryzykiem zarządzenia i regulacje zasady bezpieczeństwa