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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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:
- Besuchen Sie eine Webseite, z.B.
https://example.com
. - Führen Sie
open("http://spanote.seccon.games:3000/api/token")
aus, was zu einer Serverantwort mit einem 500-Statuscode führt. - Navigieren Sie 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. - 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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.