Business Logic Vulnerabilities
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:
Ö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.
Labı başlattığımızda bizi böyle bir ekran karşılıyor. Şimdi wiener kullanıcısı ile giriş yapalım.
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.
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.
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.
Ö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.
Devam edelim. Ürünü sepete eklediğimizde miktar arttırıp azaltma yerleri var.
Tıklayıp giden requesti yakalayalım.
Client tarafından giden istek bu şekilde. Giden istekteki quantity kısmını -20 yaptığım zaman garip bir durum oluşuyor.
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.
Şimdi alışverişi tamamlayalım.
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.
