Chrome Cache to XSS

Reading time: 3 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Plus de détails dans cet article.

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 et les documents de conception de Chromium sur le disk cache, respectivement.

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks