Κατάληψη Λογαριασμού

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

Πρόβλημα Εξουσιοδότησης

Πρέπει να επιχειρηθεί η αλλαγή του email ενός λογαριασμού και η διαδικασία επιβεβαίωσης πρέπει να εξεταστεί. Εάν βρεθεί αδύναμη, το email πρέπει να αλλάξει σε αυτό του επιδιωκόμενου θύματος και να επιβεβαιωθεί.

Πρόβλημα Κανονικοποίησης Unicode

  1. Ο λογαριασμός του επιδιωκόμενου θύματος victim@gmail.com
  2. Ένας λογαριασμός πρέπει να δημιουργηθεί χρησιμοποιώντας Unicode\
    για παράδειγμα: vićtim@gmail.com

Όπως εξηγείται στο this talk, η παραπάνω επίθεση μπορεί επίσης να γίνει με κατάχρηση παρόχων ταυτότητας τρίτων:

  • Δημιουργήστε έναν λογαριασμό στον πάροχο ταυτότητας τρίτου με email παρόμοιο με του θύματος χρησιμοποιώντας κάποιο unicode χαρακτήρα (vićtim@company.com).
  • Ο πάροχος τρίτου δεν πρέπει να επαληθεύει το email
  • Εάν ο πάροχος ταυτότητας επαληθεύει το email, ίσως μπορείτε να στοχεύσετε το domain μέρος όπως: victim@ćompany.com και να καταχωρίσετε αυτό το domain και να ελπίζετε ότι ο πάροχος ταυτότητας θα παράγει την ascii έκδοση του domain ενώ η πλατφόρμα του θύματος θα κανονικοποιεί το domain name.
  • Συνδεθείτε μέσω αυτού του παρόχου ταυτότητας στην πλατφόρμα του θύματος που θα πρέπει να κανονικοποιήσει το unicode χαρακτήρα και να σας επιτρέψει την πρόσβαση στον λογαριασμό του θύματος.

Για περισσότερες λεπτομέρειες, ανατρέξτε στο έγγραφο για την Κανονικοποίηση Unicode:

Unicode Normalization

Επανάχρηση Reset Token

Εάν το σύστημα-στόχος επιτρέπει την επανάχρηση του reset link, πρέπει να γίνουν προσπάθειες να βρεθούν περισσότερα reset links χρησιμοποιώντας εργαλεία όπως gau, wayback, ή scan.io.

Προ-Κατάληψη Λογαριασμού

  1. Το email του θύματος πρέπει να χρησιμοποιηθεί για εγγραφή στην πλατφόρμα και πρέπει να οριστεί ένας κωδικός (πρέπει να γίνει προσπάθεια επιβεβαίωσης, αν και η έλλειψη πρόσβασης στα emails του θύματος μπορεί να το καθιστά αδύνατο).
  2. Πρέπει να περιμένετε μέχρι το θύμα να εγγραφεί χρησιμοποιώντας OAuth και να επιβεβαιώσει τον λογαριασμό.
  3. Ελπίζεται ότι η κανονική εγγραφή θα επιβεβαιωθεί, επιτρέποντας την πρόσβαση στον λογαριασμό του θύματος.

CORS Misconfiguration για Κατάληψη Λογαριασμού

Εάν η σελίδα περιέχει CORS misconfigurations, ίσως να μπορείτε να κλέψετε ευαίσθητες πληροφορίες από τον χρήστη για να καταλάβετε τον λογαριασμό του ή να τον κάνετε να αλλάξει auth πληροφορίες για τον ίδιο σκοπό:

CORS - Misconfigurations & Bypass

Csrf για Κατάληψη Λογαριασμού

Εάν η σελίδα είναι ευάλωτη σε CSRF, μπορεί να καταφέρετε να κάνετε τον χρήστη να αλλάξει τον κωδικό του, το email ή στοιχεία authentication ώστε να μπορέσετε στη συνέχεια να αποκτήσετε πρόσβαση:

CSRF (Cross Site Request Forgery)

XSS για Κατάληψη Λογαριασμού

Εάν βρείτε XSS στην εφαρμογή, μπορεί να καταφέρετε να κλέψετε cookies, το local storage, ή πληροφορίες από τη σελίδα που θα μπορούσαν να σας επιτρέψουν να καταλάβετε τον λογαριασμό:

XSS (Cross Site Scripting)

  • Attribute-only reflected payloads σε σελίδες login μπορούν να κάνουν hook στο document.onkeypress, να εξάγουν keystrokes μέσω new Image().src, και να κλέψουν credentials χωρίς να υποβάλουν τη φόρμα. Δείτε Attribute-only login XSS behind WAFs για μια πρακτική ροή εργασίας.

Same Origin + Cookies

Εάν βρείτε περιορισμένο XSS ή subdomain takeover, μπορείτε να πειραματιστείτε με τα cookies (π.χ. fixating) για να προσπαθήσετε να συμβιβάσετε τον λογαριασμό του θύματος:

Cookies Hacking

Επίθεση στον Μηχανισμό Επαναφοράς Κωδικού

Reset/Forgotten Password Bypass

Security-question resets that trust client-supplied usernames

Εάν μια ροή “update security questions” παίρνει παράμετρο username παρόλο που ο καλών είναι ήδη authenticated, μπορείτε να αντικαταστήσετε τα δεδομένα ανάκτησης οποιουδήποτε λογαριασμού (συμπεριλαμβανομένων των admins) επειδή το backend τυπικά εκτελεί UPDATE ... WHERE user_name = ? με την μη αξιόπιστη τιμή σας. Το μοτίβο είναι:

  1. Συνδεθείτε με έναν προσωρινό χρήστη (throwaway user) και καταγράψτε το session cookie.
  2. Υποβάλετε το username του θύματος μαζί με νέες απαντήσεις μέσω της φόρμας επαναφοράς.
  3. Αμέσως κάντε authentication μέσω του security-question login endpoint χρησιμοποιώντας τις απαντήσεις που μόλις εισαγάγατε για να κληρονομήσετε τα προνόμια του θύματος.
