hacktricks/pentesting-web/abusing-hop-by-hop-headers.md
carlospolop 63bd9641c0 f
2023-06-05 20:33:24 +02:00

8.8 KiB
Raw Blame History

Cabeceras hop-by-hop

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

RootedCON 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, 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 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.

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. Luego, si pasa una lista de encabezados conocidos, como esta, 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" %}

RootedCON 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/" %}

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