mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 06:30:37 +00:00
4.7 KiB
4.7 KiB
Chrome Cache to XSS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで企業を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見し、独占的なNFTコレクションをご覧ください
- 公式PEASS&HackTricksスウェグを手に入れましょう
- 💬 Discordグループに参加するか、telegramグループに参加するか、Twitterで🐦@carlospolopmをフォローしてください。
- ハッキングトリックを共有するために hacktricksリポジトリ と hacktricks-cloudリポジトリ にPRを提出してください。
より詳細な詳細はこの解説をご覧ください。
ここで議論されている技術は、バック/フォワードキャッシュ(bfcache)とディスクキャッシュの2つの主要なキャッシュタイプの動作と相互作用を理解することに関わります。 bfcacheは、JavaScriptヒープを含むページの完全なスナップショットを保存し、より包括的なスナップショットを保存できるため、バック/フォワードナビゲーションにおいてディスクキャッシュよりも優先されます。一方、ディスクキャッシュは、JavaScriptヒープを含まないWebから取得したリソースを保存し、通信コストを削減するためにバック/フォワードナビゲーションに使用されます。ディスクキャッシュの興味深い側面は、fetch
を使用して取得されたリソースが含まれていることであり、アクセスされたURLリソースはブラウザによってキャッシュからレンダリングされます。
キーポイント:
- bfcacheはバック/フォワードナビゲーションにおいてディスクキャッシュよりも優先されます。
- ページをbfcacheではなくディスクキャッシュに保存するには、後者を無効にする必要があります。
bfcacheの無効化:
デフォルトでは、Puppeteerはbfcacheを無効にし、Chromiumのドキュメントに記載されている条件と一致します。bfcacheを無効にする効果的な方法の1つは、RelatedActiveContentsExist
を使用することです。これは、window.opener
への参照を保持するwindow.open()
を使用してページを開くことで達成されます。
動作の再現:
- ウェブページ、例えば
https://example.com
にアクセスします。 open("http://spanote.seccon.games:3000/api/token")
を実行し、500ステータスコードでサーバーレスポンスが返されます。- 新しく開いたタブで、
http://spanote.seccon.games:3000/
に移動します。このアクションにより、http://spanote.seccon.games:3000/api/token
のレスポンスがディスクキャッシュとしてキャッシュされます。 history.back()
を使用して戻ると、キャッシュされたJSONレスポンスがページ上にレンダリングされます。
ディスクキャッシュが利用されたことを確認するためには、Google ChromeのDevToolsを使用して確認できます。
bfcacheとディスクキャッシュに関する詳細については、それぞれweb.devのbfcacheとChromiumのディスクキャッシュに関する設計文書で参照できます。