mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
89 lines
8.8 KiB
Markdown
89 lines
8.8 KiB
Markdown
# Cabeceras 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>
|
||
|
||
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
* **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](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/) es el evento de ciberseguridad más relevante en **España** y uno de los más importantes en **Europa**. Con **la misión de promover el conocimiento técnico**, este congreso es un punto de encuentro para profesionales de la tecnología y la ciberseguridad en todas las disciplinas.
|
||
|
||
{% embed url="https://www.rootedcon.com/" %}
|
||
|
||
## ¿Qué es una cabecera hop-by-hop?
|
||
|
||
Una cabecera hop-by-hop es una cabecera diseñada para ser procesada y consumida por el proxy que maneja actualmente la solicitud, en lugar de una cabecera de extremo a extremo.
|
||
|
||
Según [RFC 2616](https://tools.ietf.org/html/rfc2616#section-13.5.1), la especificación HTTP/1.1 trata las siguientes cabeceras como hop-by-hop por defecto: `Keep-Alive`, `Transfer-Encoding`, `TE`, `Connection`, `Trailer`, `Upgrade`, `Proxy-Authorization` y `Proxy-Authenticate`. Al encontrar estas cabeceras en una solicitud, un proxy compatible debe procesar o realizar cualquier acción que estas cabeceras indiquen, y no reenviarlas al siguiente salto.
|
||
|
||
Además de estas opciones predeterminadas, una solicitud [también puede definir un conjunto personalizado de cabeceras que se tratarán como hop-by-hop](https://tools.ietf.org/html/rfc2616#section-14.10) agregándolas a la cabecera `Connection`, de la siguiente manera:
|
||
```
|
||
Connection: close, X-Foo, X-Bar
|
||
```
|
||
## Teoría sobre el abuso de encabezados hop-by-hop
|
||
|
||
En teoría, los proxies deberían eliminar los encabezados hop-by-hop recibidos antes de enviarlos a la siguiente dirección. Pero se puede encontrar en la práctica que algunos proxies lo hacen y otros simplemente envían todos los encabezados agregando su propio encabezado `Connection`.
|
||
|
||
![](<../.gitbook/assets/image (138).png>)
|
||
|
||
## Pruebas de eliminación hop-by-hop
|
||
|
||
Si encuentra un encabezado que hace que la respuesta del servidor cambie si se establece o no, entonces puede buscar eliminaciones hop-by-hop. Por ejemplo, el encabezado de cookie hará que la respuesta del servidor sea dramáticamente diferente si se establece (con un contenido válido) y si no lo está.
|
||
|
||
Por lo tanto, envíe una solicitud con un encabezado válido y con este valor del encabezado Connection `Connection: close, Cookie` si la respuesta es la misma que si no se envió la cookie, entonces hay un proxy que está eliminando encabezados.
|
||
|
||
Puede encontrar si la respuesta del servidor es diferente si se elimina un encabezado utilizando esta técnica usando [este script](https://gist.github.com/ndavison/298d11b3a77b97c908d63a345d3c624d). Luego, si pasa una lista de encabezados conocidos, como [esta](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/BurpSuite-ParamMiner/lowercase-headers), puede observar qué encabezados están causando efectos a pesar de no estar en su solicitud original:
|
||
```
|
||
for HEADER in $(cat headers.txt); do python poison-test.py -u "https://target" -x "$HEADER"; sleep 1; done
|
||
```
|
||
Este ciclo recorre toda la lista de encabezados e imprime si su presencia en la lista hop-by-hop creó un código de estado diferente o un tamaño de cuerpo de respuesta.
|
||
|
||
## Abusando de X-Forwarded-For
|
||
|
||
En general, los proxies agregarán las direcciones IP de los clientes dentro del encabezado `X-Forwarded-For` para que el siguiente salto sepa de dónde proviene la petición. Sin embargo, si un atacante envía un valor de conexión como `Connection: close, X-Forwarded-For` y el primer proxy envía los encabezados hop-by-hop con sus valores (envía el valor especial de conexión), entonces el segundo valor puede eliminar el encabezado X-Forward-For.\
|
||
Al final, la aplicación final no sabrá quién envió la solicitud y puede pensar que fue el último proxy, y en este escenario un atacante puede acceder a recursos protegidos por la lista blanca de IP (¿tal vez algún `/admin`?).
|
||
|
||
Dependiendo del sistema que se esté atacando, también puede haber `Forwarded`, `X-Real-IP` y otros que son menos comunes.
|
||
|
||
## Detectando Proxies y huellas de servicios
|
||
|
||
Esta técnica puede ser útil para detectar proxies (usando la técnica de cookies) o incluso para detectar servicios. Por ejemplo, si abusa de esta técnica para eliminar el encabezado `X-BLUECOAT-VIA` y se produce un error, entonces ha descubierto que se estaba utilizando Bluecoat.
|
||
|
||
## Otros ataques
|
||
|
||
* Para una posible intoxicación de caché DoS abusando de esta técnica, lea el enlace original.
|
||
* Esto podría ser útil en ataques que permitan insertar nuevos encabezados (baja probabilidad).
|
||
* También podría ser útil para evitar funcionalidades defensivas. Por ejemplo, si la falta de un encabezado significa que una solicitud no debe ser procesada por un WAF, podría evitar un WAF con esta técnica.
|
||
|
||
## Referencias
|
||
|
||
{% 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/) es el evento de ciberseguridad más relevante en **España** y uno de los más importantes en **Europa**. Con **la misión de promover el conocimiento técnico**, este congreso es un punto de encuentro hirviente para los profesionales de la tecnología y la ciberseguridad en todas las 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>
|
||
|
||
* ¿Trabaja en una **empresa de ciberseguridad**? ¿Quiere ver su **empresa anunciada en HackTricks**? ¿O quiere tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulte los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
* Obtenga el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||
* **Únase al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígame** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
* **Comparta sus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||
|
||
</details>
|