Special HTTP headers
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Rewrite IP source:
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
Via: 1.0 fred, 1.1 127.0.0.1
Connection: close, X-Forwarded-For
(Check hop-by-hop headers)
Rewrite location:
X-Original-URL: /admin/console
X-Rewrite-URL: /admin/console
Um cabeçalho hop-by-hop é um cabeçalho que é projetado para ser processado e consumido pelo proxy que está lidando com a solicitação, em vez de um cabeçalho de ponta a ponta.
Connection: close, X-Forwarded-For
Content-Length: 30
Transfer-Encoding: chunked
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á armazenada em cache
Comportamento semelhante no cabeçalho Cf-Cache-Status
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 indexados.
Age
define o tempo 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
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 quando a resposta deve expirar: Expires: Wed, 21 Oct 2015 07:28:00 GMT
Pragma: no-cache
o mesmo que Cache-Control: no-cache
Warning
: O cabeçalho HTTP geral Warning
contém informações sobre possíveis problemas com o status da mensagem. Mais de um cabeçalho Warning
pode aparecer em uma resposta. Warning: 110 anderson/1.3.37 "Response is stale"
Solicitações usando esses cabeçalhos: If-Modified-Since
e If-Unmodified-Since
serão respondidas com dados apenas se o cabeçalho de resposta Last-Modified
contiver um horário diferente.
Solicitações condicionais usando If-Match
e If-None-Match
usam um valor Etag para que o servidor web envie o conteúdo da resposta se os dados (Etag) mudaram. O Etag
é retirado da resposta HTTP.
O valor Etag é geralmente calculado com base no conteúdo da resposta. Por exemplo, ETag: W/"37-eL2g8DEyqntYlaLp5XLInBWsjWI"
indica que o Etag
é o Sha1 de 37 bytes.
Accept-Ranges
: Indica se o servidor suporta solicitações de intervalo e, se sim, em qual unidade o intervalo pode ser expresso. Accept-Ranges: <range-unit>
Range
: Indica a parte de um documento que o servidor deve retornar.
If-Range
: Cria uma solicitação de intervalo condicional que só é atendida se o etag ou a data correspondem ao recurso remoto. Usado para evitar o download de dois intervalos de versões incompatíveis do recurso.
Content-Range
: Indica onde em uma mensagem de corpo completo uma mensagem parcial pertence.
Content-Length
: O tamanho do recurso, em número decimal de bytes.
Content-Type
: Indica o tipo de mídia do recurso
Content-Encoding
: Usado para especificar o algoritmo de compressão.
Content-Language
: Descreve a(s) língua(s) humana(s) destinadas ao público, permitindo que um usuário diferencie de acordo com a própria língua preferida.
Content-Location
: Indica uma localização alternativa para os dados retornados.
Do ponto de vista de um pentest, essas informações são geralmente "inúteis", mas se o recurso estiver protegido por um 401 ou 403 e você conseguir encontrar alguma maneira de obter essa informação, isso pode ser interessante.
Por exemplo, uma combinação de Range
e Etag
em uma solicitação HEAD pode vazar o conteúdo da página via solicitações HEAD:
Uma solicitação com o cabeçalho Range: bytes=20-20
e com uma resposta contendo ETag: W/"1-eoGvPlkaxxP4HqHv6T3PNhV9g3Y"
está vazando que o SHA1 do byte 20 é ETag: eoGvPlkaxxP4HqHv6T3PNhV9g3Y
Server: Apache/2.4.1 (Unix)
X-Powered-By: PHP/5.3.3
Allow
: Este cabeçalho é usado para comunicar os métodos HTTP que um recurso pode manipular. Por exemplo, pode ser especificado como Allow: GET, POST, HEAD
, indicando que o recurso suporta esses métodos.
Expect
: Utilizado pelo cliente para transmitir expectativas que o servidor precisa atender para que a solicitação seja processada com sucesso. Um caso de uso comum envolve o cabeçalho Expect: 100-continue
, que sinaliza que o cliente pretende enviar um grande payload de dados. O cliente aguarda uma resposta 100 (Continue)
antes de prosseguir com a transmissão. Esse mecanismo ajuda a otimizar o uso da rede, aguardando a confirmação do servidor.
O cabeçalho Content-Disposition
nas respostas HTTP direciona se um arquivo deve ser exibido inline (dentro da página da web) ou tratado como um anexo (baixado). Por exemplo:
Isso significa que o arquivo chamado "filename.jpg" é destinado a ser baixado e salvo.
Ao impor Tipos Confiáveis através do CSP, as aplicações podem ser protegidas contra ataques XSS no DOM. Tipos Confiáveis garantem que apenas objetos especificamente elaborados, em conformidade com políticas de segurança estabelecidas, possam ser usados em chamadas de API web perigosas, garantindo assim o código JavaScript por padrão.
Este cabeçalho impede a detecção de tipo MIME, uma prática que pode levar a vulnerabilidades XSS. Ele garante que os navegadores respeitem os tipos MIME especificados pelo servidor.
Para combater clickjacking, este cabeçalho restringe como documentos podem ser incorporados em <frame>
, <iframe>
, <embed>
ou <object>
tags, recomendando que todos os documentos especifiquem suas permissões de incorporação explicitamente.
CORP é crucial para especificar quais recursos podem ser carregados por sites, mitigando vazamentos entre sites. CORS, por outro lado, permite um mecanismo de compartilhamento de recursos de origem cruzada mais flexível, relaxando a política de mesma origem sob certas condições.
COEP e COOP são essenciais para habilitar o isolamento entre origens, reduzindo significativamente o risco de ataques semelhantes ao Spectre. Eles controlam o carregamento de recursos entre origens e a interação com janelas entre origens, respectivamente.
Por fim, o HSTS é um recurso de segurança que força os navegadores a se comunicarem com os servidores apenas por meio de conexões HTTPS seguras, melhorando assim a privacidade e a segurança.
Aprenda e pratique AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)