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

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
{% endhint %}

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:

  1. Besuche eine Webseite, z.B. https://example.com.
  2. Führe open("http://spanote.seccon.games:3000/api/token") aus, was zu einer Serverantwort mit einem 500-Statuscode führt.
  3. Navigiere 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. 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
{% endhint %}