OzzTech - HTTP İstek Kaçakçılığı

HTTP İstek Kaçakçılığı

HTTP İstek Kaçakçılığı

HTTP istek kaçakçılığı, bir web sitesinin bir veya daha fazla kullanıcıdan alınan HTTP istek dizilerini işleme biçimine müdahale etme tekniğidir. Kaçakçılık güvenlik açıklarını talep etmek, genellikle doğası gereği kritiktir ve bir saldırganın güvenlik denetimlerini atlamasına, hassas verilere yetkisiz erişim elde etmesine ve diğer uygulama kullanıcılarını doğrudan tehlikeye atmasına olanak tanır.

HTTP istek kaçakçılığı
  • Not
  • HTTP istek kaçakçılığı ilk olarak 2005'te belgelendi ve yakın zamanda PortSwigger'ın konuyla ilgili araştırması tarafından yeniden popüler hale getirildi.


HTTP istek kaçakçılığı saldırısında ne olur?

Günümüzün web uygulamaları, kullanıcılar ve nihai uygulama mantığı arasında sıklıkla HTTP sunucu zincirleri kullanır. Kullanıcılar istekleri bir ön uç sunucuya (bazen yük dengeleyici veya ters proxy olarak adlandırılır) gönderir ve bu sunucu istekleri bir veya daha fazla arka uç sunucuya iletir. Bu tür mimari, modern bulut tabanlı uygulamalarda giderek daha yaygın ve bazı durumlarda kaçınılmazdır.

Ön uç sunucu, HTTP isteklerini bir arka uç sunucuya ilettiğinde, genellikle aynı arka uç ağ bağlantısı üzerinden birkaç istek gönderir, çünkü bu çok daha verimli ve performanslıdır. Protokol çok basittir: HTTP istekleri birbiri ardına gönderilir ve alıcı sunucu, bir isteğin nerede bitip diğerinin nerede başladığını belirlemek için HTTP istek başlıklarını ayrıştırır:

HTTP istek kaçakçılığı

Bu durumda, ön uç ve arka uç sistemlerin istekler arasındaki sınırlar konusunda anlaşmaları çok önemlidir. Aksi takdirde, bir saldırgan, ön uç ve arka uç sistemler tarafından farklı yorumlanan belirsiz bir istek gönderebilir:

HTTP istek kaçakçılığı


Burada saldırgan, ön uç isteğinin bir kısmının arka uç sunucusu tarafından bir sonraki isteğin başlangıcı olarak yorumlanmasına neden olur. Bir sonraki talebe etkin bir şekilde eklenir ve bu nedenle, talep eden başvuru süreçlerinin işleyişine müdahale edebilir. Bu bir istek kaçakçılığı saldırısıdır ve yıkıcı sonuçları olabilir.

HTTP istek kaçakçılığı güvenlik açıkları nasıl ortaya çıkıyor?

HTTP istek kaçakçılığı güvenlik açıklarının çoğu, HTTP belirtiminin bir isteğin nerede bittiğini belirtmek için iki farklı yol sağlaması nedeniyle ortaya çıkar:

Content-Lenght başlığı ve Transfer-Encoding başlığı.

Content-Length başlığı basittir: mesaj gövdesinin uzunluğunu bayt olarak belirtir. Örneğin:

HTTP istek kaçakçılığı


Transfer-Encoding başlığı, mesaj gövdesinin yığınlanmış kodlamayı kullandığını belirtmek için kullanılabilir. Bu, ileti gövdesinin bir veya daha fazla veri parçası içerdiği anlamına gelir. Her yığın, bayt cinsinden yığın boyutundan (onaltılık olarak ifade edilir), ardından yeni bir satırdan ve ardından yığın içeriğinden oluşur. İleti, sıfır boyutunda bir yığınla sonlandırılır. Örneğin:

