3.8 KiB
Chrome Cache do XSS
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
- Pracujesz w firmie zajmującej się cyberbezpieczeństwem? Chcesz zobaczyć swoją firmę reklamowaną w HackTricks? A może chcesz mieć dostęp do najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF? Sprawdź PLAN SUBSKRYPCJI!
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź mnie na Twitterze 🐦@carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium hacktricks i repozytorium hacktricks-cloud.
Więcej szczegółów w tym opracowaniu.
Omawiana tutaj technika polega na zrozumieniu zachowania i interakcji dwóch podstawowych typów pamięci podręcznej: pamięci podręcznej wstecz/przód (bfcache) i pamięci podręcznej dysku. Pamięć podręczna bfcache, która przechowuje kompletny zrzut strony, włącznie z stosem JavaScript, ma pierwszeństwo przed pamięcią podręczną dysku podczas nawigacji wstecz/przód ze względu na możliwość przechowywania bardziej kompleksowego zrzutu. Pamięć podręczna dysku natomiast przechowuje zasoby pobrane z sieci bez uwzględniania stosu JavaScript i jest wykorzystywana podczas nawigacji wstecz/przód w celu zmniejszenia kosztów komunikacji. Ciekawym aspektem pamięci podręcznej dysku jest uwzględnienie zasobów pobranych za pomocą fetch
, co oznacza, że przeglądarka renderuje zasoby URL dostępne w pamięci podręcznej.
Kluczowe punkty:
- Pamięć podręczna bfcache ma pierwszeństwo przed pamięcią podręczną dysku podczas nawigacji wstecz/przód.
- Aby skorzystać z strony przechowywanej w pamięci podręcznej dysku zamiast bfcache, należy wyłączyć ten ostatni.
Wyłączanie pamięci podręcznej bfcache:
Domyślnie Puppeteer wyłącza pamięć podręczną bfcache, zgodnie z warunkami wymienionymi w dokumentacji Chromium. Skuteczną metodą wyłączenia pamięci podręcznej bfcache jest użycie RelatedActiveContentsExist
, osiągnięte poprzez otwarcie strony za pomocą window.open()
, która zachowuje odwołanie do window.opener
.
Reprodukcja zachowania:
- Odwiedź stronę internetową, np.
https://example.com
. - Wykonaj polecenie
open("http://spanote.seccon.games:3000/api/token")
, co skutkuje odpowiedzią serwera z kodem stanu 500. - W nowo otwartej karcie przejdź do
http://spanote.seccon.games:3000/
. Ta czynność spowoduje zapisanie odpowiedzi zhttp://spanote.seccon.games:3000/api/token
w pamięci podręcznej dysku. - Użyj
history.back()
, aby przejść do poprzedniej strony. Spowoduje to wyrenderowanie zapisanej odpowiedzi JSON na stronie.
Potwierdzenie wykorzystania pamięci podręcznej dysku można sprawdzić za pomocą narzędzi DevTools w Google Chrome.
Aby uzyskać dalsze szczegóły na temat pamięci podręcznej bfcache i dysku, można odnaleźć odnośniki na stronach web.dev na temat bfcache i dokumentacji Chromium na temat pamięci podręcznej dysku.