POST /reset.php HTTP/1.1
Host: file.era.htb
Cookie: PHPSESSID=<low-priv>
Content-Type: application/x-www-form-urlencoded

username=admin_ef01cab31aa&new_answer1=A&new_answer2=B&new_answer3=C

Οτιδήποτε προστατεύεται από το πλαίσιο του θύματος $_SESSION (admin dashboards, dangerous stream-wrapper features, κ.λπ.) είναι τώρα εκτεθειμένο χωρίς να αγγίζετε τις πραγματικές απαντήσεις.

Οι απαριθμημένοι usernames μπορούν στη συνέχεια να στοχευθούν μέσω της τεχνικής overwrite παραπάνω ή να επαναχρησιμοποιηθούν ενάντια σε δευτερεύουσες υπηρεσίες (FTP/SSH password spraying).

Response Manipulation

Αν η απόκριση αυθεντικοποίησης μπορεί να μειωθεί σε ένα απλό boolean, δοκίμασε απλώς να αλλάξεις false σε true και δες αν αποκτάς πρόσβαση.

OAuth to Account takeover

OAuth to Account takeover

Host Header Injection

  1. Το Host header τροποποιείται μετά την έναρξη ενός αιτήματος επαναφοράς κωδικού.
  2. Το X-Forwarded-For proxy header αλλάζεται σε attacker.com.
  3. Τα Host, Referrer και Origin headers αλλάζουν ταυτόχρονα σε attacker.com.
  4. Μετά την έναρξη επαναφοράς κωδικού και την επιλογή επανεξαποστολής του mail, εφαρμόζονται και οι τρεις προαναφερθείσες μέθοδοι.

Response Manipulation

  1. Code Manipulation: Ο κώδικας κατάστασης αλλάζεται σε 200 OK.
  2. Code and Body Manipulation:
  • Ο κώδικας κατάστασης αλλάζει σε 200 OK.
  • Το response body τροποποιείται σε {"success":true} ή σε κενό αντικείμενο {}.

Αυτές οι τεχνικές χειρισμού είναι αποτελεσματικές σε σενάρια όπου το JSON χρησιμοποιείται για μετάδοση και λήψη δεδομένων.

Αλλαγή email της τρέχουσας συνεδρίας

From this report:

  • Attacker requests to change his email with a new one
  • Attacker receives a link to confirm the change of the email
  • Attacker send the victim the link so he clicks it
  • The victims email is changed to the one indicated by the attacker
  • The attack can recover the password and take over the account

This also happened in this report.

Bypass email verification for Account Takeover

  • Attacker logins with attacker@test.com and verifies email upon signup.
  • Attacker changes verified email to victim@test.com (no secondary verification on email change)
  • Now the website allows victim@test.com to login and we have bypassed email verification of victim user.

Παλιά Cookies

Όπως εξηγείται in this post, ήταν δυνατό να κάνεις login σε έναν λογαριασμό, να αποθηκεύσεις τα cookies ως authenticated user, να κάνεις logout, και στη συνέχεια να κάνεις login ξανά.
Με το νέο login, αν και μπορεί να δημιουργηθούν διαφορετικά cookies, τα παλιά άρχισαν να λειτουργούν ξανά.

Trusted device cookies + batch API leakage

Long-lived device identifiers that gate recovery can be stolen when a batch API lets you copy unreadable subresponses into writable sinks.

  • Εντοπίστε ένα trusted-device cookie (SameSite=None, long-lived) που χρησιμοποιείται για να χαλαρώσει τους ελέγχους ανάκτησης.
  • Βρείτε ένα first-party endpoint που επιστρέφει αυτό το device ID σε JSON (π.χ., an OAuth code exchange returning machine_id) αλλά δεν είναι αναγνώσιμο cross-origin.
  • Χρησιμοποιήστε ένα batch/chained API που επιτρέπει την αναφορά σε προηγούμενες subresponses ({result=name:$.path}) και τη γραφή τους σε ένα attacker-visible sink (page post, upload-by-URL, κ.λπ.). Παράδειγμα με Facebook Graph API:
POST https://graph.facebook.com/
batch=[
{"method":"post","omit_response_on_success":0,"relative_url":"/oauth/access_token?client_id=APP_ID%26redirect_uri=REDIRECT_URI","body":"code=SINGLE_USE_CODE","name":"leaker"},
{"method":"post","relative_url":"PAGE_ID/posts","body":"message={result=leaker:$.machine_id}"}
]
access_token=PAGE_ACCESS_TOKEN&method=post
  • Φόρτωσε το batch URL σε ένα κρυφό <iframe> ώστε το θύμα να στείλει το trusted-device cookie· το JSON-path reference αντιγράφει το machine_id στο attacker-controlled post ακόμα και αν το OAuth response είναι μη αναγνώσιμο από τη σελίδα.
  • Replay: όρισε το κλεμμένο device cookie σε νέα συνεδρία. Η Recovery τώρα αντιμετωπίζει τον browser ως trusted, συχνά εκθέτοντας ασθενέστερες “no email/phone” ροές (π.χ., automated document upload) που επιτρέπουν την προσθήκη attacker email χωρίς password ή 2FA.

Αναφορές

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