Sitemap

Business Logic Vulnerabilities

4 min readMar 7, 2021

Herkese merhabalar. Bugün sizlere Business Logic Vulnerabilities nedir onu anlatacağım.

Öncelikle Business Logic yani İş Mantığı nedir onu bir anlatayım.

Business Logic kısaca uygulamadaki veri işleme ve yorumlama kurallarına verilen genel isimdir.

Ufak bir örnekle açıklayacak olursak:

Bir araba yaptıracağınızı varsayalım. Bu arabayı yapacak olan mühendislere örneğin arabanın 6 vitesi olacak yani 7. vitese çıkamayacak. Tekerlikler 120 derece dönebilecek daha fazla dönemeyecek. Hız sınırı 150 olacak daha fazla hızlanamayacak. Gibi talimatlar verdiğinizde, bu isteklerinizin bütününe verilen isim Business Logic oluyor.

Şimdi Business Logic Zafiyetlerinin temel mantığını kavramaya çalışalım.

Business Logic Zafiyetleri:

Son kullanıcının, sizin kurgulamış olduğunuz uygulamanın kurgusundaki hatalardan yola çıkarak yapmış olduğunuz Business Logic tarafında aslında istenmeyen davranışları sergilemesine olanak sağlayan hatalardır. Örneğin yapmış olduğumuz hatalardan dolayı arabamızın 150 km/s değil de 180 km/s hıza çıkması, tekerleklerinin 120 derece değil de 150 dereceye kadar dönmesi bir Business Logic hatasıdır.

Web dünyasında Business Logic Zafiyetlerinin oluşmasındaki temel sebeplerden biri de normal kullanımda ortaya çıkmalarının zor olmasından ve kullanıcı girdilerinin gerekli validasyonlardan geçmemesinden kaynaklıdır. Yani bir ürünün fiyatını client tarafından alırsanız normal bir kullanıcının bunu farketmesi pekte mümkün değildir.

Fakat bir saldırgan proxy kullanarak bu isteğin arasında girip, ürünün fiyatında düzenleme yapabilir. Business Logic hataları çok komplike sistemlerde daha fazla gözükür.

Business Logic Zafiyetlerinin etkileri çok geniş bir yelpazede yayılır. Bazı Business Logic Açıkları önemsiz olabilir fakat potansiyel açıdan uygulamanın işleyişini tamamiyle değiştirip çok kritik güvenlik açıklarına sebebiyet verebilir.

Şimdi örnek bir laboratuvar çözerek BL Zafiyetlerini daha iyi anlamaya çalışalım.

BL Vulnerabilities Örneği:

Press enter or click to view image in full size

Öncelikle bizden ne istediğini öğrenelim.

Burada kullanıcıdan gelen datanın iyi bir şekilde valide edilmediğini söylüyor. Bundan yararlanarak “Lightweight l33t leather jacket” isimli ürünü almamızı istiyor. wiener:peter kullanıcısı ile giriş yapabileceğimizi söylüyor. Hadi labı başlatalım.

Press enter or click to view image in full size

Labı başlattığımızda bizi böyle bir ekran karşılıyor. Şimdi wiener kullanıcısı ile giriş yapalım.

Press enter or click to view image in full size

Evet bize vermiş olduğu kullanıcı parolası ile giriş yapıp, bizden satın almamızı istediği ürünün detayına girdik.

Öncelikle bizim $100.00 ımız var. Fakat satın almamız gereken ürün $1337.00 yani yeterli paramız yok. Şimdi ürünü sepete ekleyelim. Fakat şu andan itibaren giden isteklerin hepsini Burp Suite yardımıyla yakalayıp inceleyeceğim.

Press enter or click to view image in full size

evet sepete eklemek istediğimizde Client Side den Server Side ye ürünün miktarı, ürün id si, ve ürün fiyatı gidiyor. Biz bu isteği göndermeden önce eğer ürün fiyatını 1 yaparsak ve bu Client Side den gelen price gerekli validasyonlardan geçilmiyorsa ürün sepette 1 dolar olarak gözükecek ve biz bu ürünü satın alabileceğiz.

Press enter or click to view image in full size

Evet tahmin ettiğimiz gibi ürün fiyatı $0.01 oldu. Şimdi ürünü satın alıp diğer labımıza geçelim.

Press enter or click to view image in full size

Öncelikle bu gerçekten çok basit bir labdı. Fakat temel olarak BL Vuln mantığını anlamamız için çözmek istedim. Şimdi diğer labımıza geçelim.

İkinci labımızı da başlattığımızda temel olarak her şeyin aynı olduğunu görüyoruz. Task olarak tekrardan “Lightweight l33t leather jacket” isimli ürünü almamızı istiyor.

Ürünün detay kısmına gelip karta ekle dediğimiz zaman bu sefer price kısmına bizden almadığını görüyoruz.

Press enter or click to view image in full size

Devam edelim. Ürünü sepete eklediğimizde miktar arttırıp azaltma yerleri var.

Press enter or click to view image in full size

Tıklayıp giden requesti yakalayalım.

Press enter or click to view image in full size

Client tarafından giden istek bu şekilde. Giden istekteki quantity kısmını -20 yaptığım zaman garip bir durum oluşuyor.

Press enter or click to view image in full size

Miktar 0 ın altına düşüyor ve total price da onunla beraber. Aslında şuan alışverişi tamamlayabiliriz fakat üründen — 19 tane aldığımızda elimize 0 tane geçeceği için farklı bir ürün ekleyip o ürünün miktarını — ye düşüreceğim.

Ve evet Bingo !!!!

Sepet toplamı bizim cüzdan miktarımızdan az ve istediğimiz üründen en az 1 tane sahibiz.

Press enter or click to view image in full size

Şimdi alışverişi tamamlayalım.

Press enter or click to view image in full size

Evet arkadaşlar elimden geldiği kadar sizlere Business Logic Vulnerabilities nedir nasıl sömürülür konusunu anlatmaya çalıştım. Umarım faydalı olmuştur. Herkese iyi günler iyi okumalar.

--

--