4.6 KiB
Chrome Cache to XSS
{% hint style="success" %}
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support 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 os 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 a resposta dehttp://spanote.seccon.games:3000/api/token
como um disk cache. - Use
history.back()
para navegar de volta. A ação resulta na renderização da resposta JSON armazenada em cache na página.
A verificação de que o disk cache foi utilizado pode ser confirmada através do uso das 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.
{% hint style="success" %}
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support 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.