Chrome Cache to XSS

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Weitere detaillierte Informationen finden Sie 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 eine vollständige Momentaufnahme einer Seite einschließlich des JavaScript-Heaps speichert, hat Vorrang vor dem Disk-Cache für Back/Forward-Navigationen aufgrund seiner Fähigkeit, eine umfassendere Momentaufnahme zu speichern. Der Disk-Cache hingegen speichert Ressourcen, die aus dem Web abgerufen wurden, ohne den JavaScript-Heap zu enthalten, und wird für Back/Forward-Navigationen genutzt, um Kommunikationskosten zu reduzieren. Ein interessanter Aspekt des Disk-Cache ist die Einbeziehung von mit fetch abgerufenen Ressourcen, was bedeutet, dass aufgerufene URL-Ressourcen vom Browser aus dem Cache gerendert werden.

Schlüsselpunkte:

  • Der bfcache hat Vorrang vor dem Disk-Cache bei Back/Forward-Navigationen.

  • Um eine im Disk-Cache gespeicherte Seite anstelle des bfcache zu nutzen, muss letzterer deaktiviert werden.

Deaktivierung des bfcache:

Standardmäßig deaktiviert Puppeteer den bfcache, entsprechend den in der Dokumentation von Chromium aufgeführten Bedingungen. Eine effektive Methode zur Deaktivierung des bfcache besteht darin, RelatedActiveContentsExist zu verwenden, indem eine Seite mit window.open() geöffnet wird, die eine Referenz zu window.opener beibehält.

Nachstellung des Verhaltens:

  1. Besuchen Sie eine Webseite, z.B. https://example.com.

  2. Führen Sie open("http://spanote.seccon.games:3000/api/token") aus, was zu einer Serverantwort mit dem Statuscode 500 führt.

  3. Navigieren Sie im neu geöffneten Tab zu http://spanote.seccon.games:3000/. Diese Aktion speichert die Antwort von http://spanote.seccon.games:3000/api/token als Disk-Cache.

  4. Verwenden Sie history.back(), um zurückzunavigieren. Die Aktion führt zur Darstellung der zwischengespeicherten JSON-Antwort auf der Seite.

Die Bestätigung, dass der Disk-Cache genutzt wurde, kann mithilfe von DevTools in Google Chrome erfolgen.

Weitere Details zum bfcache und Disk-Cache finden Sie in den Referenzen zu web.dev über bfcache und Chromiums Design-Dokumenten zum Disk-Cache.

Last updated