Chrome Cache to XSS
Reading time: 3 minutes
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: 
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure: 
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
 - Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
Mais detalhes neste artigo.
A técnica discutida aqui envolve entender o comportamento e a interação de dois tipos principais de cache: o back/forward cache (bfcache) e o disk cache. O bfcache, que armazena uma captura completa de uma página, incluindo o heap do JavaScript, é priorizado em relação ao disk cache para navegações para frente/para trás devido à sua capacidade de armazenar uma captura mais abrangente. O disk cache, em contraste, armazena recursos buscados na web sem incluir o heap do JavaScript e é utilizado para navegações para frente/para trás para reduzir custos de comunicação. Um aspecto interessante do disk cache é sua inclusão de recursos buscados usando fetch, o que significa que recursos de URL acessados serão renderizados pelo navegador a partir do cache.
Pontos Chave:
- O bfcache tem precedência sobre o disk cache em navegações para frente/para trás.
 - Para utilizar uma página armazenada no disk cache em vez do bfcache, este último deve ser desativado.
 
Desativando o bfcache:
Por padrão, o Puppeteer desativa o bfcache, alinhando-se às condições listadas na documentação do Chromium. Um método eficaz para desativar o bfcache é através do uso de RelatedActiveContentsExist, conseguido ao abrir uma página com window.open() que mantém uma referência a window.opener.
Reproduzindo o comportamento:
- Visite uma página da web, por exemplo, 
https://example.com. - Execute 
open("http://spanote.seccon.games:3000/api/token"), o que resulta em uma resposta do servidor com um código de status 500. - Na nova aba aberta, navegue para 
http://spanote.seccon.games:3000/. Esta ação armazena em cache a resposta dehttp://spanote.seccon.games:3000/api/tokencomo um disk cache. - Use 
history.back()para navegar de volta. A ação resulta na renderização da resposta JSON em cache na página. 
A verificação de que o disk cache foi utilizado pode ser confirmada através do uso do DevTools no Google Chrome.
Para mais detalhes sobre bfcache e disk cache, referências podem ser encontradas em web.dev sobre bfcache e documentos de design do Chromium sobre disk cache, respectivamente.
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: 
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure: 
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
 - Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
HackTricks