mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
30 lines
2.6 KiB
Markdown
30 lines
2.6 KiB
Markdown
# Chrome Cache to XSS
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
Plus de détails [**dans cet article**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
|
|
|
|
La technique discutée ici implique de comprendre le comportement et l'interaction de deux types de cache principaux : le **back/forward cache (bfcache)** et le **disk cache**. Le bfcache, qui stocke un instantané complet d'une page y compris le tas JavaScript, est priorisé par rapport au disk cache pour les navigations avant/arrière en raison de sa capacité à stocker un instantané plus complet. Le disk cache, en revanche, stocke les ressources récupérées sur le web sans inclure le tas JavaScript, et est utilisé pour les navigations avant/arrière afin de réduire les coûts de communication. Un aspect intéressant du disk cache est son inclusion de ressources récupérées en utilisant `fetch`, ce qui signifie que les ressources d'URL accessibles seront rendues par le navigateur à partir du cache.
|
|
|
|
### Points Clés :
|
|
|
|
- Le **bfcache** a la priorité sur le disk cache lors des navigations avant/arrière.
|
|
- Pour utiliser une page stockée dans le disk cache au lieu du bfcache, ce dernier doit être désactivé.
|
|
|
|
### Désactivation du bfcache :
|
|
|
|
Par défaut, Puppeteer désactive le bfcache, conformément aux conditions énumérées dans la documentation de Chromium. Une méthode efficace pour désactiver le bfcache est d'utiliser `RelatedActiveContentsExist`, obtenue en ouvrant une page avec `window.open()` qui conserve une référence à `window.opener`.
|
|
|
|
### Reproduire le comportement :
|
|
|
|
1. Visitez une page web, par exemple, `https://example.com`.
|
|
2. Exécutez `open("http://spanote.seccon.games:3000/api/token")`, ce qui entraîne une réponse du serveur avec un code d'état 500.
|
|
3. Dans l'onglet nouvellement ouvert, naviguez vers `http://spanote.seccon.games:3000/`. Cette action met en cache la réponse de `http://spanote.seccon.games:3000/api/token` en tant que disk cache.
|
|
4. Utilisez `history.back()` pour revenir en arrière. L'action entraîne le rendu de la réponse JSON mise en cache sur la page.
|
|
|
|
La vérification que le disk cache a été utilisé peut être confirmée par l'utilisation de DevTools dans Google Chrome.
|
|
|
|
Pour plus de détails sur le bfcache et le disk cache, des références peuvent être trouvées sur [web.dev sur bfcache](https://web.dev/i18n/en/bfcache/) et [les documents de conception de Chromium sur le disk cache](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), respectivement.
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|