hop-by-hop headers

Support HackTricks

Questo è un riepilogo del post https://nathandavison.com/blog/abusing-http-hop-by-hop-request-headers

Gli hop-by-hop headers sono specifici per una singola connessione a livello di trasporto, utilizzati principalmente in HTTP/1.1 per gestire i dati tra due nodi (come client-proxy o proxy-proxy), e non sono destinati ad essere inoltrati. Gli hop-by-hop headers standard includono Keep-Alive, Transfer-Encoding, TE, Connection, Trailer, Upgrade, Proxy-Authorization e Proxy-Authenticate, come definito in RFC 2616. Ulteriori intestazioni possono essere designate come hop-by-hop tramite l'intestazione Connection.

Abusing Hop-by-Hop Headers

Una gestione impropria degli hop-by-hop headers da parte dei proxy può portare a problemi di sicurezza. Sebbene ci si aspetti che i proxy rimuovano queste intestazioni, non tutti lo fanno, creando potenziali vulnerabilità.

Testing for Hop-by-Hop Header Handling

La gestione degli hop-by-hop headers può essere testata osservando i cambiamenti nelle risposte del server quando specifiche intestazioni sono contrassegnate come hop-by-hop. Strumenti e script possono automatizzare questo processo, identificando come i proxy gestiscono queste intestazioni e potenzialmente scoprendo configurazioni errate o comportamenti dei proxy.

Abusare degli hop-by-hop headers può portare a varie implicazioni di sicurezza. Di seguito sono riportati un paio di esempi che dimostrano come queste intestazioni possano essere manipolate per potenziali attacchi:

Bypassing Security Controls with X-Forwarded-For

Un attaccante può manipolare l'intestazione X-Forwarded-For per bypassare i controlli di accesso basati su IP. Questa intestazione è spesso utilizzata dai proxy per tracciare l'indirizzo IP di origine di un client. Tuttavia, se un proxy tratta questa intestazione come hop-by-hop e la inoltra senza una corretta validazione, un attaccante può falsificare il proprio indirizzo IP.

Scenario di attacco:

  1. L'attaccante invia una richiesta HTTP a un'applicazione web dietro un proxy, includendo un indirizzo IP falso nell'intestazione X-Forwarded-For.

  2. L'attaccante include anche l'intestazione Connection: close, X-Forwarded-For, spingendo il proxy a trattare X-Forwarded-For come hop-by-hop.

  3. Il proxy mal configurato inoltra la richiesta all'applicazione web senza l'intestazione X-Forwarded-For falsificata.

  4. L'applicazione web, non vedendo l'intestazione originale X-Forwarded-For, potrebbe considerare la richiesta come proveniente direttamente da un proxy fidato, consentendo potenzialmente accessi non autorizzati.

Cache Poisoning via Hop-by-Hop Header Injection

Se un server di cache memorizza erroneamente contenuti basati su hop-by-hop headers, un attaccante potrebbe iniettare intestazioni dannose per avvelenare la cache. Questo servirebbe contenuti errati o dannosi agli utenti che richiedono la stessa risorsa.

Scenario di attacco:

  1. Un attaccante invia una richiesta a un'applicazione web con un'intestazione hop-by-hop che non dovrebbe essere memorizzata nella cache (ad esempio, Connection: close, Cookie).

  2. Il server di cache mal configurato non rimuove l'intestazione hop-by-hop e memorizza la risposta specifica per la sessione dell'attaccante.

  3. Gli utenti futuri che richiedono la stessa risorsa ricevono la risposta memorizzata nella cache, che era personalizzata per l'attaccante, portando potenzialmente a un furto di sessione o all'esposizione di informazioni sensibili.

Support HackTricks

Last updated