13 KiB
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!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e hacktricks-cloud repo.
Listas de palavras e ferramentas
- https://github.com/danielmiessler/SecLists/tree/master/Miscellaneous/web/http-request-headers
- 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 {% endcontent-ref %}
HTTP Request Smuggling
Content-Length: 30
Transfer-Encoding: chunked
{% content-ref url="../../pentesting-web/http-request-smuggling/" %} http-request-smuggling {% endcontent-ref %}
Cabeçalhos de cache
Cabeçalhos de cache do servidor:
X-Cache
na resposta pode ter o valormiss
quando a solicitação não foi armazenada em cache e o valorhit
quando está em cacheCache-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 {% 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
Content-Security-Policy: require-trusted-types-for 'script'
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => {
return str.replace(/\</g, '<').replace(/>/g, '>');
}
});
}
// 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('<img src=x onerror=alert(1)>');
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.
X-Content-Type-Options: nosniff
impede isso, instruindo o navegador de que o tipo MIME definido no cabeçalho Content-Type
para uma determinada resposta está correto. Este cabeçalho é recomendado para todos os seus recursos.
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. Além disso, em alguns casos, ataques do tipo Spectre 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 <frame>
, <iframe>
, <embed>
ou <object>
. Todos os documentos são recomendados a enviar este cabeçalho para indicar se permitem ser incorporados por outros documentos.
Se você precisar de um controle mais granular, como permitir apenas uma origem específica para incorporar o documento, use a diretiva frame-ancestors do CSP.
X-Frame-Options: DENY
Política de Recursos de Origem Cruzada (CORP)
Um atacante pode incorporar recursos de outra origem, por exemplo, do seu site, para aprender informações sobre eles, explorando vazamentos entre sites.
Cross-Origin-Resource-Policy
mitiga esse risco indicando o conjunto de sites em que pode ser carregado. O cabeçalho pode ter um dos três valores: same-origin
, same-site
e cross-origin
. Todos os recursos são recomendados a enviar esse cabeçalho para indicar se permitem ser carregados por outros sites.
Cross-Origin-Resource-Policy: same-origin
Política de Recursos de Origem Cruzada (CORB)
Ajuda a mitigar a ameaça de ataques de canal lateral (incluindo Spectre). É projetado para impedir que o navegador entregue determinadas respostas de rede de origem cruzada para uma página da web, quando elas podem conter informações confidenciais e não são necessárias para recursos da web existentes.
Da mesma forma, também ajuda a mitigar vulnerabilidades de Inclusão de Script de Origem Cruzada (XSSI).
Por exemplo, ele bloqueará uma resposta de texto/html de origem cruzada solicitada de uma tag <script> ou <img>, substituindo-a por uma resposta vazia. Esta é uma parte importante das proteções incluídas com Isolamento de Site.
Política de Abertura de Origem Cruzada (COOP)
O site de um invasor pode abrir outro site em uma janela pop-up para aprender informações sobre ele, explorando vazamentos de origem cruzada baseados na web. Em alguns casos, isso também pode permitir a exploração de ataques de canal lateral baseados em Spectre.
O cabeçalho Cross-Origin-Opener-Policy
fornece uma maneira para um documento se isolar de janelas de origem cruzada abertas por meio de window.open()
ou um link com target="_blank"
sem rel="noopener"
. Como resultado, qualquer abertura de origem cruzada do documento não terá referência a ele e não poderá interagir com ele.
Cross-Origin-Opener-Policy: same-origin-allow-popups
Compartilhamento de Recursos de Origem Cruzada (CORS)
Ao contrário de outros itens deste artigo, o Compartilhamento de Recursos de Origem Cruzada (CORS) não é um cabeçalho, mas um mecanismo do navegador que solicita e permite o acesso a recursos de origem cruzada.
Por padrão, os navegadores aplicam a política de mesma origem para impedir que uma página da web acesse recursos de origem cruzada. Por exemplo, quando uma imagem de origem cruzada é carregada, mesmo que seja exibida visualmente na página da web, o JavaScript na página não tem acesso aos dados da imagem. O provedor de recursos pode relaxar as restrições e permitir que outros sites leiam o recurso optando pelo CORS.
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
Política de Incorporação de Origem Cruzada (COEP)
Para reduzir a capacidade de ataques baseados em Spectre de roubar recursos de origem cruzada, recursos como SharedArrayBuffer
ou performance.measureUserAgentSpecificMemory()
são desativados por padrão.
Cross-Origin-Embedder-Policy: require-corp
impede que documentos e workers carreguem recursos de origem cruzada, como imagens, scripts, folhas de estilo, iframes e outros, a menos que esses recursos optem explicitamente por serem carregados por meio de cabeçalhos CORS ou CORP. COEP pode ser combinado com Cross-Origin-Opener-Policy
para optar um documento pelo isolamento de origem cruzada.
Use Cross-Origin-Embedder-Policy: require-corp
quando quiser habilitar o isolamento de origem cruzada para o seu documento.
Cross-Origin-Embedder-Policy: require-corp
HTTP Strict Transport Security (HSTS)
A comunicação por meio de uma conexão HTTP simples não é criptografada, tornando os dados transferidos acessíveis a espiões de rede.
O cabeçalho Strict-Transport-Security
informa ao navegador que ele nunca deve carregar o site usando HTTP e, em vez disso, usar HTTPS. Uma vez definido, o navegador usará HTTPS em vez de HTTP para acessar o domínio sem um redirecionamento por um período definido no cabeçalho.
Strict-Transport-Security: max-age=3153600
Recursos
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de cibersegurança? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Verifique os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para o repositório hacktricks e para o repositório hacktricks-cloud.