HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?

Yayınlayan
Hasan GÜNGÖR
Yayınlanma tarihi
26-02-2022
Okuma süresi
10 DK

HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?

 

İstek kaçakçılığı , bir web sitesinin bir kaynaktan veya kaynaklardan alınan HTTP isteklerinin sırasına , işlemlerine müdahale etme tekniğidir. Ele alınan İstek kaçakçılığı zafiyeti sayesinde saldırganlar “WAF” gibi firewall hizmetlerini kolayca aşabilir , barındırılan verilere erişim sağlayabilir.

HTTP İstek Kaçakçılığı Nasıl Çalışır?

Karşı uygulamaya gönderilen “POST” data içerisine ikinci bir HTTP isteği eklenir. İstek “POST” data içerisinde bulunduğu için WAF ile benzer yapıda olan firewall’ların gözünde saldırı olarak algılanmaz ve ardından karşı uygulamaya gönderilir. Karşı web uygulaması bu gelen isteği ayrıştırdıktan sonra 2 farklı istekmiş gibi algılayıp işler.

İstek Kaçakçılığı saldırısında iyi bir sonuç elde etmek amacıyla “Transfer-Encoding” ve “Content-Length” HTTP başlıkları kullanılır;

  • “Content-Length” tarafında “POST” datasının boyutu belirtilir.
  • “Transfer-Encoding” tarafında chunked belirtilerek gönderilen isteğin parçalı olduğu bilgisi verilir.
Saldırı Türleri
  • CL-TE : “Content-Length” başlığını ve “Transfer-Encoding” başlığını destekler. Front-end sunucu “Content-Length” başlığını işler ve boyut belirler. Belirlenen boyut back-end sunucuya iletilir. Back-end sunucu “Transfer-Encoding” başlığını işleyerek chunked belirtir , parçayı işler ve isteği sonlandırır.
  • TE-CL : “Transfer-Encoding” başlığı üzerinden ilerlenerek yapılan istekler sunucuya gönderilir. “Content-Length” den isteğin ikiye ayrılması ve işlenmesi beklenir.
  • TE-TE: Front-end ve back-end sunucuda “Transfer-Encoding” başlığını destekler fakat sunuculardan biri başlığı gizleyerek işlenmemesine neden olabilir. “TE-TE” bir zafiyeti ortaya çıkarmak için “Transfer-Encoding” başlığında front-end veya back-end sunucularından yalnızca birinde işlenir ve diğer sunucu tarafından yok sayılır.
Laboratuvar Ortamı ve İstismar Örnekleri

Laboratuvar ortamı olarak “PortSwigger” tercih edilmiştir. İstismar sürecinde PortSwigger’ın kendi hazırladığı lab’ları kullanacağız.

1) HTTP request smuggling, basic CL.TE vulnerability

Laboratuvar Açıklaması:

Bu laboratuvar front-end ve back-end sunucusu içerir ve front-end sunucusu yığın kodlamayı (chunked encoding) desteklemez. Front-end sunucusu, GET veya POST yöntemini kullanmayan istekleri reddeder.

Laboratuvarı çözmek için , back-end sunucuya bir istek kaçakcılığı yapın , böylece back-end sunucu tarafından işlenen bir sonraki istek “GPOST” yöntemini kullanıyor gibi görünecektir.

“Repeater” sekmesine geçtikten sonra , ilk olarak front-end sunucuda “Content-Length” başlığı için boyut belirliyoruz. Back-end sunucuda ise “Transfer-Encoding” başlığımızı chunked olarak belirtiyoruz ve isteği gönderiyoruz.

Yolladığımız istek back-end sunucuya iletildiği zaman belirlediğimiz “Transfer-Encoding” yapısını işler. 0 olarak okuduğu zaman sonuna gelindiğini ve arabellekteki “G” harfini bırakarak sonraki isteğin gelmesini beklediğini görecektir.

2) HTTP request smuggling, basic TE.CL vulnerability

Laboratuvar Açıklaması:

Bu laboratuvar bir front-end ve back-end sunucusu içerir ve back-end sunucu chunked encoding’i (yığın kodlama) desteklemez. Front-end server , “GET” ve “POST” yöntemini kullanmayan istekleri reddeder.

Laboratuvarı çözmek için , back-end sunucuya bir istek kaçakcılığı yapın , böylece back-end sunucu tarafından işlenen bir sonraki istek “GPOST” yöntemini kullanıyor gibi görünecektir.

Yapılan istek proxy sunucusuna yapılan tam bir istek olarak geçer ve ardından back-end sunucusuna iletilir. Back-end server “Content-Length” başlığını işler. “5c ” yazdığında isteğin sona erdiğini düşünür.

3) HTTP request smuggling, obfuscating the TE header

Yukarıda 2 ayrı “Transfer-Encoding” başlığı işledik. Bu durumda yalnızca biri faaliyet gösterecek ve diğeri sunucu tarafından yok sayılacak.

“Transfer-Encoding: chunked”

“Transfer-Encoding: gais”

Aynı zamanda, işlediğimiz “5c”  “GPOST / HTTP/1.1 Content-Type: application/x-www-form-urlencoded Content-Length: 27 x=1 0 ”  hex olarak uzunluğudur. Decimal olarak hesapladığımız zaman sonuç 92 çıkacaktır.

