# Chrome Cache to XSS {{#include ../../banners/hacktricks-training.md}} More in depth details [**in this writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote). Technika omówiona tutaj polega na zrozumieniu zachowania i interakcji dwóch głównych typów pamięci podręcznej: **back/forward cache (bfcache)** i **disk cache**. bfcache, który przechowuje pełny zrzut strony, w tym stos JavaScript, ma pierwszeństwo przed pamięcią podręczną dysku w przypadku nawigacji wstecz/naprzód z powodu swojej zdolności do przechowywania bardziej kompleksowego zrzutu. Pamięć podręczna dysku, w przeciwieństwie do tego, przechowuje zasoby pobrane z sieci bez uwzględnienia stosu JavaScript i jest wykorzystywana do nawigacji wstecz/naprzód w celu zmniejszenia kosztów komunikacji. Interesującym aspektem pamięci podręcznej dysku jest jej uwzględnienie zasobów pobranych za pomocą `fetch`, co oznacza, że zasoby URL będą renderowane przez przeglądarkę z pamięci podręcznej. ### Key Points: - **bfcache** ma pierwszeństwo przed pamięcią podręczną dysku w nawigacji wstecz/naprzód. - Aby wykorzystać stronę przechowywaną w pamięci podręcznej dysku zamiast bfcache, to ostatnie musi być wyłączone. ### Disabling bfcache: Domyślnie Puppeteer wyłącza bfcache, zgodnie z warunkami wymienionymi w dokumentacji Chromium. Jedną z efektywnych metod wyłączenia bfcache jest użycie `RelatedActiveContentsExist`, osiągnięte poprzez otwarcie strony za pomocą `window.open()`, która zachowuje odniesienie do `window.opener`. ### Reproducing the behavior: 1. Odwiedź stronę internetową, np. `https://example.com`. 2. Wykonaj `open("http://spanote.seccon.games:3000/api/token")`, co skutkuje odpowiedzią serwera z kodem statusu 500. 3. W nowo otwartej karcie przejdź do `http://spanote.seccon.games:3000/`. Ta akcja buforuje odpowiedź `http://spanote.seccon.games:3000/api/token` jako pamięć podręczną dysku. 4. Użyj `history.back()`, aby wrócić. Akcja ta skutkuje renderowaniem buforowanej odpowiedzi JSON na stronie. Weryfikację, że pamięć podręczna dysku została wykorzystana, można potwierdzić za pomocą DevTools w Google Chrome. Aby uzyskać więcej informacji na temat bfcache i pamięci podręcznej dysku, odniesienia można znaleźć na [web.dev on bfcache](https://web.dev/i18n/en/bfcache/) oraz [dokumentach projektowych Chromium na temat pamięci podręcznej dysku](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), odpowiednio. {{#include ../../banners/hacktricks-training.md}}