hacktricks/pentesting-web/xss-cross-site-scripting/chrome-cache-to-xss.md

5.1 KiB

Chrome Cache to XSS

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)!

Plus de détails approfondis dans cet article.

La technique discutée ici implique de comprendre le comportement et l'interaction de deux types de cache principaux : le cache avant/arrière (bfcache) et le cache disque. Le bfcache, qui stocke un instantané complet d'une page incluant le tas JavaScript, est priorisé par rapport au cache disque pour les navigations avant/arrière en raison de sa capacité à stocker un instantané plus complet. Le cache disque, en revanche, stocke des ressources récupérées du 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 cache disque est son inclusion des ressources récupérées à l'aide de fetch, ce qui signifie que les ressources d'URL consultées seront rendues par le navigateur à partir du cache.

Points clés :

  • Le bfcache a la priorité sur le cache disque dans les navigations avant/arrière.
  • Pour utiliser une page stockée dans le cache disque au lieu du bfcache, ce dernier doit être désactivé.

Désactivation du bfcache :

Par défaut, Puppeteer désactive le bfcache, en accord avec les conditions énumérées dans la documentation de Chromium. Une méthode efficace pour désactiver le bfcache est l'utilisation de RelatedActiveContentsExist, obtenue en ouvrant une page avec window.open() qui conserve une référence à window.opener.

Reproduction du 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, accédez à http://spanote.seccon.games:3000/. Cette action met en cache la réponse de http://spanote.seccon.games:3000/api/token en tant que cache disque.
  4. Utilisez history.back() pour naviguer en arrière. L'action entraîne le rendu de la réponse JSON mise en cache sur la page.

La confirmation que le cache disque a été utilisé peut être vérifiée en utilisant DevTools dans Google Chrome.

Pour plus de détails sur le bfcache et le cache disque, des références peuvent être trouvées sur web.dev sur le bfcache et les documents de conception de Chromium sur le cache disque, respectivement.

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)!