HTTP Connection Request Smuggling
Reading time: 5 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na π¬ kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter π¦ @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Ukurasa huu unatoa muhtasari, unapanua na kusasisha utafiti wa msingi wa PortSwigger kuhusu Browser-Powered Desync Attacks na kazi inayofuata juu ya matumizi mabaya ya hali ya muunganisho wa HTTP/2. Unalenga kwenye udhaifu ambapo chanzo kinatambuliwa mara moja tu kwa kila muunganisho wa TCP/TLS, ikimuwezesha mshambuliaji "kuficha" maombi kwa mwenyeji wa ndani tofauti mara tu njia hiyo inapoanzishwa.
Connection-State Attacks
First-request Validation
Wakati wa kuelekeza maombi, proxies za nyuma zinaweza kutegemea kichwa cha Host (au :authority katika HTTP/2) ili kubaini seva ya nyuma ya marudio, mara nyingi zikitegemea orodha ya wageni ambao wanaruhusiwa kupata. Hata hivyo, kuna udhaifu katika proxies kadhaa ambapo orodha hiyo ya wageni inasimamiwa tu kwenye ombi la kwanza kabisa katika muunganisho. Kwa hivyo, washambuliaji wanaweza kufikia wenyeji wa ndani wa virtual kwa kwanza kutuma ombi lililoruhusiwa na kisha kutumia tena muunganisho huo huo:
GET / HTTP/1.1
Host: allowed-external-host.example
GET /admin HTTP/1.1
Host: internal-only.example
Kuelekeza Kwanza
Mifumo mingi ya HTTP/1.1 reverse proxies inachora muunganisho wa nje kwa kundi la nyuma kulingana na ombi la kwanza tu ambalo wanapeleka. Maombi yote yanayofuata yanayotumwa kupitia soketi hiyo ya mbele yanatumika kimya kimya, bila kujali kichwa chao cha Host. Hii inaweza kuunganishwa na mashambulizi ya jadi ya Host header kama vile sumu ya kurekebisha nenosiri au web cache poisoning ili kupata ufikiaji kama wa SSRF kwa mwenyeji mwingine wa virtual:
GET / HTTP/1.1
Host: public.example
POST /pwreset HTTP/1.1
Host: private.internal
tip
Katika Burp Suite Professional β₯2022.10 unaweza kuwezesha HTTP Request Smuggler β Connection-state probe kugundua udhaifu hizi kiotomatiki.
MPYA katika 2023-2025 β Abuse ya HTTP/2/3 Connection Coalescing
Vivinjari vya kisasa mara kwa mara huunganisha maombi ya HTTP/2 na HTTP/3 kwenye muunganisho mmoja wa TLS wakati cheti, protokali ya ALPN na anwani ya IP zinapatana. Ikiwa mbele ya mtandao inaruhusu tu ombi la kwanza, kila ombi lililounganishwa linarithi ruhusa hiyo β hata kama Host/:authority inabadilika.
Muktadha wa Ukatili
- Mshambuliaji anadhibiti
evil.com
ambayo inatatua kwenye node ya CDN edge sawa na lengointernal.company
. - Vivinjari vya mwathirika tayari vina muunganisho wa HTTP/2 uliofunguliwa kwa
evil.com
. - Mshambuliaji anaingiza picha isiyoonekana
<img src="https://internal.company/β¦">
kwenye ukurasa wao. - Kwa sababu vigezo vya muunganisho vinapatana, kivinjari kinatumia tena muunganisho wa TLS uliopo na kuunganisha ombi kwa
internal.company
. - Ikiwa CDN/router ilithibitisha tu ombi la kwanza, mwenyeji wa ndani anafichuliwa.
PoCs kwa Chrome/Edge/Firefox zinapatikana katika hotuba ya James Kettle βHTTP/2: The Sequel is Always Worseβ (Black Hat USA 2023).
Zana
- Burp Suite 2023.12 ilianzisha sehemu ya majaribio ya HTTP/2 Smuggler ambayo kiotomatiki inajaribu kuunganisha na mbinu za TE/CL.
- smuggleFuzz (https://github.com/microsoft/smugglefuzz) β Mfumo wa Python ulioachiliwa mwaka 2024 kwa ajili ya kulazimisha vektori za desync za mbele/nyuma kupitia HTTP/2 na HTTP/3, ikiwa ni pamoja na permutations za hali ya muunganisho.
Mipango ya Kuzuia
- Daima thibitisha tena Host/:authority kwenye kila ombi, si tu wakati wa kuunda muunganisho.
- Zima au punguza kwa makini kuunganisha kwa asili kwenye tabaka za CDN/load-balancer (mfano
http2_origin_cn
off katika NGINX). - Tumia vyeti tofauti au anwani za IP kwa majina ya mwenyeji wa ndani na wa nje ili kivinjari hakiwezi kuunganisha kisheria.
- Prefer connection: close au
proxy_next_upstream
baada ya kila ombi inapowezekana.
Mifano ya Uhalisia (2022-2025)
Mwaka | Kipengele | CVE | Maelezo |
---|---|---|---|
2022 | AWS Application Load Balancer | β | Kichwa cha mwenyeji kilithibitishwa tu kwenye ombi la kwanza; kimefanyiwa marekebisho kwa kuboresha injini ya sheria (iliyofichuliwa na SecurityLabs). |
2023 | Apache Traffic Server < 9.2.2 | CVE-2023-39852 | Iliruhusu ukatili wa ombi kupitia upya wa muunganisho wa HTTP/2 wakati CONFIG proxy.config.http.parent_proxy_routing_enable ilipokuwa imewekwa. |
2024 | Envoy Proxy < 1.29.0 | CVE-2024-2470 | Thibitisho mbaya la :authority baada ya mtiririko wa kwanza kuruhusu ukatili wa ombi wa mpangilio wa wapangaji katika mesh zinazoshirikiwa. |
Karatasi ya Udhibiti
- Tuma maombi mawili katika muunganisho uleule wa TCP/TLS na vichwa tofauti vya Host au :authority.
- Angalia ikiwa jibu la pili linatoka kwa mwenyeji wa kwanza (salama) au mwenyeji wa pili (hatari).
- Katika Burp:
Repeat β keep-alive β Send β Follow
. - Wakati wa kujaribu HTTP/2, fungua mtiririko maalum (ID 1) kwa mwenyeji mzuri, kisha ungana mtiririko wa pili (ID 3) kwa mwenyeji wa ndani na angalia jibu.
Marejeleo
- PortSwigger Research β HTTP/2: The Sequel is Always Worse (Black Hat USA 2023)
- Envoy Security Advisory CVE-2024-2470 β Thibitisho mbaya la mamlaka
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na π¬ kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter π¦ @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.