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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
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:
- Odwiedź stronę internetową, np.
https://example.com
. - Wykonaj
open("http://spanote.seccon.games:3000/api/token")
, co skutkuje odpowiedzią serwera z kodem statusu 500. - 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. - 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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.