Chrome Cache to XSS
Reading time: 5 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
詳細はこのレポートで確認できます。
ここで議論されている技術は、バック/フォワードキャッシュ (bfcache) と ディスクキャッシュ の2つの主要なキャッシュタイプの動作と相互作用を理解することに関係しています。bfcacheは、JavaScriptヒープを含むページの完全なスナップショットを保存し、より包括的なスナップショットを保存できるため、バック/フォワードナビゲーションにおいてディスクキャッシュよりも優先されます。一方、ディスクキャッシュは、JavaScriptヒープを含まずにウェブから取得したリソースを保存し、通信コストを削減するためにバック/フォワードナビゲーションに利用されます。ディスクキャッシュの興味深い点は、fetch
を使用して取得したリソースが含まれていることであり、つまりアクセスされたURLリソースはキャッシュからブラウザによってレンダリングされます。
主なポイント:
- bfcacheはバック/フォワードナビゲーションにおいてディスクキャッシュよりも優先されます。
- bfcacheの代わりにディスクキャッシュに保存されたページを利用するには、bfcacheを無効にする必要があります。
bfcacheの無効化:
デフォルトでは、Puppeteerはbfcacheを無効にし、Chromiumのドキュメントに記載された条件に沿っています。bfcacheを無効にする効果的な方法の1つは、window.opener
への参照を保持するwindow.open()
を使用してページを開くことによって、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のbfcacheおよびChromiumのディスクキャッシュに関する設計文書で確認できます。
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。