hacktricks/pentesting-web/abusing-hop-by-hop-headers.md

90 lines
8.8 KiB
Markdown
Raw Normal View History

2023-06-06 18:56:34 +00:00
# Cabeçalhos hop-by-hop
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou 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)**.
2022-04-28 16:01:33 +00:00
2022-10-25 15:56:49 +00:00
</details>
2022-04-28 16:01:33 +00:00
2022-10-25 15:56:49 +00:00
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
[**RootedCON**](https://www.rootedcon.com/) é 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.
2022-04-28 16:01:33 +00:00
2022-10-25 15:56:49 +00:00
{% embed url="https://www.rootedcon.com/" %}
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
## O que é um cabeçalho hop-by-hop?
2023-06-06 18:56:34 +00:00
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.
2023-06-06 18:56:34 +00:00
De acordo com o [RFC 2616](https://tools.ietf.org/html/rfc2616#section-13.5.1), 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.
2023-06-06 18:56:34 +00:00
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](https://tools.ietf.org/html/rfc2616#section-14.10) adicionando-os ao cabeçalho `Connection`, como abaixo:
```
Connection: close, X-Foo, X-Bar
```
2023-06-06 18:56:34 +00:00
## A teoria sobre o abuso de cabeçalhos hop-by-hop
2023-06-06 18:56:34 +00:00
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`.
![](<../.gitbook/assets/image (138).png>)
2023-06-06 18:56:34 +00:00
## Testando exclusões hop-by-hop
2023-06-06 18:56:34 +00:00
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.
2023-06-06 18:56:34 +00:00
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.
2023-06-06 18:56:34 +00:00
Você pode descobrir se a resposta do servidor é diferente se um cabeçalho for excluído usando esta técnica usando [este script](https://gist.github.com/ndavison/298d11b3a77b97c908d63a345d3c624d). Então, se você passar uma lista de cabeçalhos conhecidos, como [esta](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/BurpSuite-ParamMiner/lowercase-headers), 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
```
2023-06-06 18:56:34 +00:00
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.
2023-06-06 18:56:34 +00:00
## Abusando do X-Forwarded-For
2023-06-06 18:56:34 +00:00
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`?).
2023-06-06 18:56:34 +00:00
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.
2023-06-06 18:56:34 +00:00
## Detectando Proxies e identificando serviços
2023-06-06 18:56:34 +00:00
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.
2023-06-06 18:56:34 +00:00
## Outros ataques
2023-06-06 18:56:34 +00:00
* 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.
2023-06-06 18:56:34 +00:00
## Referências
2021-05-06 00:10:35 +00:00
{% embed url="https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers" %}
2022-04-28 16:01:33 +00:00
2022-10-25 15:56:49 +00:00
2022-04-28 16:01:33 +00:00
2022-10-25 15:56:49 +00:00
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
[**RootedCON**](https://www.rootedcon.com/) é 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.\
2022-04-28 16:01:33 +00:00
2022-10-25 15:56:49 +00:00
{% embed url="https://www.rootedcon.com/" %}
2022-04-28 16:01:33 +00:00
2022-10-25 15:56:49 +00:00
<details>
2022-04-28 16:01:33 +00:00
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
* Você trabalha em uma **empresa de cibersegurança**? Quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique 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 Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo 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)**.
2022-04-28 16:01:33 +00:00
</details>