HTTP istek kaçakçılığı
  • Not
  • Birçok güvenlik testçisi, iki nedenden dolayı HTTP isteklerinde yığınlanmış kodlamanın kullanılabileceğinin farkında değildir:
    • Burp Suite, mesajların görüntülenmesini ve düzenlenmesini kolaylaştırmak için kümelenmiş kodlamayı otomatik olarak açar.
    • Tarayıcılar normalde isteklerde yığınlanmış kodlamayı kullanmaz ve normalde yalnızca sunucu yanıtlarında görülür.


HTTP belirtimi, HTTP mesajlarının uzunluğunu belirtmek için iki farklı yöntem sağladığından, tek bir mesajın her iki yöntemi aynı anda kullanması mümkündür, öyle ki bunlar birbiriyle çelişir. HTTP belirtimi, hem Content-Length hem de Transfer-Encoding üstbilgileri varsa, Content-Length üstbilgisinin yoksayılması gerektiğini belirterek bu sorunu önlemeye çalışır. Bu, yalnızca tek bir sunucu oyundayken belirsizliği önlemek için yeterli olabilir, ancak iki veya daha fazla sunucu birbirine zincirlendiğinde değil. Bu durumda, iki nedenden dolayı sorunlar ortaya çıkabilir:

  • Bazı sunucular, isteklerde Transfer-Encoding başlığını desteklemez.
  • Aktarım-Kodlama başlığını destekleyen bazı sunucular, başlık bir şekilde gizlenmişse, onu işlememeye yönlendirilebilir.

Ön uç ve arka uç sunucular (muhtemelen karışık) Transfer-Encoding başlığına göre farklı davranırlarsa, ardışık istekler arasındaki sınırlar konusunda anlaşamayabilirler ve bu da istek kaçakçılığı açıklarına yol açabilir.

HTTP istek kaçakçılığı saldırısı nasıl yapılır

İstek kaçakçılığı saldırıları, hem Content-Length üstbilgisini hem de Transfer-Encoding üstbilgisini tek bir HTTP isteğine yerleştirmeyi ve bunları, ön uç ve arka uç sunucularının isteği farklı şekilde işlemesi için değiştirmeyi içerir. Bunun tam olarak nasıl yapılacağı, iki sunucunun davranışına bağlıdır:

CL.TE: ön uç sunucu Content-Length başlığını kullanır ve arka uç sunucu Transfer-Encoding başlığını kullanır.
TE.CL: ön uç sunucu Transfer-Encoding başlığını kullanır ve arka uç sunucu Content-Length başlığını kullanır.
TE.TE: ön uç ve arka uç sunucuların her ikisi de Transfer-Encoding başlığını destekler, ancak sunuculardan biri başlığı bir şekilde karartarak onu işlememeye teşvik edilebilir.nt-Length başlığı göz ardı edilmelidir. Bu, yalnızca tek bir sunucu oyundayken belirsizliği önlemek için yeterli olabilir, ancak iki veya daha fazla sunucu birbirine zincirlendiğinde değil. Bu durumda, iki nedenden dolayı sorunlar ortaya çıkabilir:


CL.TE güvenlik açıkları

Burada ön uç sunucu Content-Length başlığını ve arka uç sunucu Transfer-Encoding başlığını kullanır. Basit bir HTTP request kaçakçılığı saldırısı gerçekleştirebiliriz:

HTTP istek kaçakçılığı


KAÇAKÇI- SMUGGLED

Ön uç sunucu Content-Length başlığını işler ve istek gövdesinin SMUGGLED'in sonuna kadar 13 bayt uzunluğunda olduğunu belirler. Bu istek, arka uç sunucusuna iletilir.

Arka uç sunucusu, Transfer-Encoding başlığını işler ve bu nedenle ileti gövdesine yığınlanmış kodlama kullanıyormuş gibi davranır. Sıfır uzunlukta olduğu belirtilen ilk yığını işler ve bu nedenle isteği sonlandırıyor olarak kabul edilir. Aşağıdaki baytlar, SMUGGLED, işlenmeden bırakılır ve arka uç sunucusu, bunları sıradaki bir sonraki isteğin başlangıcı olarak değerlendirir.

TE.CL güvenlik açıkları

Burada, ön uç sunucu Transfer-Encoding başlığını ve arka uç sunucusu Content-Length başlığını kullanır. Basit bir HTTP request kaçakçılığı saldırısı gerçekleştirebiliriz:

HTTP istek kaçakçılığı
  • Not
    Bu isteği Burp Tekrarlayıcı kullanarak göndermek için öncelikle Tekrarlayıcı menüsüne gitmeniz ve "İçerik Uzunluğunu Güncelle" seçeneğinin işaretli olmadığından emin olmanız gerekir.
  • Son 0'dan sonra gelen \r\n\r\n dizisini eklemeniz gerekir.

Ön uç sunucu, Transfer-Encoding başlığını işler ve bu nedenle ileti gövdesine yığınlanmış kodlama kullanıyormuş gibi davranır. 8 bayt uzunluğunda olduğu belirtilen ilk parçayı SMUGGLED'den sonraki satırın başına kadar işler. Sıfır uzunlukta olduğu belirtilen ikinci yığını işler ve bu nedenle isteği sonlandırıyor olarak kabul edilir. Bu istek, arka uç sunucusuna iletilir.

Arka uç sunucusu Content-Length başlığını işler ve istek gövdesinin 8'den sonraki satırın başına kadar 3 bayt uzunluğunda olduğunu belirler. SMUGGLED ile başlayan aşağıdaki baytlar işlenmeden bırakılır ve arka uç sunucusu bunları sıradaki bir sonraki isteğin başlangıcı olarak değerlendirir.


TE.TE davranışı: TE başlığını gizleme

Burada, ön uç ve arka uç sunucuların her ikisi de Transfer-Encoding başlığını destekler, ancak sunuculardan biri, başlığı bir şekilde gizleyerek onu işlememeye teşvik edilebilir.

Transfer-Encoding başlığını karartmanın potansiyel olarak sonsuz yolları vardır. Örneğin:

HTTP istek kaçakçılığı

Bu tekniklerin her biri, HTTP spesifikasyonundan ince bir şekilde ayrılmayı içerir. Bir protokol belirtimini uygulayan gerçek dünya kodu, nadiren ona mutlak bir kesinlikle yapışır ve farklı uygulamaların belirtimdeki farklı varyasyonları tolere etmesi yaygındır. Bir TE.TE güvenlik açığını ortaya çıkarmak için, Transfer-Encoding üstbilgisinin, ön uç veya arka uç sunucularından yalnızca birinin onu işlemesi, diğer sunucunun ise yok sayması gibi bazı varyasyonlarını bulmak gerekir.

Gizlenmiş Transfer-Encoding üstbilgisini işlememesi için ön uç mu yoksa arka uç sunucu mu olduğuna bağlı olarak, saldırının geri kalanı CL.TE veya TE.CL güvenlik açıklarıyla aynı biçimi alacaktır. zaten açıklanmıştır.

HTTP istek kaçakçılığı güvenlik açıkları nasıl önlenir

HTTP istek kaçakçılığı güvenlik açıkları, bir ön uç sunucunun aynı ağ bağlantısı üzerinden bir arka uç sunucuya birden çok isteği ilettiği durumlarda ortaya çıkar ve arka uç bağlantılar için kullanılan protokol, iki sunucunun arasındaki sınırlar konusunda anlaşmazlığa düşme riskini taşır. istekler. Ortaya çıkan HTTP istek kaçakçılığı güvenlik açıklarını önlemenin bazı genel yolları şunlardır:

  • Her arka uç isteğinin ayrı bir ağ bağlantısı üzerinden gönderilmesi için arka uç bağlantılarının yeniden kullanımını devre dışı bırakın.
  • Bu protokol, istekler arasındaki sınırlar hakkında belirsizliği önlediğinden, arka uç bağlantıları için HTTP/2 kullanın.
  • İstekler arasındaki sınırlar konusunda anlaşmaları için ön uç ve arka uç sunucular için tamamen aynı web sunucusu yazılımını kullanın.

Bazı durumlarda, ön uç sunucunun belirsiz istekleri normalleştirmesini sağlayarak veya arka uç sunucunun belirsiz istekleri reddetmesini ve ağ bağlantısını kapatmasını sağlayarak güvenlik açıklarından ku. Bununla birlikte, bu yaklaşımlar potansiyel olarak yukarıda tanımlanan genel azaltmalardan daha fazla hataya açıktır.


İlginizi Çekebilecek Makaleler
FortiGate ACME Sertifika Desteği
Siber Güvenlik

FortiGate ACME Sertifika Desteği

Ocak 24, 2022 1:22

Otomatik Sertifika Yönetim Ortamı (ACME), RFC 8555’te tanımlandığı üzere, ücretsiz SSL sunucu sertifikaları sağlamak için genel Let’s...

Android Reverse Mühendisliği Araçları Örnek Vakalar
Siber Güvenlik

Android Reverse Mühendisliği Araçları Örnek Vakalar

Ocak 24, 2022 12:39

Bir önceki yazıda yeni çıkan android reverse mühendisliği araçları hakkında bilgi vermiştim. Bu yazımda...

Emotet Artık Alışılmadık IP Adreslerini Kullanıyor
Siber Güvenlik

Emotet Artık Alışılmadık IP Adreslerini Kullanıyor

Ocak 24, 2022 9:44

Emotet kötü amaçlı yazılım botnetinin dağıtımını içeren sosyal mühendislik kampanyaları, güvenlik çözümlerinin tespitinden kaçınmak...

FortiWeb Kurulumu 5-Operation Modu
Siber Güvenlik

FortiWeb Kurulumu 5-Operation Modu

Ocak 24, 2022 7:49

FortiWeb kurulumunu anlattığımız beşinci yazımızda operation modu ve FortiWeb cihazı açıldıktan sonra, FortiWeb cihazını...

FortiWeb Kurulumu 4- Admin Şifresi Değiştirme
Siber Güvenlik

FortiWeb Kurulumu 4- Admin Şifresi Değiştirme

Ocak 23, 2022 10:21

FortiWeb kurulumunu anlattığımız serinin dördüncü yazısında Admin şifresi nasıl değiştirceğinizi, saat ve günü nasıl...

Metasploittable 2
Siber Güvenlik

Metasploittable 2

Ocak 22, 2022 11:57

Metasploittable 2 Nedir? Neden Kullanılır? Nasıl Kurulur? Metasploittable 2 Metasploit firması tarafından bizlerin güvenli...

FortiWeb Kurulumu 3- Firmware Güncellenmesi
Siber Güvenlik

FortiWeb Kurulumu 3- Firmware Güncellenmesi

Ocak 22, 2022 11:56

FortiWeb kurulumunu anlattığımız serinin üçüncü yazısında Firmware güncellemesini anlatacağız. FortiWeb cihazınız gönderildiğinde en son...

FortiWeb Kurulumu 2- Web UI ve CLI Bağlama
Siber Güvenlik

FortiWeb Kurulumu 2- Web UI ve CLI Bağlama

Ocak 21, 2022 7:50

FortiWeb kurulumu yazımızın ikinci serisinde Web UI veya CLI bağlamanın nasıl yapılacağını anlatacağız. Eğer...

Yapay Zeka Nedir?
Yazılım Geliştirme

Yapay Zeka Nedir?

Ocak 20, 2022 10:57

Sürekli olarak değişen, gelişen ve oldukça hızlı bir şekilde boyut atlayan, günümüze kadar gelen...

İletişim
OZZTECH Bilgi Teknolojileri olarak siber güvenlik danışmanlığı ve bilgi güvenliği eğitimleri alanlarında 10 yılı aşkın bir süredir ülkemizin önde gelen kurumlarına hizmet vermeye devam etmektedir. Detaylı bilgi ve danışmanlık hizmetlerimiz için aşağıdaki formu kullanarak veya [email protected] adresimiz üzerinden bizlerle iletişime geçebilirsiniz.