Chrome Cache to XSS
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
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.
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.
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 von http://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.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)