# Cabeçalhos HTTP Especiais
☁️ 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**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
## Listas de palavras e ferramentas * [https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers](https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers) * [https://github.com/rfc-st/humble](https://github.com/rfc-st/humble) ## Cabeçalhos para alterar a localização Reescrever o **IP de origem**: * `X-Originating-IP: 127.0.0.1` * `X-Forwarded-For: 127.0.0.1` * `X-Forwarded: 127.0.0.1` * `Forwarded-For: 127.0.0.1` * `X-Forwarded-Host: 127.0.0.1` * `X-Remote-IP: 127.0.0.1` * `X-Remote-Addr: 127.0.0.1` * `X-ProxyUser-Ip: 127.0.0.1` * `X-Original-URL: 127.0.0.1` * `Client-IP: 127.0.0.1` * `X-Client-IP: 127.0.0.1` * `X-Host: 127.0.0.1` * `True-Client-IP: 127.0.0.1` * `Cluster-Client-IP: 127.0.0.1` * `X-ProxyUser-Ip: 127.0.0.1` * `Via: 1.0 fred, 1.1 127.0.0.1` * `Connection: close, X-Forwarded-For` (Verifique os cabeçalhos hop-by-hop) Reescrever a **localização**: * `X-Original-URL: /admin/console` * `X-Rewrite-URL: /admin/console` ## Cabeçalhos hop-by-hop Um cabeçalho hop-by-hop é um cabeçalho projetado para ser processado e consumido pelo proxy que está manipulando a solicitação, em vez de um cabeçalho end-to-end. * `Connection: close, X-Forwarded-For` {% content-ref url="../../pentesting-web/abusing-hop-by-hop-headers.md" %} [abusing-hop-by-hop-headers.md](../../pentesting-web/abusing-hop-by-hop-headers.md) {% endcontent-ref %} ## HTTP Request Smuggling * `Content-Length: 30` * `Transfer-Encoding: chunked` {% content-ref url="../../pentesting-web/http-request-smuggling/" %} [http-request-smuggling](../../pentesting-web/http-request-smuggling/) {% endcontent-ref %} ## Cabeçalhos de cache **Cabeçalhos de cache do servidor**: * **`X-Cache`** na resposta pode ter o valor **`miss`** quando a solicitação não foi armazenada em cache e o valor **`hit`** quando está em cache * **`Cache-Control`** indica se um recurso está sendo armazenado em cache e quando será a próxima vez que o recurso será armazenado em cache novamente: `Cache-Control: public, max-age=1800` * **`Vary`** é frequentemente usado na resposta para **indicar cabeçalhos adicionais** que são tratados como **parte da chave de cache**, mesmo que normalmente não sejam chaveados. * **`Age`** define os tempos em segundos que o objeto esteve no cache do proxy. * **`Server-Timing: cdn-cache; desc=HIT`** também indica que um recurso foi armazenado em cache {% content-ref url="../../pentesting-web/cache-deception.md" %} [cache-deception.md](../../pentesting-web/cache-deception.md) {% endcontent-ref %} **Cabeçalhos de cache local**: * `Clear-Site-Data`: Cabeçalho para indicar o cache que deve ser removido: `Clear-Site-Data: "cache", "cookies"` * `Expires`: Contém a data/hora em que a resposta ```http Content-Security-Policy: require-trusted-types-for 'script' ``` ```javascript // Feature detection if (window.trustedTypes && trustedTypes.createPolicy) { // Name and create a policy const policy = trustedTypes.createPolicy('escapePolicy', { createHTML: str => { return str.replace(/\/g, '>'); } }); } ``` ```javascript // Assignment of raw strings is blocked by Trusted Types. el.innerHTML = 'some string'; // This throws an exception. // Assignment of Trusted Types is accepted safely. const escaped = policy.createHTML(''); el.innerHTML = escaped; // '<img src=x onerror=alert(1)>' ``` ### X-Content-Type-Options Quando um documento HTML malicioso é servido a partir do seu domínio (por exemplo, se uma imagem enviada para um serviço de fotos contém marcação HTML válida), alguns navegadores o tratam como um documento ativo e permitem que ele execute scripts no contexto do aplicativo, levando a um [bug de cross-site scripting](https://www.google.com/about/appsecurity/learning/xss/). `X-Content-Type-Options: nosniff` impede isso, instruindo o navegador de que o [tipo MIME](https://mimesniff.spec.whatwg.org/#introduction) definido no cabeçalho `Content-Type` para uma determinada resposta está correto. Este cabeçalho é recomendado para **todos os seus recursos**. ```http X-Content-Type-Options: nosniff ``` ### X-Frame-Options Se um site malicioso pode incorporar seu site como um iframe, isso pode permitir que invasores invoquem ações não intencionais pelo usuário com [clickjacking](https://portswigger.net/web-security/clickjacking). Além disso, em alguns casos, ataques do tipo [Spectre](https://en.wikipedia.org/wiki/Spectre\_\(security\_vulnerability\)) dão a sites maliciosos a chance de aprender sobre o conteúdo de um documento incorporado. `X-Frame-Options` indica se um navegador deve ou não ser permitido a renderizar uma página em um ``, `