mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/http-connection-request-smuggling.md'] t
This commit is contained in:
parent
29c75b1acd
commit
7c417aa491
@ -2,33 +2,82 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
**Hii ni muhtasari wa chapisho** [**https://portswigger.net/research/browser-powered-desync-attacks**](https://portswigger.net/research/browser-powered-desync-attacks)
|
||||
**Ukurasa huu unatoa muhtasari, unapanua na kusasisha** utafiti wa msingi wa PortSwigger kuhusu [Browser-Powered Desync Attacks](https://portswigger.net/research/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 <a href="#state" id="state"></a>
|
||||
## Connection-State Attacks <a href="#state" id="state"></a>
|
||||
|
||||
### First-request Validation
|
||||
|
||||
Wakati wa kuelekeza maombi, proxies za nyuma zinaweza kutegemea **Host header** kubaini seva ya nyuma ya marudio, mara nyingi zikitegemea orodha ya wageni ambao wanaruhusiwa kupata. Hata hivyo, kuna udhaifu katika proxies zingine ambapo orodha ya wageni inatekelezwa tu kwenye ombi la awali katika muunganisho. Kwa hivyo, washambuliaji wanaweza kutumia hii kwa kwanza kufanya ombi kwa mwenyeji aliyeidhinishwa na kisha kuomba tovuti ya ndani kupitia muunganisho huo huo:
|
||||
```
|
||||
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]
|
||||
Host: allowed-external-host.example
|
||||
|
||||
GET / HTTP/1.1
|
||||
Host: [internal-host]
|
||||
GET /admin HTTP/1.1
|
||||
Host: internal-only.example
|
||||
```
|
||||
### Kuelekeza Ombi la Kwanza
|
||||
### Kuelekeza Kwanza
|
||||
|
||||
Katika baadhi ya mipangilio, seva ya mbele inaweza kutumia **kichwa cha Host cha ombi la kwanza** kubaini mwelekeo wa nyuma kwa ombi hilo, na kisha kuendelea kuelekeza maombi yote yanayofuata kutoka kwa muunganisho sawa wa mteja kwenye muunganisho sawa wa nyuma. Hii inaweza kuonyeshwa kama:
|
||||
```
|
||||
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](https://portswigger.net/web-security/host-header) kama vile sumu ya kurekebisha nenosiri au [web cache poisoning](https://portswigger.net/web-security/web-cache-poisoning) ili kupata ufikiaji kama wa SSRF kwa mwenyeji mwingine wa virtual:
|
||||
```http
|
||||
GET / HTTP/1.1
|
||||
Host: example.com
|
||||
Host: public.example
|
||||
|
||||
POST /pwreset HTTP/1.1
|
||||
Host: psres.net
|
||||
Host: private.internal
|
||||
```
|
||||
Tatizo hili linaweza kuunganishwa na [Host header attacks](https://portswigger.net/web-security/host-header), kama vile upotoshaji wa kurekebisha nenosiri au [web cache poisoning](https://portswigger.net/web-security/web-cache-poisoning), ili kutumia udhaifu mwingine au kupata ufikiaji usioidhinishwa kwa wageni wa ziada wa virtual.
|
||||
> [!TIP]
|
||||
> Katika Burp Suite Professional ≥2022.10 unaweza kuwezesha **HTTP Request Smuggler → Connection-state probe** kugundua udhaifu hizi kiotomatiki.
|
||||
|
||||
> [!NOTE]
|
||||
> Ili kubaini udhaifu hizi, kipengele cha 'connection-state probe' katika HTTP Request Smuggler kinaweza kutumika.
|
||||
---
|
||||
|
||||
## 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)
|
||||
|
||||
| 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
|
||||
|
||||
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
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user