Açık Metin Üzerinden HTTP2 Kaçakçılığı Nedir?

Açık Metin Üzerinden HTTP2 Kaçakçılığı Nedir?

Bugün yazımızda sizlere HTTP istek kaçakçılığının yeni ve çok daha farklı olan biçimi olan H2C Kaçakçılığını anlatacağız. Normal bir HTTP bağlantısı, genelde tek bir istek boyunca devam eder. H2C veya “açık metin üzerinden http2” normal bir geçici http bağlantısının, sürekli iletişim kurmak için http2 ikili protokolünü kullanan kalıcı bağlantıya yükseltildiği yerdir. H2C Smuggler, h2c uyumlu back end sunucularla HTTP/2 açık metin iletişimi kurar ardından, proxy kurallarının ve erişim kontrollerinin atlanmasına izin verir. Böylece güvenli olmayan edge-server proxy_pass konfigürasyonunu yaparak HTTP trafiğini kaçırmış olur.

HTTP/2 açık metin (H2C) kaçakçılığı aslında, back end sistemlere bir tünel oluşturmak için H2C’nin haberi olmadan front end kötüye kullanılarak saldırganların front-end rewrite kurallarını atlamasına ve dahili HTTP başlıklarından yararlanmasına olanak tanıyor. Yani kısaca HTTP/1.1 Upgrade başlığıyla başlatılan HTTP/2 için local protokol kısa yoludur. Bu HTTP2 kaçakçılığı saldırısı, bir bilgisayar korsanının bir aracı sunucuya (proxy sunucuya) istek göndermek için h2c’yi kullanması ve bu sunucunun sunucu erişim kontrollerinden kaçabilmesidir. Hackerlar HTTP2 kaçakçılığını dahili başlıklar oluşturmak ve dahili network endpointlerine erişmek için kullanır.

Güvenlik açığı, potansiyel olarak çok geniş bir etki kapsamındadır. Bunun nedeni ise /api/ veya /ödemeler/ gibi proxyli endpointler de dahil “herhangi bir” proxy etkilenebilir ve bunlar diğer proxy endpointlerden farklı olarak da etkilenebilir.

Açık Metin Üzerinden HTTP2 Kaçakçılığı Nedir?

Kullandığınız uygulama HTTP isteklerini temizlemek için proxy kullanıyorsa, h2c kaçakçılığı saldırılarına uğrayabilirsiniz. Bu yüzden, rastgele upgrade üstbilgileri iletilmemelidir. Kuruluşlar hassas olan endpoint erişimi engellemek için ve dahili başlıkların kullanımını kısıtlamak için proxy’lere güvenirse güvenlik açığı çıkar ve bu kontrollerin atlanmasına olanak tanır.

HTTP’nin işlenme biçimindeki tutarsızlıkları kullanan benzer HTTP istek kaçakçılığı ve sahtekarlıkları, dahili yönetim panolarına erişmek, IP adresi sahtekarlığı yapmak, müşteri ya da sistem kullanıcısıymış gibi kimliklere bürünmek ve fazla kazanç sağlayabilmek için başlık tabanlı yönlendirme sistemlerinden faydalanmak için kullanılır. Bu saldırıya uğrayan bir kuruluşun hackerın dahili ağa erişim sağladığında nasıl bir hasar bıraktığını bulmak zordur. HTTP2 kaçakçılığında kullanılan teknik yalnızca back end sunucularına doğrudan erişim sağlar.

Ancak bir H2C tüneli kurmak her zaman bir güvenlik açığı yaratmaz. Doğrudan H2C uyumlu bir back end proxy yapan TLS sonlandıran TCP yük dengeleyici düşünün. Bir HTTP2 bağlantısı kurduğunuz halde erişim kontrollerinde zorluk çıkmıyorsa atlanacak erişim kontrolleri veya bu tüneli başlatarak kazanılan ayrıcalıklar da yoktur.

HTTP2 Nasıl test edilir?

H2C upgrade başlıklarını ileten herhangi bir proxy endpointi etkilenebilir. H2C’nin sadece açık metin kanallarında gerçekleştirilmesi amaçlandığından dolayı, HTTPS hizmetlerinde algılama genellikle gerçek pozitif sonuçlar verir. Buna rağmen HTTP hizmetleri yanlış pozitiflere de neden olabilir. Örneğin, H2C etkin proxy’ler, upgrade’i bir H2C back ende iletmeyip yanıt verebilir.

Etkilenen proxy_pass endpointlerini aramak için bir veya daha fazla web sunucusunu test etmek için ise --scan-list özelliğini kullanın. Dizin numaralandırmasından keşfedilen dizinlerin bir listesini kullanmayı düşünün, örneğin:

urls.txt

https://www.example.com/
https://www.example.com/api/
https://www.example.com/auth/
https://www.example.com/admin/
https://www.example.com/payments/
...omitted for brevity...

H2C Smuggler’ı endpointlerin listesi ve toplam iş parçacığı sayısıyla çalıştırın:

./h2csmuggler.py --scan-list urls.txt --threads 5

Veya aşağıdakilerle bireysel bir test yapılabilir:

./h2csmuggler.py -x https://www.example.com/api/ --test

Tünel oluşturma için kullanılabilecek etkilenen bir endpoint seçtikten sonra, artık back end sunucusundaki dahili back endlere erişebilir veya brute force uygulayabilir ve özel fiiller veya başlıklar sağlayabilirsiniz.

H2C Kaçakçılığı Nasıl Önlenir?

H2C kaçakçılığını durdurmak için iki yöntem bulunmaktadır.

  1. HTTP/1.1 upgrade başlıkları için WebSocket desteğini kullanmalısınız.
  2. WebSocket desteğini tamamen devre dışı bırakın ve Upgrade başlıklarını iletmeyi devre dışı bırakın.

İlginizi Çekebilecek Makaleler​

Kod Kalitesi nedir ve nasıl ölçülür?

Bilgisayar programcıları, kod setinin, programın veya yazılımın kalitesinin ne kadar yüksek olduğunu belirlemek için kod kalitesini kullanır. Bir ürünün tutarlı olup olmadığını, doğru çalışıp çalışmadığını

Devamı »
Kuantum Bilgisayar Nedir?

 Kuantum bilgisayarlar ile günümüzde kullanılan klasik aritmatiksel bilgisayarlar arasındaki temel fark, veriyi ele alma yöntemleridir.Hesap Makinalarından ve AllInOne bilgisayarlar ve Garry Kasparov’u yendiği kabul

Devamı »
Ubuntu Server Nedir ve Nasıl Kurulur?

Ubuntu Server Nedir? Ubuntu Sunucusu,  Canonical ve açık kaynaklı programcılar tarafından geliştirilen ve LinuxONE aracılığıyla x86, x86-64, ARM64, ARM v7 gibi tüm önemli mimarilerinde çalışabilen

Devamı »