Reset/Forgotten Password Bypass

Reading time: 6 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Wyciekanie Tokena Resetowania Hasła Poprzez Referer

  • Nagłówek HTTP referer może wyciekać token resetowania hasła, jeśli jest zawarty w URL. Może to nastąpić, gdy użytkownik kliknie link do strony trzeciej po zażądaniu resetowania hasła.
  • Wpływ: Potencjalne przejęcie konta za pomocą ataków Cross-Site Request Forgery (CSRF).
  • Eksploatacja: Aby sprawdzić, czy token resetowania hasła wycieka w nagłówku referer, zażądaj resetowania hasła na swój adres e-mail i kliknij link resetujący. Nie zmieniaj hasła od razu. Zamiast tego, przejdź do strony trzeciej (takiej jak Facebook lub Twitter), jednocześnie przechwytując żądania za pomocą Burp Suite. Sprawdź żądania, aby zobaczyć, czy nagłówek referer zawiera token resetowania hasła, ponieważ może to ujawnić wrażliwe informacje osobom trzecim.
  • Odnośniki:
  • HackerOne Report 342693
  • HackerOne Report 272379
  • Artykuł o Wycieku Tokena Resetowania Hasła

Zatrucie Resetowania Hasła

  • Atakujący mogą manipulować nagłówkiem Host podczas żądań resetowania hasła, aby skierować link resetujący na złośliwą stronę.
  • Wpływ: Prowadzi do potencjalnego przejęcia konta poprzez wyciek tokenów resetowania do atakujących.
  • Kroki łagodzące:
  • Waliduj nagłówek Host w porównaniu do białej listy dozwolonych domen.
  • Używaj bezpiecznych, serwerowych metod do generowania absolutnych URL.
  • Łatka: Użyj $_SERVER['SERVER_NAME'] do konstruowania URL resetowania hasła zamiast $_SERVER['HTTP_HOST'].
  • Odnośniki:
  • Artykuł Acunetix o Zatruciu Resetowania Hasła

Resetowanie Hasła Poprzez Manipulację Parametrem E-mail

Atakujący mogą manipulować żądaniem resetowania hasła, dodając dodatkowe parametry e-mail, aby przekierować link resetujący.

  • Dodaj e-mail atakującego jako drugi parametr używając &
php
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
  • Dodaj email atakującego jako drugi parametr używając %20
php
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
  • Dodaj email atakującego jako drugi parametr, używając |
php
POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
  • Dodaj email atakującego jako drugi parametr, używając cc
php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
  • Dodaj email atakującego jako drugi parametr, używając bcc
php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
  • Dodaj email atakującego jako drugi parametr, używając ,
php
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
  • Dodaj email atakującego jako drugi parametr w tablicy json
php
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}

Zmiana e-maila i hasła dowolnego użytkownika za pomocą parametrów API

  • Atakujący mogą modyfikować parametry e-maila i hasła w żądaniach API, aby zmienić dane logowania do konta.
php
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})

Brak ograniczeń szybkości: Bombardowanie e-mailem

  • Brak ograniczeń szybkości w żądaniach resetowania hasła może prowadzić do bombardowania e-mailem, przytłaczając użytkownika e-mailami resetującymi.
  • Kroki łagodzenia:
  • Wprowadź ograniczenia szybkości na podstawie adresu IP lub konta użytkownika.
  • Użyj wyzwań CAPTCHA, aby zapobiec automatycznemu nadużywaniu.
  • Referencje:
  • Raport HackerOne 280534

Dowiedz się, jak generowany jest token resetowania hasła

  • Zrozumienie wzoru lub metody generowania tokenów może prowadzić do przewidywania lub łamania tokenów. Niektóre opcje:
  • Na podstawie znacznika czasu
  • Na podstawie UserID
  • Na podstawie e-maila użytkownika
  • Na podstawie imienia i nazwiska
  • Na podstawie daty urodzenia
  • Na podstawie kryptografii
  • Kroki łagodzenia:
  • Użyj silnych, kryptograficznych metod generowania tokenów.
  • Zapewnij wystarczającą losowość i długość, aby zapobiec przewidywalności.
  • Narzędzia: Użyj Burp Sequencer, aby analizować losowość tokenów.

Przewidywalny UUID

  • Jeśli UUID (wersja 1) są przewidywalne, atakujący mogą je łamać, aby generować ważne tokeny resetowania. Sprawdź:

{{#ref}} uuid-insecurities.md {{#endref}}

  • Kroki łagodzenia:
  • Użyj GUID wersji 4 dla losowości lub wprowadź dodatkowe środki bezpieczeństwa dla innych wersji.
  • Narzędzia: Użyj guidtool do analizy i generowania GUID-ów.

Manipulacja odpowiedzią: Zastąpienie złej odpowiedzi dobrą

  • Manipulowanie odpowiedziami HTTP, aby obejść komunikaty o błędach lub ograniczenia.
  • Kroki łagodzenia:
  • Wprowadź kontrole po stronie serwera, aby zapewnić integralność odpowiedzi.
  • Użyj bezpiecznych kanałów komunikacyjnych, takich jak HTTPS, aby zapobiec atakom typu man-in-the-middle.
  • Referencja:
  • Krytyczny błąd w wydarzeniu Live Bug Bounty

Używanie wygasłego tokena

  • Testowanie, czy wygasłe tokeny mogą być nadal używane do resetowania hasła.
  • Kroki łagodzenia:
  • Wprowadź ścisłe zasady wygasania tokenów i waliduj wygasanie tokenów po stronie serwera.

Brute Force Token Resetowania Hasła

  • Próba złamania tokena resetowania za pomocą narzędzi takich jak Burpsuite i IP-Rotator, aby obejść ograniczenia szybkości oparte na IP.
  • Kroki łagodzenia:
  • Wprowadź solidne mechanizmy ograniczania szybkości i blokady konta.
  • Monitoruj podejrzane działania wskazujące na ataki brute-force.

Spróbuj użyć swojego tokena

  • Testowanie, czy token resetowania atakującego może być użyty w połączeniu z e-mailem ofiary.
  • Kroki łagodzenia:
  • Upewnij się, że tokeny są powiązane z sesją użytkownika lub innymi atrybutami specyficznymi dla użytkownika.

Unieważnienie sesji przy wylogowaniu/resetowaniu hasła

  • Zapewnienie, że sesje są unieważniane, gdy użytkownik się wylogowuje lub resetuje hasło.
  • Kroki łagodzenia:
  • Wprowadź odpowiednie zarządzanie sesjami, zapewniając, że wszystkie sesje są unieważniane po wylogowaniu lub resetowaniu hasła.

Unieważnienie sesji przy wylogowaniu/resetowaniu hasła

  • Tokeny resetowania powinny mieć czas wygaśnięcia, po którym stają się nieważne.
  • Kroki łagodzenia:
  • Ustaw rozsądny czas wygaśnięcia dla tokenów resetowania i ściśle egzekwuj go po stronie serwera.

Referencje

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks