mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
60 lines
5.8 KiB
Markdown
60 lines
5.8 KiB
Markdown
# hop-by-hop headers
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
**Este es un resumen de la publicación [https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers](https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers)**
|
|
|
|
Los encabezados hop-by-hop son específicos de una única conexión a nivel de transporte, utilizados principalmente en HTTP/1.1 para gestionar datos entre dos nodos (como cliente-proxy o proxy-proxy), y no están destinados a ser reenviados. Los encabezados hop-by-hop estándar incluyen `Keep-Alive`, `Transfer-Encoding`, `TE`, `Connection`, `Trailer`, `Upgrade`, `Proxy-Authorization` y `Proxy-Authenticate`, según lo definido en [RFC 2616](https://tools.ietf.org/html/rfc2616#section-13.5.1). Encabezados adicionales pueden ser designados como hop-by-hop a través del encabezado `Connection`.
|
|
|
|
### Abusing Hop-by-Hop Headers
|
|
La gestión inadecuada de los encabezados hop-by-hop por parte de los proxies puede llevar a problemas de seguridad. Si bien se espera que los proxies eliminen estos encabezados, no todos lo hacen, creando vulnerabilidades potenciales.
|
|
|
|
### Testing for Hop-by-Hop Header Handling
|
|
El manejo de los encabezados hop-by-hop se puede probar observando cambios en las respuestas del servidor cuando se marcan encabezados específicos como hop-by-hop. Herramientas y scripts pueden automatizar este proceso, identificando cómo los proxies gestionan estos encabezados y potencialmente descubriendo configuraciones incorrectas o comportamientos de proxy.
|
|
|
|
Abusar de los encabezados hop-by-hop puede llevar a diversas implicaciones de seguridad. A continuación se presentan un par de ejemplos que demuestran cómo estos encabezados pueden ser manipulados para ataques potenciales:
|
|
|
|
### Bypassing Security Controls with `X-Forwarded-For`
|
|
Un atacante puede manipular el encabezado `X-Forwarded-For` para eludir controles de acceso basados en IP. Este encabezado es utilizado a menudo por proxies para rastrear la dirección IP de origen de un cliente. Sin embargo, si un proxy trata este encabezado como hop-by-hop y lo reenvía sin la validación adecuada, un atacante puede suplantar su dirección IP.
|
|
|
|
**Escenario de Ataque:**
|
|
1. El atacante envía una solicitud HTTP a una aplicación web detrás de un proxy, incluyendo una dirección IP falsa en el encabezado `X-Forwarded-For`.
|
|
2. El atacante también incluye el encabezado `Connection: close, X-Forwarded-For`, lo que lleva al proxy a tratar `X-Forwarded-For` como hop-by-hop.
|
|
3. El proxy mal configurado reenvía la solicitud a la aplicación web sin el encabezado `X-Forwarded-For` suplantado.
|
|
4. La aplicación web, al no ver el encabezado original `X-Forwarded-For`, podría considerar la solicitud como proveniente directamente de un proxy de confianza, permitiendo potencialmente el acceso no autorizado.
|
|
|
|
### Cache Poisoning via Hop-by-Hop Header Injection
|
|
Si un servidor de caché almacena incorrectamente contenido basado en encabezados hop-by-hop, un atacante podría inyectar encabezados maliciosos para envenenar la caché. Esto serviría contenido incorrecto o malicioso a los usuarios que solicitan el mismo recurso.
|
|
|
|
**Escenario de Ataque:**
|
|
1. Un atacante envía una solicitud a una aplicación web con un encabezado hop-by-hop que no debería ser almacenado en caché (por ejemplo, `Connection: close, Cookie`).
|
|
2. El servidor de caché mal configurado no elimina el encabezado hop-by-hop y almacena en caché la respuesta específica para la sesión del atacante.
|
|
3. Los futuros usuarios que soliciten el mismo recurso reciben la respuesta en caché, que fue adaptada para el atacante, lo que podría llevar al secuestro de sesión o a la exposición de información sensible.
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|