Webinar’a Katılın | Siber Tehditlere Karşı Güçlü Koruma

Business Logic Nedir?

Business Logic, İngilizceden Türkçeye İş Mantığı olarak çevrilir.

Mevcut bir uygulamanın verileri işleme ve işlediği veriyi yorumlama kurallarına iş mantığı ismi verilir.

İş Mantığı Zafiyetleri Nasıl Oluşur?

İş mantığı zafiyetleri diğer zafiyetlerin çoğu gibi kullanıcıdan alınan verilerin yeterli kontrolleri yapılmamasından veya kullanıcıdan gelen değerin belirli bir formatta geleceğinin düşünülmesinden kaynaklanır.

İş Mantığı Zafiyetlerinin Tespit Edilmesi

Yukarıda bulunan başlıkta bahsedildiği üzere yazılımcının kontrol etmeye gerek olmadığını düşündüğü inputlar üzerinden yazılımın bizden beklediği girdilerden daha farklı bir girdi vermemizle alınan cevaplar arasında bir farklılık olup olmamasına bakılması gerekmektedir.

Örneğin; Bir E-Ticaret sitesi olduğunu varsayalım ve bu siteden bir ürün almak istiyorsunuz. Almak istediğiniz ürünü sepete eklendiğinde ürünün fiyatı veya üründen kaç adet alındığı parametreleri giden istekler arasında gözükmekte. Ürünün kaç adet olduğu sayısal bir değer ve yazılımın arka planda çalışma biçimini tahmin etme çok basittir. metin içeren bir resim Açıklama otomatik olarak oluşturuldu

Yukarıda verilen örnek kod parçası okunduğunda Burada basit bir şekilde sadece ürün adedinin sayısını giden istekte “-1” ile değiştirmek sepet tutarınızı negatif değerlere dönüştürmenize olanak sağlayabilir.

Burada kullanıcıdan alınan değerlerin genelde frontend tarafında negatif sayılara geçmemesi önlenir fakat saldırganlar proxy ile isteği editleyerek gönderdiğinde frontend tarafında yapılan engellemelere takılmadan isteği sunucuya yollayabilmektedir.

Yukarıda verilen örnek bir e ticaret sitesinden ürün fiyatının değiştirilmesi söz konusudur. Ve e ticaret sitesinin büyük zararlar etmesine neden olabilir.

İş Mantığı Zafiyetlerinin İstismar Örneği

İlk örneğimiz bir PortSwigger laboratuvarı olan “Excessive trust in client-side controls” olan sorumuzu çözeceğiz.

Soru içerisinde görev olarak “Lightweight l33t leather jacket” satın almamız istenmiştir.

Kullanıcı hesabı ise “wiener:peter”.olarak verilmiştir.

Verilen bilgiler ile giriş yapıyoruz.

Hesaba giriş yaptığımızda elimizde $100 olduğunu görebiliyoruz.

Almamız gereken eşya ise $1337 olduğu gözükmekte. Öncelikle ürünü sepete eklediğimizde giden istekleri inceliyoruz.

“View details” dediğimizde soldaki ekran karşımıza çıkıyor ve burada “Burp Suite” aracımız ile araya giriyoruz.

İlgili alanda price değeri request içerisinde gözükmektedir. Bu Parametrede almamız gereken eşyanın fiyatını bize $1337 olduğunu gösteriyor.

Price değerini düzenleyip “100” olarak değiştirip isteği yolladığımızda. Sepette ürünün $1 olarak gözükmesini beklemekteyiz.

Sepete gittiğimizde ürün tahmin ettiğimiz gibi $1 olarak gözükmektedir place order butonuna tıkladığımızda ise soruyu çözdüğümüzü bildiren uyarı çıkmaktadır.

İş Mantığı Hatalarından Korunmak İçin Yapılması Gerekenler:

  • Uygulama kullanıcılara sunulmadan mutlaka bir test uzmanı tarafından testleri yapılmalıdır.
  • Yazılımcıların kullanıcıdan aldığı değerler üzerinde varsayım yapmaması, sunucu tarafında kullanıcıdan alınan verilerin doğru bir şekilde işlendiğinden emin olunmalıdır.

 

Kategoriler Makaleler