HTTP Connection Request Smuggling

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Hierdie bladsy som op, brei uit en werk die baanbrekende PortSwigger-navorsing oor Browser-Powered Desync Attacks en daaropvolgende werk oor HTTP/2 verbindingstoestand misbruik. Dit fokus op kwesbaarhede waar 'n oorsprong slegs een keer per TCP/TLS-verbinding bepaal word, wat 'n aanvaller in staat stel om versoeke na 'n ander interne gasheer te “smuggle” sodra die kanaal gevestig is.

Connection-State Attacks

Eerste-versoek Validasie

Wanneer versoeke gerouteer word, mag omgekeerde proxies afhanklik wees van die Host (of :authority in HTTP/2) kop om die bestemming agterkant bediener te bepaal, dikwels staatmakend op 'n witlys van gashere wat toegang toegelaat word. Daar bestaan egter 'n kwesbaarheid in 'n aantal proxies waar die witlys slegs op die heel eerste versoek in 'n verbinding afgedwing word. Gevolglik kan aanvallers toegang verkry tot interne virtuele gashere deur eers 'n toegelate versoek te stuur en dan dieselfde onderliggende verbinding te hergebruik:

http
GET / HTTP/1.1
Host: allowed-external-host.example

GET /admin HTTP/1.1
Host: internal-only.example

Eerste-verzoek Routering

Baie HTTP/1.1 omgekeerde proxies koppel 'n uitgaande verbinding aan 'n agtergrondpoel uitsluitlik gebaseer op die eerste versoek wat hulle deurstuur. Alle daaropvolgende versoeke wat deur dieselfde voorpunt-soket gestuur word, word stilweg hergebruik, ongeag hul Host-kop. Dit kan gekombineer word met klassieke Host-kop aanvalle soos wagwoord-herstel vergiftiging of web-kas vergiftiging om SSRF-agtige toegang tot ander virtuele gasheer te verkry:

http
GET / HTTP/1.1
Host: public.example

POST /pwreset HTTP/1.1
Host: private.internal

tip

In Burp Suite Professional ≥2022.10 kan jy HTTP Request Smuggler → Connection-state probe inskakel om hierdie swakhede outomaties te detecteer.


NUWE in 2023-2025 – HTTP/2/3 Verbinding Samevoeging Misbruik

Moderne blaaiers samevoeg gereeld HTTP/2 en HTTP/3 versoeke op 'n enkele TLS-verbinding wanneer die sertifikaat, ALPN-protokol en IP-adres ooreenstem. As 'n front-end slegs die eerste versoek magtig, erf elke daaropvolgende samegevoegde versoek daardie magtiging – selfs al verander die Host/:authority.

Misbruik scenario

  1. Die aanvaller beheer evil.com wat na dieselfde CDN randnode as die teiken internal.company oplos.
  2. Die slagoffer se blaier het reeds 'n oop HTTP/2 verbinding na evil.com.
  3. Die aanvaller inkorporeer 'n versteekte <img src="https://internal.company/…"> in hul bladsy.
  4. Omdat die verbindingsparameters ooreenstem, hergebruik die blaier die bestaande TLS-verbinding en multiplex die versoek vir internal.company.
  5. As die CDN/router slegs die eerste versoek geverifieer het, is die interne gasheer blootgestel.

PoCs vir Chrome/Edge/Firefox is beskikbaar in James Kettle se praatjie “HTTP/2: The Sequel is Always Worse” (Black Hat USA 2023).

Gereedskap

  • Burp Suite 2023.12 het 'n eksperimentele HTTP/2 Smuggler insitpunt bekendgestel wat outomaties probeer om samevoeging en TE/CL tegnieke toe te pas.
  • smuggleFuzz (https://github.com/microsoft/smugglefuzz) – 'n Python-raamwerk wat in 2024 vrygestel is om front-end/back-end desync vektore oor HTTP/2 en HTTP/3 te brute-force, insluitend verbindingsstaat permutasies.

Versagtings

  • Herverifieer altyd Host/:authority op elke versoek, nie net op verbinding skepping nie.
  • Deaktiveer of beperk streng oorsprong samevoeging op CDN/laaibalans lae (bv. http2_origin_cn af in NGINX).
  • Ontplooi aparte sertifikate of IP-adresse vir interne en eksterne gasheername sodat die blaier hulle nie wettig kan samevoeg nie.
  • Verkies connection: close of proxy_next_upstream na elke versoek waar prakties.

Werklike Gevalle (2022-2025)

JaarKomponentCVEAantekeninge
2022AWS Application Load BalancerHost kop net op eerste versoek geverifieer; reggestel deur reëls enjin te patch.
2023Apache Traffic Server < 9.2.2CVE-2023-39852Het versoek smuggling via HTTP/2 verbinding hergebruik toegelaat toe CONFIG proxy.config.http.parent_proxy_routing_enable ingestel was.
2024Envoy Proxy < 1.29.0CVE-2024-2470Onbehoorlike validasie van :authority na eerste stroom het kruis-huurder versoek smuggling in gedeelde netwerke moontlik gemaak.

Detectie Cheat-Sheet

  1. Stuur twee versoeke in die dieselfde TCP/TLS verbinding met verskillende Host of :authority koppe.
  2. Observeer of die tweede antwoord van die eerste gasheer (veilig) of die tweede gasheer (kwetsbaar) afkomstig is.
  3. In Burp: Repeat → keep-alive → Send → Follow.
  4. Wanneer jy HTTP/2 toets, open 'n toegewyde stroom (ID 1) vir 'n onskadelike gasheer, dan multiplex 'n tweede stroom (ID 3) na 'n interne gasheer en soek na 'n antwoord.

Verwysings

  • PortSwigger Research – HTTP/2: The Sequel is Always Worse (Black Hat USA 2023)
  • Envoy Security Advisory CVE-2024-2470 – Onbehoorlike gesag validasie

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks