6.5 KiB
Cache do Chrome para XSS
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e para o repositório hacktricks-cloud.
Técnica retirada deste writeup.
Existem dois tipos importantes de cache:
- cache de avanço/retrocesso (bfcache)
- ref. https://web.dev/i18n/en/bfcache/
- Ele armazena uma imagem completa de uma página, incluindo o heap JavaScript.
- O cache é usado para navegações de avanço/retrocesso.
- Ele tem preferência sobre o cache de disco.
- cache de disco
- ref. https://www.chromium.org/developers/design-documents/network-stack/disk-cache/
- Ele armazena um recurso obtido da web. O cache não inclui o heap JavaScript.
- O cache também é usado para navegações de avanço/retrocesso para pular custos de comunicação.
Como um ponto interessante do cache de disco, o cache inclui não apenas a resposta HTTP renderizada em uma página da web, mas também aquelas obtidas com fetch
. Em outras palavras, se você acessar a URL de um recurso obtido, o navegador renderizará o recurso na página.
Há outro ponto importante. Se tanto o cache de disco quanto o bfcache forem válidos para uma página acessada em navegações de avanço/retrocesso, o bfcache tem prioridade sobre o cache de disco. Portanto, se você precisar acessar uma página armazenada em ambos os caches, mas quiser usar o cache de disco, você precisa de alguma forma desativar o bfcache.
Desativar o bfcache
O bfcache é desativado pelas opções padrão do puppeteer.
Vamos tentar o comportamento interessante neste desafio.
Em primeiro lugar, você tem que desativar o bfcache[2]. Existem muitas condições em que o bfcache é desativado, a lista é:
A maneira fácil é usar RelatedActiveContentsExist
.
RelatedActiveContentsExist
: A página aberta comwindow.open()
e que tem uma referência dewindow.opener
.- ref. https://web.dev/i18n/en/bfcache/#avoid-windowopener-references
Portanto, o seguinte procedimento reproduz o comportamento:
- Acesse uma página da web (por exemplo,
https://example.com
) - Execute
open("http://spanote.seccon.games:3000/api/token")
- Na guia aberta, acesse
http://spanote.seccon.games:3000/
- Execute
history.back()
Você pode confirmar que o cache de disco é usado usando o DevTools no Google Chrome:
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o [**