mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-28 07:31:10 +00:00
89 lines
8.8 KiB
Markdown
89 lines
8.8 KiB
Markdown
# Cabeçalhos hop-by-hop
|
||
|
||
<details>
|
||
|
||
<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>
|
||
|
||
* 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)**.
|
||
|
||
</details>
|
||
|
||
<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&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||
|
||
[**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.
|
||
|
||
{% 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](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.
|
||
|
||
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
|
||
```
|
||
## 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`.
|
||
|
||
![](<../.gitbook/assets/image (138).png>)
|
||
|
||
## 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](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
|
||
```
|
||
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" %}
|
||
|
||
|
||
|
||
<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&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||
|
||
[**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.\
|
||
|
||
|
||
{% embed url="https://www.rootedcon.com/" %}
|
||
|
||
<details>
|
||
|
||
<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>
|
||
|
||
* 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)**.
|
||
|
||
</details>
|