Chrome Cache to XSS
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
More in depth details in this writeup.
ここで議論されている技術は、2つの主要なキャッシュタイプの動作と相互作用を理解することを含みます: バック/フォワードキャッシュ (bfcache) と ディスクキャッシュ。bfcacheは、JavaScriptヒープを含むページの完全なスナップショットを保存し、より包括的なスナップショットを保存できるため、バック/フォワードナビゲーションにおいてディスクキャッシュよりも優先されます。一方、ディスクキャッシュは、JavaScriptヒープを含まずにウェブから取得したリソースを保存し、通信コストを削減するためにバック/フォワードナビゲーションに利用されます。ディスクキャッシュの興味深い点は、fetch
を使用して取得したリソースが含まれていることであり、つまりアクセスされたURLリソースはブラウザによってキャッシュからレンダリングされます。
bfcacheはバック/フォワードナビゲーションにおいてディスクキャッシュよりも優先されます。
bfcacheの代わりにディスクキャッシュに保存されたページを利用するには、bfcacheを無効にする必要があります。
デフォルトでは、Puppeteerはbfcacheを無効にし、Chromiumのドキュメントに記載された条件に沿っています。bfcacheを無効にする効果的な方法の1つは、window.open()
を使用してwindow.opener
への参照を保持するページを開くことによって、RelatedActiveContentsExist
を利用することです。
ウェブページにアクセスします。例: 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 on bfcacheおよびChromiumのディスクキャッシュに関する設計文書で参照できます。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)