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
							
								
									ab80f2466c
								
							
						
					
					
						commit
						b8b78f5154
					
				@ -2,33 +2,82 @@
 | 
			
		||||
 | 
			
		||||
{{#include ../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
**Ovo je sažetak posta** [**https://portswigger.net/research/browser-powered-desync-attacks**](https://portswigger.net/research/browser-powered-desync-attacks)
 | 
			
		||||
**Ova stranica sumira, proširuje i ažurira** seminalna istraživanja PortSwigger o [Browser-Powered Desync Attacks](https://portswigger.net/research/browser-powered-desync-attacks) i kasnijem radu na zloupotrebi stanja veze HTTP/2. Fokusira se na ranjivosti gde se **izvor određuje samo jednom po TCP/TLS vezi**, omogućavajući napadaču da “prokrijumčari” zahteve na različiti unutrašnji host nakon što je kanal uspostavljen.
 | 
			
		||||
 | 
			
		||||
## Napadi na stanje veze <a href="#state" id="state"></a>
 | 
			
		||||
## Connection-State Attacks <a href="#state" id="state"></a>
 | 
			
		||||
 | 
			
		||||
### Validacija prvog zahteva
 | 
			
		||||
 | 
			
		||||
Kada usmeravaju zahteve, reverzni proksi mogu zavisiti od **Host header** da odrede odredišni back-end server, često se oslanjajući na belu listu hostova kojima je dozvoljen pristup. Međutim, postoji ranjivost u nekim proksijima gde se bela lista primenjuje samo na inicijalni zahtev u vezi. Kao rezultat toga, napadači bi mogli iskoristiti ovo tako što bi prvo poslali zahtev ka dozvoljenom hostu, a zatim zatražili interni sajt kroz istu vezu:
 | 
			
		||||
```
 | 
			
		||||
Kada usmeravaju zahteve, reverzni proksi mogu zavisiti od **Host** (ili **:authority** u HTTP/2) header-a da odrede odredišni back-end server, često se oslanjajući na belu listu hostova kojima je dozvoljen pristup. Međutim, postoji ranjivost u brojnim proksijima gde se bela lista **sprovodi samo na prvom zahtevu u vezi**. Kao rezultat, napadači mogu pristupiti unutrašnjim virtuelnim hostovima tako što prvo šalju dozvoljeni zahtev, a zatim ponovo koriste istu osnovnu vezu:
 | 
			
		||||
```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
 | 
			
		||||
```
 | 
			
		||||
### Prvo-zahtjev Ruting
 | 
			
		||||
 | 
			
		||||
U nekim konfiguracijama, front-end server može koristiti **Host zaglavlje prvog zahtjeva** da odredi pozadinsko rutiranje za taj zahtjev, a zatim trajno usmjeravati sve naredne zahtjeve iz iste klijentske veze na istu pozadinsku vezu. Ovo se može demonstrirati kao:
 | 
			
		||||
```
 | 
			
		||||
Mnogi HTTP/1.1 reverzni proksi mapiraju izlaznu vezu na pozadinski pool **isključivo na osnovu prvog zahteva koji proslede**. Svi naredni zahtevi poslati kroz istu prednju utičnicu tiho se ponovo koriste, bez obzira na njihov Host header. Ovo se može kombinovati sa klasičnim [napadima na Host header](https://portswigger.net/web-security/host-header) kao što su trovanje resetovanja lozinke ili [trovanje web kešom](https://portswigger.net/web-security/web-cache-poisoning) kako bi se dobio pristup sličan SSRF-u drugim virtuelnim hostovima:
 | 
			
		||||
```http
 | 
			
		||||
GET / HTTP/1.1
 | 
			
		||||
Host: example.com
 | 
			
		||||
Host: public.example
 | 
			
		||||
 | 
			
		||||
POST /pwreset HTTP/1.1
 | 
			
		||||
Host: psres.net
 | 
			
		||||
Host: private.internal
 | 
			
		||||
```
 | 
			
		||||
Ovaj problem se potencijalno može kombinovati sa [Host header attacks](https://portswigger.net/web-security/host-header), kao što su trovanje resetovanjem lozinke ili [web cache poisoning](https://portswigger.net/web-security/web-cache-poisoning), kako bi se iskoristile druge ranjivosti ili dobio neovlašćen pristup dodatnim virtuelnim hostovima.
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> U Burp Suite Professional ≥2022.10 možete omogućiti **HTTP Request Smuggler → Connection-state probe** da automatski otkrije ove slabosti.
 | 
			
		||||
 | 
			
		||||
> [!NOTE]
 | 
			
		||||
> Da bi se identifikovale ove ranjivosti, može se koristiti funkcija 'connection-state probe' u HTTP Request Smuggler.
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## NOVO u 2023-2025 – Zloupotreba HTTP/2/3 povezivanja
 | 
			
		||||
 | 
			
		||||
Moderni pregledači rutinski **koalesiraju** HTTP/2 i HTTP/3 zahteve na jednoj TLS vezi kada se sertifikat, ALPN protokol i IP adresa poklapaju. Ako front-end samo autorizuje prvi zahtev, svaki sledeći koalesirani zahtev nasleđuje tu autorizaciju – **čak i ako se Host/:authority menja**.
 | 
			
		||||
 | 
			
		||||
### Scenarijo eksploatacije
 | 
			
		||||
1. Napadač kontroliše `evil.com` koji se rešava na isti CDN edge čvor kao ciljni `internal.company`.
 | 
			
		||||
2. Pregledač žrtve već ima otvorenu HTTP/2 vezu sa `evil.com`.
 | 
			
		||||
3. Napadač ugrađuje skriveni `<img src="https://internal.company/…">` na svoju stranicu.
 | 
			
		||||
4. Pošto se parametri veze poklapaju, pregledač ponovo koristi **postojeću** TLS vezu i multiplikuje zahtev za `internal.company`.
 | 
			
		||||
5. Ako CDN/ruter samo validira prvi zahtev, unutrašnji host je izložen.
 | 
			
		||||
 | 
			
		||||
PoCs za Chrome/Edge/Firefox su dostupni u govoru Jamesa Kettle-a *“HTTP/2: The Sequel is Always Worse”* (Black Hat USA 2023).
 | 
			
		||||
 | 
			
		||||
### Alati
 | 
			
		||||
* **Burp Suite 2023.12** je uveo eksperimentalnu tačku umetanja **HTTP/2 Smuggler** koja automatski pokušava koalesiranje i TE/CL tehnike.
 | 
			
		||||
* **smuggleFuzz** (https://github.com/microsoft/smugglefuzz) – Python okvir objavljen 2024. godine za brute-force front-end/back-end desync vektore preko HTTP/2 i HTTP/3, uključujući permutacije stanja veze.
 | 
			
		||||
 | 
			
		||||
### Mogućnosti ublažavanja
 | 
			
		||||
* Uvek **ponovno validirajte Host/:authority na svakom zahtevu**, ne samo prilikom kreiranja veze.
 | 
			
		||||
* Onemogućite ili strogo ograničite **koalesiranje porekla** na CDN/load-balancer slojevima (npr. `http2_origin_cn` isključen u NGINX).
 | 
			
		||||
* Implementirajte odvojene sertifikate ili IP adrese za unutrašnje i spoljašnje hostname-ove kako bi pregledač legalno mogao da ih koalesira.
 | 
			
		||||
* Preferirajte **connection: close** ili `proxy_next_upstream` nakon svakog zahteva gde je to praktično.
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Slučajevi iz stvarnog sveta (2022-2025)
 | 
			
		||||
 | 
			
		||||
| Godina | Komponenta | CVE | Napomene |
 | 
			
		||||
|--------|------------|-----|----------|
 | 
			
		||||
| 2022   | AWS Application Load Balancer | – | Host header je samo validiran na prvom zahtevu; ispravljeno zakrpanjem pravila (otkriveno od strane SecurityLabs). |
 | 
			
		||||
| 2023   | Apache Traffic Server < 9.2.2 | CVE-2023-39852 | Dozvolio je request smuggling putem ponovne upotrebe HTTP/2 veze kada je `CONFIG proxy.config.http.parent_proxy_routing_enable` bio postavljen. |
 | 
			
		||||
| 2024   | Envoy Proxy < 1.29.0 | CVE-2024-2470 | Nepravilna validacija :authority nakon prvog stream-a omogućila je cross-tenant request smuggling u deljenim mrežama. |
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Cheat-Sheet za detekciju
 | 
			
		||||
 | 
			
		||||
1. Pošaljite dva zahteva u **isto** TCP/TLS povezivanje sa različitim Host ili :authority header-ima.
 | 
			
		||||
2. Posmatrajte da li drugi odgovor potiče od prvog hosta (sigurno) ili drugog hosta (ranjivo).
 | 
			
		||||
3. U Burp-u: `Repeat → keep-alive → Send → Follow`.
 | 
			
		||||
4. Kada testirate HTTP/2, otvorite **posvećen** stream (ID 1) za benigni host, zatim multiplikujte drugi stream (ID 3) na unutrašnji host i tražite odgovor.
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Reference
 | 
			
		||||
 | 
			
		||||
* PortSwigger Research – *HTTP/2: The Sequel is Always Worse* (Black Hat USA 2023)
 | 
			
		||||
* Envoy Security Advisory CVE-2024-2470 – Nepravilna validacija autoriteta
 | 
			
		||||
 | 
			
		||||
{{#include ../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user