Chrome Cache zu XSS

Reading time: 3 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks

Mehr Details 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 cache 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:

  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 einem 500-Statuscode führt.
  3. Navigieren Sie im neu geöffneten Tab zu http://spanote.seccon.games:3000/. Diese Aktion cached die Antwort von http://spanote.seccon.games:3000/api/token als disk cache.
  4. Verwenden Sie history.back(), um zurück zu navigieren. Die Aktion führt dazu, dass die zwischengespeicherte JSON-Antwort auf der Seite gerendert wird.

Die Bestätigung, dass der disk cache genutzt wurde, kann durch die Verwendung von DevTools in Google Chrome bestätigt werden.

Für weitere Details zu bfcache und disk cache finden Sie Referenzen bei web.dev zu bfcache und Chromiums Entwurfsdokumenten zum disk cache, jeweils.

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks