hacktricks/pentesting-web/xss-cross-site-scripting/chrome-cache-to-xss.md

5.3 KiB

Chrome Cache to XSS

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Mais detalhes neste artigo.

A técnica discutida aqui envolve entender o comportamento e a interação de dois tipos principais de cache: o cache de avanço/volta (bfcache) e o cache de disco. O bfcache, que armazena uma captura completa de uma página, incluindo o heap JavaScript, é priorizado sobre o cache de disco para navegações de avanço/volta devido à sua capacidade de armazenar uma captura mais abrangente. O cache de disco, por outro lado, armazena recursos obtidos da web sem incluir o heap JavaScript e é utilizado para navegações de avanço/volta para reduzir os custos de comunicação. Um aspecto interessante do cache de disco é a inclusão de recursos obtidos usando fetch, o que significa que os recursos de URL acessados serão renderizados pelo navegador a partir do cache.

Pontos Chave:

  • O bfcache tem precedência sobre o cache de disco em navegações de avanço/volta.
  • Para utilizar uma página armazenada no cache de disco em vez do bfcache, este último deve ser desativado.

Desativando o bfcache:

Por padrão, o Puppeteer desativa o bfcache, alinhando-se com as condições listadas na documentação do Chromium. Um método eficaz para desativar o bfcache é através do uso de RelatedActiveContentsExist, alcançado abrindo uma página com window.open() que mantém uma referência a window.opener.

Reproduzindo o comportamento:

  1. Visite uma página da web, por exemplo, https://example.com.
  2. Execute open("http://spanote.seccon.games:3000/api/token"), o que resulta em uma resposta do servidor com um código de status 500.
  3. Na nova aba aberta, navegue para http://spanote.seccon.games:3000/. Essa ação armazena a resposta de http://spanote.seccon.games:3000/api/token como cache de disco.
  4. 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 cache de disco foi utilizado pode ser confirmada através do uso do DevTools no Google Chrome.

Para mais detalhes sobre bfcache e cache de disco, as referências podem ser encontradas em web.dev sobre bfcache e nos documentos de design do Chromium sobre cache de disco, respectivamente.

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