Chrome Cache to XSS

Wsparcie dla HackTricks

Więcej szczegółów w tym opracowaniu.

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 stertę JavaScript, ma pierwszeństwo przed pamięcią podręczną dysku w 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 sterty 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.

Kluczowe punkty:

  • 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.

Wyłączanie 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 przez otwarcie strony za pomocą window.open(), która zachowuje odniesienie do window.opener.

Reprodukcja zachowania:

  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 o bfcache oraz dokumentach projektowych Chromium na temat pamięci podręcznej dysku, odpowiednio.

Wsparcie dla HackTricks

Last updated