4.7 KiB
Chrome Cache to XSS
{% hint style="success" %}
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Überprüfe die Abonnementpläne!
- Tritt der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs zu den HackTricks und HackTricks Cloud GitHub-Repos einreichst.
Mehr detaillierte Informationen in diesem Bericht.
Die hier diskutierte Technik beinhaltet das Verständnis des Verhaltens und der Interaktion von zwei primären Cache-Typen: dem back/forward cache (bfcache) und dem Disk-Cache. Der bfcache, der einen vollständigen Snapshot einer Seite einschließlich des JavaScript-Heaps speichert, hat Vorrang vor dem Disk-Cache bei Rückwärts-/Vorwärtsnavigationen aufgrund seiner Fähigkeit, einen umfassenderen Snapshot zu speichern. Der Disk-Cache hingegen speichert Ressourcen, die aus dem Web abgerufen wurden, ohne den JavaScript-Heap einzuschließen, und wird für Rückwärts-/Vorwärtsnavigationen verwendet, um Kommunikationskosten zu reduzieren. Ein interessanter Aspekt des Disk-Caches ist seine Einbeziehung von Ressourcen, die mit fetch
abgerufen wurden, was bedeutet, dass aufgerufene URL-Ressourcen vom Browser aus dem Cache gerendert werden.
Wichtige Punkte:
- Der bfcache hat Vorrang vor dem Disk-Cache bei Rückwärts-/Vorwärtsnavigationen.
- Um eine Seite, die im Disk-Cache gespeichert ist, anstelle des bfcache zu nutzen, muss letzterer deaktiviert werden.
Deaktivierung des bfcache:
Standardmäßig deaktiviert Puppeteer den bfcache, was mit den in der Chromium-Dokumentation aufgeführten Bedingungen übereinstimmt. Eine effektive Methode zur Deaktivierung des bfcache ist die Verwendung von RelatedActiveContentsExist
, die erreicht wird, indem eine Seite mit window.open()
geöffnet wird, die eine Referenz zu window.opener
beibehält.
Verhalten reproduzieren:
- Besuche eine Webseite, z.B.
https://example.com
. - Führe
open("http://spanote.seccon.games:3000/api/token")
aus, was zu einer Serverantwort mit einem 500-Statuscode führt. - Navigiere im neu geöffneten Tab zu
http://spanote.seccon.games:3000/
. Diese Aktion cached die Antwort vonhttp://spanote.seccon.games:3000/api/token
als Disk-Cache. - Verwende
history.back()
, um zurück zu navigieren. Die Aktion führt dazu, dass die zwischengespeicherte JSON-Antwort auf der Seite gerendert wird.
Die Überprüfung, dass der Disk-Cache verwendet wurde, kann durch die Verwendung von DevTools in Google Chrome bestätigt werden.
Für weitere Details zu bfcache und Disk-Cache können Referenzen auf web.dev zu bfcache und Chromiums Entwurfsdokumente zum Disk-Cache gefunden werden.
{% hint style="success" %}
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Überprüfe die Abonnementpläne!
- Tritt der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs zu den HackTricks und HackTricks Cloud GitHub-Repos einreichst.