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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
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:
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:
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
- Die aanvaller beheer
evil.com
wat na dieselfde CDN randnode as die teikeninternal.company
oplos. - Die slagoffer se blaier het reeds 'n oop HTTP/2 verbinding na
evil.com
. - Die aanvaller inkorporeer 'n versteekte
<img src="https://internal.company/…">
in hul bladsy. - Omdat die verbindingsparameters ooreenstem, hergebruik die blaier die bestaande TLS-verbinding en multiplex die versoek vir
internal.company
. - 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)
Jaar | Komponent | CVE | Aantekeninge |
---|---|---|---|
2022 | AWS Application Load Balancer | – | Host kop net op eerste versoek geverifieer; reggestel deur reëls enjin te patch. |
2023 | Apache Traffic Server < 9.2.2 | CVE-2023-39852 | Het versoek smuggling via HTTP/2 verbinding hergebruik toegelaat toe CONFIG proxy.config.http.parent_proxy_routing_enable ingestel was. |
2024 | Envoy Proxy < 1.29.0 | CVE-2024-2470 | Onbehoorlike validasie van :authority na eerste stroom het kruis-huurder versoek smuggling in gedeelde netwerke moontlik gemaak. |
Detectie Cheat-Sheet
- Stuur twee versoeke in die dieselfde TCP/TLS verbinding met verskillende Host of :authority koppe.
- Observeer of die tweede antwoord van die eerste gasheer (veilig) of die tweede gasheer (kwetsbaar) afkomstig is.
- In Burp:
Repeat → keep-alive → Send → Follow
. - 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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.