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

57 lines
4.6 KiB
Markdown
Raw Normal View History

# Chrome Cache to XSS
2023-01-12 13:44:25 +00:00
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2023-01-12 13:44:25 +00:00
<details>
<summary>Support HackTricks</summary>
2023-01-12 13:44:25 +00:00
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
2023-01-12 13:44:25 +00:00
</details>
{% endhint %}
2023-01-12 13:44:25 +00:00
Mais detalhes [**neste artigo**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
2023-01-12 13:44:25 +00:00
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.
2023-01-12 13:44:25 +00:00
### Pontos Chave:
2023-01-12 13:44:25 +00:00
- 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.
2023-01-12 13:44:25 +00:00
### Desativando o bfcache:
2023-01-12 13:44:25 +00:00
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`.
2023-01-12 13:44:25 +00:00
### Reproduzindo o comportamento:
2023-01-12 13:44:25 +00:00
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/`. Esta ação armazena a resposta de `http://spanote.seccon.games:3000/api/token` como um disk cache.
4. 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.
2023-01-12 13:44:25 +00:00
Para mais detalhes sobre bfcache e disk cache, referências podem ser encontradas em [web.dev sobre bfcache](https://web.dev/i18n/en/bfcache/) e [documentos de design do Chromium sobre disk cache](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), respectivamente.
2023-01-12 14:56:14 +00:00
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2023-01-12 13:44:25 +00:00
<details>
<summary>Support HackTricks</summary>
2023-01-12 13:44:25 +00:00
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}