HTTP Bağlantı İsteği Kaçırma
Reading time: 5 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Bu sayfa, Tarayıcı Güçlü Desync Saldırıları üzerine PortSwigger'ın öncü araştırmasını özetler, genişletir ve günceller ve HTTP/2 bağlantı durumu istismarına dair sonraki çalışmaları içerir. Bu, bir kökenin yalnızca bir TCP/TLS bağlantısı başına bir kez belirlendiği zayıflıklara odaklanır ve bir saldırganın kanalı kurduktan sonra istekleri farklı bir dahili ana bilgisayara “kaçırmasına” olanak tanır.
Bağlantı Durumu Saldırıları
İlk İstek Doğrulaması
İstekleri yönlendirirken, ters proxy'ler genellikle hedef arka uç sunucusunu belirlemek için Host (veya HTTP/2'de :authority) başlığına dayanabilir ve genellikle erişime izin verilen ana bilgisayarların bir beyaz listesine güvenebilir. Ancak, bazı proxy'lerde beyaz listenin bağlantıdaki ilk istekte yalnızca bir kez uygulandığı bir zayıflık bulunmaktadır. Sonuç olarak, saldırganlar önce izin verilen bir isteği göndererek ve ardından aynı temel bağlantıyı yeniden kullanarak dahili sanal ana bilgisayarlara erişebilirler:
GET / HTTP/1.1
Host: allowed-external-host.example
GET /admin HTTP/1.1
Host: internal-only.example
İlk İstek Yönlendirmesi
Birçok HTTP/1.1 ters proxy, bir çıkış bağlantısını arka uç havuzuna yalnızca ilettikleri ilk isteğe dayanarak eşler. Aynı ön uç soketi üzerinden gönderilen tüm sonraki istekler, Host başlıklarına bakılmaksızın sessizce yeniden kullanılır. Bu, şifre sıfırlama zehirlenmesi veya web önbellek zehirlenmesi gibi klasik Host başlık saldırıları ile birleştirilerek diğer sanal hostlara SSRF benzeri erişim elde etmek için kullanılabilir:
GET / HTTP/1.1
Host: public.example
POST /pwreset HTTP/1.1
Host: private.internal
tip
Burp Suite Professional ≥2022.10'da HTTP Request Smuggler → Connection-state probe'u etkinleştirerek bu zayıflıkları otomatik olarak tespit edebilirsiniz.
2023-2025'te YENİ – HTTP/2/3 Bağlantı Birleştirme İstismarı
Modern tarayıcılar, sertifika, ALPN protokolü ve IP adresi eşleştiğinde HTTP/2 ve HTTP/3 isteklerini tek bir TLS bağlantısında birleştirir. Eğer bir ön uç yalnızca ilk isteği yetkilendiriyorsa, sonraki her birleştirilmiş istek o yetkilendirmeyi miras alır – Host/:authority değişse bile.
İstismar senaryosu
- Saldırgan, hedef
internal.company
ile aynı CDN kenar düğümüne çözümleyenevil.com
'u kontrol eder. - Kurbanın tarayıcısı zaten
evil.com
'a açık bir HTTP/2 bağlantısına sahiptir. - Saldırgan, sayfasına gizli bir
<img src="https://internal.company/…">
yerleştirir. - Bağlantı parametreleri eşleştiği için, tarayıcı mevcut TLS bağlantısını yeniden kullanır ve
internal.company
için isteği çoklu yollarla gönderir. - Eğer CDN/yönlendirici yalnızca ilk isteği doğruladıysa, iç host açığa çıkar.
Chrome/Edge/Firefox için PoC'ler James Kettle'ın “HTTP/2: The Sequel is Always Worse” (Black Hat USA 2023) konuşmasında mevcuttur.
Araçlar
- Burp Suite 2023.12, otomatik olarak birleştirme ve TE/CL tekniklerini denemek için deneysel bir HTTP/2 Smuggler ekleme noktası tanıttı.
- smuggleFuzz (https://github.com/microsoft/smugglefuzz) – 2024'te HTTP/2 ve HTTP/3 üzerinden ön uç/arka uç desenkronizasyon vektörlerini zorlamak için yayımlanan bir Python çerçevesi.
Önlemler
- Her istekte Host/:authority'yi yeniden doğrulayın, yalnızca bağlantı oluşturma sırasında değil.
- CDN/yük dengeleyici katmanlarında kaynak birleştirmeyi devre dışı bırakın veya sıkı bir şekilde sınırlayın (örneğin, NGINX'de
http2_origin_cn
kapalı). - Tarayıcının yasal olarak birleştirememesi için iç ve dış ana bilgisayar adları için ayrı sertifikalar veya IP adresleri dağıtın.
- Pratikte her isteğin ardından connection: close veya
proxy_next_upstream
tercih edin.
Gerçek Dünya Vakaları (2022-2025)
Yıl | Bileşen | CVE | Notlar |
---|---|---|---|
2022 | AWS Uygulama Yük Dengeleyici | – | Host başlığı yalnızca ilk istekte doğrulandı; kurallar motorunu yamanarak düzeltildi (SecurityLabs tarafından açıklandı). |
2023 | Apache Traffic Server < 9.2.2 | CVE-2023-39852 | CONFIG proxy.config.http.parent_proxy_routing_enable ayarlandığında HTTP/2 bağlantı yeniden kullanımı yoluyla istek sızdırmasına izin verdi. |
2024 | Envoy Proxy < 1.29.0 | CVE-2024-2470 | İlk akıştan sonra :authority'nin yanlış doğrulanması, paylaşılan ağlarda kiralık istek sızdırmasına neden oldu. |
Tespit Kılavuzu
- Farklı Host veya :authority başlıkları ile aynı TCP/TLS bağlantısında iki istek gönderin.
- İkinci yanıtın ilk hosttan (güvenli) mı yoksa ikinci hosttan (açık) mı geldiğini gözlemleyin.
- Burp'ta:
Repeat → keep-alive → Send → Follow
. - HTTP/2'yi test ederken, masum bir host için özel bir akış (ID 1) açın, ardından bir iç hosta ikinci bir akış (ID 3) çoklu yollarla gönderin ve bir yanıt arayın.
Referanslar
- PortSwigger Araştırma – HTTP/2: The Sequel is Always Worse (Black Hat USA 2023)
- Envoy Güvenlik Danışmanlığı CVE-2024-2470 – Yanlış yetki doğrulama
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.