hacktricks/pentesting-web/h2c-smuggling.md

5.1 KiB
Raw Blame History

Yükseltme Başlığı Kaçırma

AWS hackleme konusunda sıfırdan kahramana kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Try Hard Güvenlik Grubu

{% embed url="https://discord.gg/tryhardsecurity" %}


H2C Kaçırma

ık Metin Üzerinden HTTP2 (H2C)

H2C veya ık metin üzerinden http2, geçici HTTP bağlantılarının normundan saparak standart bir HTTP bağlantısını sürekli bir bağlantıya yükseltir. Bu yükseltilmiş bağlantı, düz metin HTTP'nin tek istek doğasına karşı, sürekli iletişim için http2 ikili protokolünü kullanır.

Kaçırma sorununun özü, bir ters proxy'nin kullanımıyla ortaya çıkar. Normalde, ters proxy HTTP isteklerini işler ve arka uca ileterek ardından arka uç yanıtını döndürür. Ancak, bir HTTP isteğinde Connection: Upgrade başlığı bulunduğunda (genellikle websocket bağlantılarıyla görülür), ters proxy istemci ve sunucu arasında sürekli bir bağlantıyı sürdürür, belirli protokollerin gerektirdiği sürekli değişimi kolaylaştırır. H2C bağlantıları için, RFC'ye uyum, üç belirli başlığın varlığını gerektirir:

Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
Connection: Upgrade, HTTP2-Settings

Zafiyetli Proxy'ler

Zafiyet, bir bağlantıyı yükselttikten sonra ters vekilin bireysel istekleri yönetmeyi bırakması ve yönlendirmenin bağlantı kurulduktan sonra tamamlandığını varsayması durumunda ortaya çıkar. H2C Smuggling'in sömürülmesi, başarılı bir H2C bağlantısı başlatıldığında, istek işleme sırasında uygulanan ters vekil kurallarını atlamayı sağlar, örneğin yol tabanlı yönlendirme, kimlik doğrulama ve WAF işleme.

Zafiyetli Proxy'lerin Upgrade ve bazen Connection başlıklarını nasıl işlediğine bağlıdır. Aşağıdaki proxy'ler bu başlıkları varsayılan olarak iletir ve böylece H2C smuggling'i varsayılan olarak etkinleştirir:

  • HAProxy
  • Traefik
  • Nuster

Bununla birlikte, aşağıdaki hizmetler bu başlıkları varsayılan olarak iletmez. Ancak, Upgrade ve Connection başlıklarının filtresiz iletilmesine izin veren güvensiz bir şekilde yapılandırılmış olabilirler:

  • AWS ALB/CLB
  • NGINX
  • Apache
  • Squid
  • Varnish
  • Kong
  • Envoy
  • Apache Traffic Server

Sömürü

Uyumlu bir H2C bağlantı yükseltmesi için gereken başlıkları varsayılan olarak ileten tüm sunucuların olmadığını belirtmek önemlidir. Bu nedenle, AWS ALB/CLB, NGINX ve Apache Traffic Server gibi sunucular H2C bağlantılarını doğal olarak engeller. Bununla birlikte, bazı arka uçların standartlara uymayabileceği için, uyumsuz Connection: Upgrade varyantı ile test etmek faydalı olabilir.

{% hint style="danger" %} proxy_pass URL'sinde belirtilen belirli yol (örneğin, http://backend:9999/socket.io) bağlantının varsayılan olarak http://backend:9999 olmasına neden olur. Bu, bu tekniği kullanarak bu dahili uç noktadaki herhangi bir yola etkileşim sağlar. Dolayısıyla, proxy_pass URL'sinde bir yol belirtmek erişimi kısıtlamaz. {% endhint %}

BishopFox tarafından h2csmuggler ve assetnote tarafından h2csmuggler araçları, bir H2C bağlantısı kurarak proxy tarafından uygulanan korumaları atlamaya yönelik girişimleri kolaylaştırır ve bu sayede proxy tarafından korunan kaynaklara erişimi sağlar.

Bu zafiyetle ilgili daha fazla bilgi için özellikle NGINX hakkında bu detaylı kaynağa başvurun.