Burada hem CL-TE hem TE-CL saldırı türleri geçerlidir. ”Transfer-Encoding” başlığında back-end veya front-end sunucularından yalnızca biri işlenir ve diğeri sunucu tarafından yok sayılır. ”Transfer-Encoding” başlığını işlememeye neden olabilecek front-end veya back-end sunucusu olup olmadığına bağlı olarak , saldırının geri kalanı CL.TE veya TE.CL saldırı türleri tarafından işleve alınır.

HTTP İstek Kaçakçılığı Zafiyeti Nasıl Önlenir?
  • Her bir back-end isteğinin ayrı bir ağ bağlantısı üzerinden gönderilmesi için back-end isteklerinin yeniden kullanılmasını devre dışı bırakın.
  • Back-end bağlantıları için HTTP/2 protokolü kullanın. Bu protokol istekler arasındaki sınırlar hakkında belirsizliği önler.
  • Front-end ve back-end sunucular için aynı web sunucusu yazılımını kullanın, böylece sunucular istekler arasındaki sınırları biliyor olacaklardır.
Hasan GÜNGÖR

Diğer Blog Yazıları_

Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Infraskope Server ve Özellikleri
Infraskope Server ve Özellikleri
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kurumlarda Ağ Güvenlik Stratejileri
Kurumlarda Ağ Güvenlik Stratejileri
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
Log Yönetiminde Ajanlı/Ajansız Çözümler
Log Yönetiminde Ajanlı/Ajansız Çözümler
Herkesin aklındaki soru: Yapay Zeka Nedir?
Herkesin aklındaki soru: Yapay Zeka Nedir?
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Web Cache Poisoning
Web Cache Poisoning
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
ARP Poisoning
ARP Poisoning
Cross-Site Request Forgery (CSRF) Zafiyeti
Cross-Site Request Forgery (CSRF) Zafiyeti
SSRF (Server Side Request Forgery)
SSRF (Server Side Request Forgery)
BlueBorne
BlueBorne
Server Side Template Injection Nedir?
Server Side Template Injection Nedir?
Linux Restricted Shell Atlatma Teknikleri
Linux Restricted Shell Atlatma Teknikleri
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
SDR-Sharp Kullanımı
SDR-Sharp Kullanımı
Log Yönetimi | Log Management | Veritabanı Log | Siem
Log Yönetimi | Log Management | Veritabanı Log | Siem
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Phishing Nedir?
Phishing Nedir?
“GOLD” Affix Phishing Attack
“GOLD” Affix Phishing Attack
Sızma Testi ve Ödül Avcılığı Hizmetleri
Sızma Testi ve Ödül Avcılığı Hizmetleri
Güvenilir Olarak CAPTCHA Yapılandırılması
Güvenilir Olarak CAPTCHA Yapılandırılması
Basit Kriptolojiden Günümüze Evrilişi
Basit Kriptolojiden Günümüze Evrilişi
Dosya Sistem Analizinin Önemi
Dosya Sistem Analizinin Önemi
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Sızma (Penetrasyon) Testi Nedir?
Sızma (Penetrasyon) Testi Nedir?
Start Up Kültürü
Start Up Kültürü
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Kritik Altyapılar ve SCADA Güvenliği
Kritik Altyapılar ve SCADA Güvenliği
Zararlı Yazılım Analiz Teknikleri
Zararlı Yazılım Analiz Teknikleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
PHISHING Hakkında Her şey
PHISHING Hakkında Her şey
Sosyal Mühendislik Nedir?
Sosyal Mühendislik Nedir?
Siber Hijyen
Siber Hijyen
Adli Bilişim (Digital Forensic) Nedir?
Adli Bilişim (Digital Forensic) Nedir?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
SolarWinds Vaka Analizi
SolarWinds Vaka Analizi
Frida ile SSL Pinning Bypass
Frida ile SSL Pinning Bypass
COOKİE Nedir? Nasıl Çalışır?
COOKİE Nedir? Nasıl Çalışır?
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Adwind Rat Technical Analysis Report (ENG)
Adwind Rat Technical Analysis Report (ENG)
SOC Nedir, Firmalar İçin Neden Önemlidir?
SOC Nedir, Firmalar İçin Neden Önemlidir?
Blockchain Nedir?
Blockchain Nedir?
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
Active Directory Güvenlik İpuçları
Active Directory Güvenlik İpuçları
Nisan 2022 Siber Güvenlik Bülteni
Nisan 2022 Siber Güvenlik Bülteni
Mavi Takım Üyeleri İçin Windows Core Process
Mavi Takım Üyeleri İçin Windows Core Process
Kişiler İçin Bilgi Güvenliği Rehberi
Kişiler İçin Bilgi Güvenliği Rehberi
DDoS Nedir?
DDoS Nedir?
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
Microsoft Teams — Cross Site Scripting (XSS) Bypass CSP Report
Microsoft Teams — Cross Site Scripting (XSS) Bypass CSP Report
Siber İstihbarat ve Siber Tehdit İstihbaratı
Siber İstihbarat ve Siber Tehdit İstihbaratı
JWT Saldırıları
JWT Saldırıları
CVE-2022–36446 — Webmin 1.996 — Remote Code Execution (RCE — Authenticated) During Install New Packages
CVE-2022–36446 — Webmin 1.996 — Remote Code Execution (RCE — Authenticated) During Install New Packages