Chrome Cache to XSS

Reading time: 3 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

More in depth details in this writeup.

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

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks