Chrome Cache to XSS

Υποστήριξη HackTricks

Περισσότερες λεπτομέρειες σε αυτή την αναφορά.

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

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

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

  • Για να χρησιμοποιηθεί μια σελίδα που είναι αποθηκευμένη στη disk 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 ως disk cache.

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

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

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

Υποστήριξη HackTricks

Last updated