Chrome Cache to XSS

Reading time: 3 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

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

Η τεχνική που συζητείται εδώ περιλαμβάνει την κατανόηση της συμπεριφοράς και της αλληλεπίδρασης δύο κύριων τύπων 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, αντίστοιχα.

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