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

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:

http
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:

http
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

  1. Mshambuliaji anadhibiti evil.com ambayo inatatua kwenye node ya CDN edge sawa na lengo internal.company.
  2. Vivinjari vya mwathirika tayari vina muunganisho wa HTTP/2 uliofunguliwa kwa evil.com.
  3. Mshambuliaji anaingiza picha isiyoonekana <img src="https://internal.company/…"> kwenye ukurasa wao.
  4. Kwa sababu vigezo vya muunganisho vinapatana, kivinjari kinatumia tena muunganisho wa TLS uliopo na kuunganisha ombi kwa internal.company.
  5. 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)

MwakaKipengeleCVEMaelezo
2022AWS Application Load Balancer–Kichwa cha mwenyeji kilithibitishwa tu kwenye ombi la kwanza; kimefanyiwa marekebisho kwa kuboresha injini ya sheria (iliyofichuliwa na SecurityLabs).
2023Apache Traffic Server < 9.2.2CVE-2023-39852Iliruhusu ukatili wa ombi kupitia upya wa muunganisho wa HTTP/2 wakati CONFIG proxy.config.http.parent_proxy_routing_enable ilipokuwa imewekwa.
2024Envoy Proxy < 1.29.0CVE-2024-2470Thibitisho mbaya la :authority baada ya mtiririko wa kwanza kuruhusu ukatili wa ombi wa mpangilio wa wapangaji katika mesh zinazoshirikiwa.

Karatasi ya Udhibiti

  1. Tuma maombi mawili katika muunganisho uleule wa TCP/TLS na vichwa tofauti vya Host au :authority.
  2. Angalia ikiwa jibu la pili linatoka kwa mwenyeji wa kwanza (salama) au mwenyeji wa pili (hatari).
  3. Katika Burp: Repeat β†’ keep-alive β†’ Send β†’ Follow.
  4. 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