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

HTTP Request Smuggling (HTTP İstek Kaçakçılığı), bir web sitesine gelen isteklerin işlem sırasını değiştirme tekniğidir. Bu zafiyet sayesinde saldırganlar WAF gibi güvenlik mekanizmalarını atlatabilir, hassas verilere erişim sağlayabilir.

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

Nasıl Çalışır

Uygulamaya gönderilen POST data içerisine tekrardan ikinci bir HTTP isteği yazılır. Bu istek POST data içerisinde olduğu için WAF benzeri güvenlik ürünleri tarafından saldırı olarak algılanmaz ve uygulamaya gönderilir. Web uygulaması ise gelen bu isteği parse eder ardından 2 farklı istekmiş gibi algılar ve işler. Bu saldırıda başarılı bir sonuç elde etmek için Content-Lenght ve Transfer-Encoding HTTP Headerları kullanılır. Content-Lenght’de standart olarak POST datasının boyutu belirtilir. Transfer-Encoding‘de ise tür olarak chunked belirtilerek isteğin parçalı olduğu bilgisi verilir.

HTTP İstek Kaçakcılığı için Burp Suite Eklentisi

Zafiyeti hızlıca test etmek için Burp Suite aracı içerisindeki HTTP Request Smuggler eklentisi kullanılabilir.

HTTP İstek Kaçakçılığı(HTTP Request Smuggling) Nedir?
HTTP Request Smuggling PortSwigger Lab Pratikleri

Bu zafiyeti test etmek için PortSwigger’ın Laboratuvar ortamı kullanılabilir. Sistem üzerinde hesap açıldıktan sonra zafiyeti kontrol etmek için 2 farklı URL gelmektedir. Bu URL’lerden ilki bu zafiyetten etkilenmekte, ikinci adres ise bu zafiyeti istismar etmemizi sağlamaktadır.

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

Siteye erişim sağladıktan sonra BurpSuite içerisine kurduğumuz HTTP Request Smuggling eklentisi yardımı ile uygulamada otomatik olarak zafiyet taraması yapılarak zafiyet tespiti yapılabilir.

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

Eklenti tarafından tespit edilen zafiyeti sömürmek için ilgili zafiyete sağ tıklayıp Smuggle attack seçeneği seçilirse Turbo Intruder‘a geçilerek saldırıya başlanabilir.

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

Eklenti sayesinde site üzerinden herhangi bir dosyaya erişim isteği yapılabilir. Örneğimizde sistem üzerinde bulunmayan prisma.html adlı bir dosyaya istek yapılmıştır. Böylece doğrulama için saldırı başladığında prisma.html dosyasına istek yapılması ve sonrasında dosyanın bulunmadığına dair HTTP 404 cevabının geldiği görülmüştür.

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

Web Uygulamasının zafiyetten etkilenerek olmayan dosyaya karşı istek yaptığını ve dosyanın bulunmadığına dair cevap verdiği görülmektedir. Bu noktadan sonra uygulamayı istismar etmeye yönelik istekler yapılacaktır.

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

Saldırı için POST datası içerisinde Host: parametresine prismacsi.com adresi verilmiş ve bu isteğin çalışarak uygulamanın prismacsi.com sitesine yönlendiği görülmüştür.

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

PortSwigger tarafından test için bize sağlanan adresteki uygulamada Javascript kodu çalıştırmak istenmektedir. Bundan ötürü Content-Type: text/javascript; olarak belirtilmiş ve post adında bir dosya oluşturularak içerisine alert(‘PRISMA CSI’) yazdırılmıştır.

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

Request sekmesinde bulunan istek incelendiğinde öncelikle aşağıdaki istek web uygulamasına gidecektir.

POST / HTTP/1.1
Host: ac7a1f931f325f4280d700c1008f0098.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
Content-Length: 178
Transfer-Encoding: chunked

Ardından uygulama içerisinde HTTP POST datası gibi gidecek olan HTTP GET isteği çalıştırılacaktır.

GET /post/next?postId=3 HTTP/1.1
Host: ac4e1fac1fe15fd4803e00e201570072.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
Content-Length: 10

x=1

Yapılan istek sayesinde uygulama Host: parametresiyle belirtilen zararlı sayfaya yönlenecek ve zararlı içerik siteye erişen kullanıcının tarayıcısında çalışacaktır. Uygulamaya GET /post/next?postId=3 olarak istek yapan kullanıcı aşağıdaki resimdeki durum ile karşılaşmıştır.

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

Dikkat edilmesi gereken en önemli noktalardan biri de zafiyet sömürülmeye çalışılırken yapılan isteğin sonucunun hangi kullanıcıya gideceği net olarak bilinmemesidir. Örneğin bir dosya içeriği okumaya çalıştığınızda bu dosyanın içeriği siteyi o an kullanan birinin önüne düşebilir. Bu durumu aşmak için saldırı yapıldıktan sonra uygulamaya çok sayıda istek yaparak sömürüyü kendinizde gösterebilirsiniz.

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

Saldırı Türleri

Bu zafiyetin tespiti ve sömürüsü için birden fazla yol olduğu belirtilmiştir. Bu yazıda CL-TE ve TE-CL olmak üzere 2 farklı türe değinilecektir.

HTTP Request Smugglıng (HTTP İstek Kaçakcılığı) Nedir?
CL-TE

Yukarıda örneği yapılan senaryoda olası bir CL-TE saldırısından bahsedilmiştir. Yukardaki senaryoda önce Content-Length (CL) ile payload’ın WAF benzeri cihazlara takılmadan uygulama sunucusuna gitmesi sağlanmış, ardından Transfer-Encoding (TE) kullanılarak uygulama sunucusunun isteği parse ederek çalıştırılması sağlanmıştır.

TE-CL

Bu yöntemde öncelikle Transfer-Encoding (TE) başlığı kullanılarak kullanarak yapılan isteğin tamamı web uygulama sunucusuna gönderilir. Ardından web uygulamasının Content-Lenght (CL) e bakarak isteği ikiye ayırması ve işlemesi beklenir.

Nasıl Önlenir?

Bu zafiyetin HTTP 2.0 protokolünün kullanılarak önlenebileceği belirtilmiştir.

Ön ve arkada bulunan servis mekanizmaları için aynı servisleri kullanın. Böylelikle istekler arasındaki sınırları mekanizmalar biliyor olacaktır.

 

Daha detaylı bilgi edinebilmek için Kaynaklar bölümündeki adresler kullanılabilir.

Kaynaklar

https://portswigger.net/web-security/request-smuggling/exploiting/lab-perform-web-cache-poisoning
https://medium.com/@memn0ps/http-request-smuggling-cl-te-7c40e246021c
https://twitter.com/SpiderSec/status/1200413390339887104/photo/1
https://memn0ps.github.io/2019/11/02/HTTP-Request-Smuggling-CL-TE.html

Blog postu ile ilgili bir sorunuz varsa bizimle iletişime geçebilirsiniz.

Berk DÜŞÜNÜR

Size nasıl yardımcı olalım?

İhtiyacınız olan her an Prisma danışmanları yanı başınızda. Bizimle 7/24 iletişime geçebilirsiniz.


    Sızma testi hizmetlerimizi incelediniz mi?