Chrome Cache to XSS

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Детальніші відомості у цьому описі.

Техніка, яка обговорюється тут, передбачає розуміння поведінки та взаємодії двох основних типів кешу: кешування back/forward (bfcache) та дискового кешу. Кеш bfcache, який зберігає повний знімок сторінки, включаючи купу JavaScript, має пріоритет перед дисковим кешем для навігації back/forward через здатність зберігати більш повний знімок. Дисковий кеш, навпаки, зберігає ресурси, отримані з мережі, без включення купи JavaScript і використовується для навігації back/forward для зменшення витрат на зв'язок. Цікавою особливістю дискового кешу є включення ресурсів, отриманих за допомогою fetch, що означає, що доступні ресурси URL будуть відображені браузером з кешу.

Ключові моменти:

  • Bfcache має пріоритет перед дисковим кешем у навігації back/forward.

  • Щоб скористатися сторінкою, збереженою в дисковому кеші замість 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 як дисковий кеш.

  4. Використовуйте history.back(), щоб повернутися назад. Ця дія призводить до відображення кешованої відповіді JSON на сторінці.

Підтвердження використання дискового кешу можна підтвердити за допомогою DevTools у Google Chrome.

Для отримання додаткових відомостей про bfcache та дисковий кеш, див. посилання на web.dev про bfcache та документи про дизайн дискового кешу Chromium відповідно.

Last updated