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
9d288f91b8
commit
34f145e31e
@ -1,34 +1,83 @@
|
||||
# HTTP Verbinding Versoek Smuggling
|
||||
# HTTP Connection Request Smuggling
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
**Dit is 'n opsomming van die pos** [**https://portswigger.net/research/browser-powered-desync-attacks**](https://portswigger.net/research/browser-powered-desync-attacks)
|
||||
**Hierdie bladsy som op, brei uit en werk** die baanbrekende PortSwigger-navorsing oor [Browser-Powered Desync Attacks](https://portswigger.net/research/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.
|
||||
|
||||
## Verbindingstoestand Aanvalle <a href="#state" id="state"></a>
|
||||
## Connection-State Attacks <a href="#state" id="state"></a>
|
||||
|
||||
### Eerste-versoek Validasie
|
||||
|
||||
Wanneer versoeke gerouteer word, mag omgekeerde proxies afhanklik wees van die **Host header** om die bestemming agtergrond bediener te bepaal, dikwels staatmakend op 'n witlys van hosts wat toegang toegelaat word. Daar bestaan egter 'n kwesbaarheid in sommige proxies waar die witlys slegs op die aanvanklike versoek in 'n verbinding afgedwing word. Gevolglik kan aanvallers hiervan gebruik maak deur eers 'n versoek na 'n toegelate host te maak en dan 'n interne webwerf deur dieselfde verbinding aan te vra:
|
||||
```
|
||||
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]
|
||||
Host: allowed-external-host.example
|
||||
|
||||
GET / HTTP/1.1
|
||||
Host: [internal-host]
|
||||
GET /admin HTTP/1.1
|
||||
Host: internal-only.example
|
||||
```
|
||||
### Eerste-aanvraag Routering
|
||||
### Eerste-verzoek Routering
|
||||
|
||||
In sommige konfigurasies kan 'n front-end bediener die **Host kop van die eerste aanvraag** gebruik om die agterkant routering vir daardie aanvraag te bepaal, en dan volhoubaar alle daaropvolgende aanvraag van dieselfde kliëntverbinding na dieselfde agterkantverbinding te router. Dit kan gedemonstreer word as:
|
||||
```
|
||||
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](https://portswigger.net/web-security/host-header) soos wagwoord-herstel vergiftiging of [web-kas vergiftiging](https://portswigger.net/web-security/web-cache-poisoning) om SSRF-agtige toegang tot ander virtuele gasheer te verkry:
|
||||
```http
|
||||
GET / HTTP/1.1
|
||||
Host: example.com
|
||||
Host: public.example
|
||||
|
||||
POST /pwreset HTTP/1.1
|
||||
Host: psres.net
|
||||
Host: private.internal
|
||||
```
|
||||
Hierdie probleem kan potensieel gekombineer word met [Host header attacks](https://portswigger.net/web-security/host-header), soos wagwoordherstel vergiftiging of [web cache poisoning](https://portswigger.net/web-security/web-cache-poisoning), om ander kwesbaarhede te benut of ongeoorloofde toegang tot addisionele virtuele gasheer te verkry.
|
||||
> [!TIP]
|
||||
> In Burp Suite Professional ≥2022.10 kan jy **HTTP Request Smuggler → Connection-state probe** inskakel om hierdie swakhede outomaties te detecteer.
|
||||
|
||||
> [!NOTE]
|
||||
> Om hierdie kwesbaarhede te identifiseer, kan die 'connection-state probe' funksie in HTTP Request Smuggler gebruik word.
|
||||
---
|
||||
|
||||
## 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)
|
||||
|
||||
| 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
|
||||
|
||||
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
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user