hacktricks/pentesting-web/abusing-hop-by-hop-headers.md
2023-06-06 18:56:34 +00:00

8.8 KiB
Raw Blame History

Cabeçalhos hop-by-hop

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

RootedCON é o evento de cibersegurança mais relevante na Espanha e um dos mais importantes na Europa. Com a missão de promover o conhecimento técnico, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.

{% embed url="https://www.rootedcon.com/" %}

O que é um cabeçalho 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 oposição a um cabeçalho end-to-end.

De acordo com o RFC 2616, a especificação HTTP/1.1 trata os seguintes cabeçalhos como hop-by-hop por padrão: Keep-Alive, Transfer-Encoding, TE, Connection, Trailer, Upgrade, Proxy-Authorization e Proxy-Authenticate. Ao encontrar esses cabeçalhos em uma solicitação, um proxy compatível deve processar ou executar o que esses cabeçalhos estão indicando e não encaminhá-los para o próximo hop.

Além desses padrões, uma solicitação também pode definir um conjunto personalizado de cabeçalhos para serem tratados como hop-by-hop adicionando-os ao cabeçalho Connection, como abaixo:

Connection: close, X-Foo, X-Bar

A teoria sobre o abuso de cabeçalhos hop-by-hop

Em teoria, os proxies devem remover os cabeçalhos hop-by-hop recebidos antes de enviá-los para o próximo endereço. Mas você pode encontrar na prática que isso é feito por alguns proxies e outros apenas enviam todos os cabeçalhos adicionando seu próprio cabeçalho Connection.

Testando exclusões hop-by-hop

Se você encontrar um cabeçalho que faz com que a resposta do servidor mude se ele estiver definido ou não, então você pode procurar por exclusões hop-by-hop. Por exemplo, o cabeçalho cookie fará com que a resposta do servidor seja dramaticamente diferente se ele estiver definido (com um conteúdo válido) ou não.

Então, envie uma solicitação com um cabeçalho válido e com este valor do cabeçalho Connection Connection: close, Cookie se a resposta for a mesma que se o cookie não tivesse sido enviado, então há um proxy removendo cabeçalhos.

Você pode descobrir se a resposta do servidor é diferente se um cabeçalho for excluído usando esta técnica usando este script. Então, se você passar uma lista de cabeçalhos conhecidos, como esta, você pode observar quais cabeçalhos estão causando efeitos apesar de não estarem na sua solicitação original:

for HEADER in $(cat headers.txt); do python poison-test.py -u "https://target" -x "$HEADER"; sleep 1; done

Este ciclo percorrerá toda a lista de cabeçalhos e imprimirá se a presença dele na lista hop-by-hop criou um código de status diferente ou um tamanho de corpo de resposta.

Abusando do X-Forwarded-For

Em geral, os proxies adicionam os IPs dos clientes dentro do cabeçalho X-Forwarded-For para que o próximo salto saiba de onde vem a petição. No entanto, se um atacante enviar um valor de Conexão como Connection: close, X-Forwarded-For e o primeiro proxy enviar os cabeçalhos hop-by-hop com seus valores (ele envia o valor especial de Conexão), então o segundo valor pode excluir o cabeçalho X-Forward-For.
No final, o aplicativo final não saberá quem enviou a solicitação e pode pensar que foi o último proxy, e nesse cenário um atacante pode ser capaz de acessar recursos protegidos por lista branca de IP (talvez algum /admin?).

Dependendo do sistema que está sendo visado, você também pode ter Forwarded, X-Real-IP e um monte de outros que são menos comuns.

Detectando Proxies e identificando serviços

Esta técnica pode ser útil para detectar proxies (usando a técnica de cookie) ou mesmo para detectar serviços. Por exemplo, se você abusar dessa técnica para excluir o cabeçalho X-BLUECOAT-VIA e um erro for lançado, então você descobriu que o Bluecoat estava sendo usado.

Outros ataques

  • Para um possível envenenamento de cache DoS abusando dessa técnica, leia o link original
  • Isso pode ser útil em ataques que permitem que você insira novos cabeçalhos (baixa probabilidade)
  • Também pode ser útil para contornar funcionalidades defensivas. Por exemplo, se a falta de um cabeçalho significa que uma solicitação não deve ser processada por um WAF, você pode contornar um WAF com essa técnica.

Referências

{% embed url="https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers" %}

RootedCON é o evento de cibersegurança mais relevante na Espanha e um dos mais importantes na Europa. Com a missão de promover o conhecimento técnico, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.\

{% embed url="https://www.rootedcon.com/" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