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

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:

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

http
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

  1. Saldırgan, hedef internal.company ile aynı CDN kenar düğümüne çözümleyen evil.com'u kontrol eder.
  2. Kurbanın tarayıcısı zaten evil.com'a açık bir HTTP/2 bağlantısına sahiptir.
  3. Saldırgan, sayfasına gizli bir <img src="https://internal.company/…"> yerleştirir.
  4. 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.
  5. 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ılBileşenCVENotlar
2022AWS Uygulama Yük DengeleyiciHost başlığı yalnızca ilk istekte doğrulandı; kurallar motorunu yamanarak düzeltildi (SecurityLabs tarafından açıklandı).
2023Apache Traffic Server < 9.2.2CVE-2023-39852CONFIG proxy.config.http.parent_proxy_routing_enable ayarlandığında HTTP/2 bağlantı yeniden kullanımı yoluyla istek sızdırmasına izin verdi.
2024Envoy Proxy < 1.29.0CVE-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

  1. Farklı Host veya :authority başlıkları ile aynı TCP/TLS bağlantısında iki istek gönderin.
  2. İkinci yanıtın ilk hosttan (güvenli) mı yoksa ikinci hosttan (açık) mı geldiğini gözlemleyin.
  3. Burp'ta: Repeat → keep-alive → Send → Follow.
  4. 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