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)