Chrome Cache to XSS

HackTricks'i Destekleyin

Daha derinlemesine detaylar bu yazıda.

Burada tartışılan teknik, iki ana önbellek türünün davranışını ve etkileşimini anlamayı içerir: back/forward cache (bfcache) ve disk cache. JavaScript yığınını da içeren bir sayfanın tam anlık görüntüsünü saklayan bfcache, daha kapsamlı bir anlık görüntü saklama yeteneği nedeniyle geri/ileri navigasyonlar için disk önbelleğinden önceliklidir. Disk önbelleği ise, JavaScript yığınını içermeden web'den alınan kaynakları saklar ve iletişim maliyetlerini azaltmak için geri/ileri navigasyonlarda kullanılır. Disk önbelleğinin ilginç bir yönü, fetch kullanılarak alınan kaynakları içermesidir; bu, erişilen URL kaynaklarının tarayıcı tarafından önbellekten işleneceği anlamına gelir.

Ana Noktalar:

  • bfcache, geri/ileri navigasyonlarda disk önbelleğinden önceliklidir.

  • Disk önbelleğinde saklanan bir sayfayı kullanmak için, bfcache devre dışı bırakılmalıdır.

bfcache'i Devre Dışı Bırakma:

Varsayılan olarak, Puppeteer bfcache'i devre dışı bırakır ve bu, Chromium'un belgelerinde listelenen koşullarla uyumludur. bfcache'i devre dışı bırakmanın etkili bir yöntemi, window.opener referansını koruyan window.open() ile bir sayfa açarak RelatedActiveContentsExist kullanmaktır.

Davranışı Yeniden Üretme:

  1. Bir web sayfasını ziyaret edin, örneğin, https://example.com.

  2. open("http://spanote.seccon.games:3000/api/token") komutunu çalıştırın; bu, 500 durum kodu ile bir sunucu yanıtı alır.

  3. Yeni açılan sekmede http://spanote.seccon.games:3000/ adresine gidin. Bu işlem, http://spanote.seccon.games:3000/api/token yanıtını disk önbelleği olarak saklar.

  4. Geri gitmek için history.back() kullanın. Bu işlem, sayfada önbelleğe alınmış JSON yanıtının işlenmesine neden olur.

Disk önbelleğinin kullanıldığını doğrulamak için Google Chrome'daki Geliştirici Araçları kullanılabilir.

bfcache ve disk önbelleği hakkında daha fazla bilgi için, web.dev'de bfcache ve Chromium'un disk önbelleği tasarım belgeleri referanslarına bakabilirsiniz.

HackTricks'i Destekleyin

Last updated