Chrome Cache to XSS

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Περισσότερες λεπτομέρειες σε αυτό το άρθρο.

Η τεχνική που συζητείται εδώ περιλαμβάνει την κατανόηση της συμπεριφοράς και της αλληλεπίδρασης δύο κύριων τύπων μνήμης cache: η μνήμη cache προς τα πίσω/προς τα εμπρός (bfcache) και η μνήμη cache δίσκου. Η bfcache, η οποία αποθηκεύει μια πλήρη στιγμιότυπο μιας σελίδας συμπεριλαμβανομένου του σωρού JavaScript, έχει προτεραιότητα έναντι της μνήμης cache δίσκου για τις πλοήγησεις προς τα πίσω/προς τα εμπρός λόγω της δυνατότητάς της να αποθηκεύει έναν πιο ολοκληρωμένο στιγμιότυπο. Η μνήμη cache δίσκου, αντίθετα, αποθηκεύει πόρους που ανακτήθηκαν από τον ιστό χωρίς να συμπεριλαμβάνει το σωρό JavaScript και χρησιμοποιείται για τις πλοηγήσεις προς τα πίσω/προς τα εμπρός για να μειώσει το κόστος επικοινωνίας. Ένα ενδιαφέρον στοιχείο της μνήμης cache δίσκου είναι η συμπερίληψη πόρων που ανακτήθηκαν χρησιμοποιώντας τη μέθοδο fetch, πράγμα που σημαίνει ότι οι πόροι που ανακτήθηκαν από το URL θα απεικονιστούν από τον περιηγητή από την μνήμη cache.

Κύρια Σημεία:

  • Η bfcache έχει προτεραιότητα έναντι της μνήμης cache δίσκου στις πλοηγήσεις προς τα πίσω/προς τα εμπρός.

  • Για να χρησιμοποιηθεί μια σελίδα που αποθηκεύεται στη μνήμη cache δίσκου αντί για την bfcache, η τελευταία πρέπει να απενεργοποιηθεί.

Απενεργοποίηση της bfcache:

Από προεπιλογή, το Puppeteer απενεργοποιεί την bfcache, συμμορφούμενο με τις συνθήκες που αναφέρονται στην τεκμηρίωση του Chromium. Ένας αποτελεσματικός τρόπος για να απενεργοποιηθεί η bfcache είναι μέσω της χρήσης της RelatedActiveContentsExist, που επιτυγχάνεται ανοίγοντας μια σελίδα με τη χρήση της window.open() που διατηρεί μια αναφορά στο window.opener.

Αναπαραγωγή της συμπεριφοράς:

  1. Επισκεφθείτε μια ιστοσελίδα, π.χ., https://example.com.

  2. Εκτελέστε την εντολή open("http://spanote.seccon.games:3000/api/token"), η οποία έχει ως αποτέλεσμα μια απόκριση του διακομιστή με κωδικό κατάστασης 500.

  3. Στη νεοανοιγμένη καρτέλα, πλοηγηθείτε στη διεύθυνση http://spanote.seccon.games:3000/. Αυτή η ενέργεια αποθηκεύει την απόκριση του http://spanote.seccon.games:3000/api/token ως μνήμη cache δίσκου.

  4. Χρησιμοποιήστε την εντολή history.back() για να πλοηγηθείτε πίσω. Η ενέργεια έχει ως αποτέλεσμα την απεικόνιση της αποθηκευμένης απόκρισης JSON στη σελίδα.

Η επαλήθευση ότι χρησιμοποιήθηκε η μνήμη cache δίσκου μπορεί να επιβεβαιωθεί μέσω της χρήσης των DevTools στο Google Chrome.

Για περαιτέρω λεπτομέρειες σχετικά με την bfcache και τη μνήμη cache δίσκου, μπορείτε να βρείτε αναφορές στο web.dev για την bfcache και στα [εγγράφα σχεδίασης του Chromium για

Last updated