PortSwigger Business Logic Vulnerabilities
Business logic güvenlik zafiyetleri, saldırganın istenmeyen davranışlar gerçekleştirmesine izin veren uygulamanın tasarım ve uygulamasındaki güvenlik zafiyetidir. Saldırgan, potansiyel olarak kendi çıkarları için valid fonksiyonları kullanabilmektedir. Business logic güvenlik zafiyetleri genel olarak uygulamanın olağan dışı durumları nasıl ele alacağını düşünüp, değerlendirilmediği durumlarda ortaya çıkmaktadır.
Logic zafiyetleri genellikle uygulamanın normal kullanımları sırasında ortaya çıkmayacağından bu zafiyetleri aramayan kimseler tarafından görüntülenemez. Ancak saldırgan bu yaklaşımları ele alarak çıkar sağlayabilmektedir.
Lab 1 Lab 2 Lab 3 Lab 4 Lab 5 Lab 6 Lab 7 Lab 8 Lab 9 Lab 10
Lab-1 Excessive trust in client-side controls
Bu laboratuvar, kullanıcıdan aldığı girdiyi yeterince doğrulamamaktadır. Lab’ın tamamlanması için “Leather Jacket” satın alınmalıdır.
Ürün sepete eklenirken ücreti bilgisi de sepete gitmekte. Eğer bu değer 1 olarak değiştirilerse, sepette ürünün değeri 1 dolar olmaktadır.
Lab-2 High-level logic vulnerability
Bu laboratuvar, kullanıcıdan aldığı girdiği yeteri kadar kontrol etmemektedir. Lab’ın tamamlanması için “Leather Jacket” ürününün satın alınması gerekmektedir.
Ürün sepete eklendiğinde “quantity” parametresi görüntülenmektedir. Bu parametreye negatif bir değer verildiğinde sepet tarafında negatif bir ücret oluşmaktadır.
Buradan yola çıkarak başka bir ürün negatif şekilde sepete eklenmektedir. Checkout yapabilmek için total’in pozitif bir değer olması gerektiğinden hedeflenen ceket sepete yerleştirilmektedir. Lab. tamamlanmaktadır.
Lab-3 Inconsistent security controls
Bu laboratuvardaki logic zafiyeti, rastgele kullanıcıların sadece çalışanların erişmesi gereken admin yetkilerine erişebilmesine neden olmaktadır. Lab’ın tamamlanması için admin paneline erişip Carlos kullanıcısının silinmesi gerekmektedir.
Uygulamadaki admin arayüzüne ulaşabilmek için çalışan olmak gerekmektedir ve çalışanların dontwannacry adresi ile kayıt olması istenmektedir.
Kayıt olduktan sonra update email fonksiyonu kullanılarak email sadece çalışan email’i haline getirilmektedir.
Lab-4 Flawed enforcement of business rules
Bu laboratuvardaki satın alma iş akışında logic güvenlik zafiyeti bulunmaktadır. Lab’ın tamamlanması için “Leather Jacket” ürünün alınması gerekmektedir.
Uygulama yeni müşterilere ve bültene kaydolanlara indirim kuponu vermektedir.
Aynı kuponlar peşpeşe kullanılamamaktadır fakat kuponlar birbiri ardına kullanıldığında uygulama zafiyetli davranıp kabul etmektedir.
Lab-5 Low-level logic flaw
Bu laboratuvar, kullanıcıdan aldığı girdileri yeteri kadar doğrulamamaktadır. Lab’ın tamamlanması için “Leather Jacket” ürününün satın alınması gerekmektedir.
Uygulama sepete ürün eklerken tek seferde sadece 99 adet ürün eklemektedir. Burp Intuder ile sonsuz şekilde request gönderecek hale getirmek için null payload kullanıp “continue indefinitely” seçeneği seçilmelidir.
Ödenilmesi gereken ürün negatif sonsuza doğru gittikten sonra pozitif sonsuza doğru geri dönme eğilimi göstermektedir. Bu sırada 0 a en yakın negatif yerde ıntruder durdurulmalıdır.
Total değerinin pozitif olabilmesi gerekmektedir bu yüzden başka ürünler de eklenmelidir.
Lab-6 Inconsistent handling of exceptional input
Bu laboratuvar kullanıcıdan aldığı girdiyi doğru kontrol etmemektedir. Lab’ın tamamlanması için admin paneline erişip Carlos kullanıcısının silinmesi gerekmektedir.
Uygulamaya uzun bir email ile kayıt olunabilmektedir.
Ancak uygulamanın email değeri için belirli bir karakter sınırı bulunmaktadır.
Admin paneline ulaşabilmek için dontwannacry maili ile kayıt olmak gerekmektedir. “YETERİ-KADAR-UZUN-STRING@dontwannacry.YOUREMAIL-ID.web.security-academy.net “ email bilgisi ile kayıt olunduğunda mail onayı bizim sunucumuza gelmektedir ancak uygulama sadece dontwannacry[.]com kısmına kadar almaktadır. Bu yüzden bizi çalışan olarak değerlendirmektedir.
Lab-7 Weak isolation on dual-use endpoint
Bu laboratuvar, kullanıcı girdilerine dayalı bir ayrıcalık düzeyi hakkında hatalı varsayımda bulunmaktadır. Lab’ın tamamlanması için Carlos kullanıcısının silinmesi gerekmektedir.
Uygulamada parola değiştirme requesti oluşturduğumuzda kullanıcı adı geçerli parola ve yeni parolayı sormaktadır.
Ancak uygulama yeteri kadar validation yapmadığından current-password parametresi girilmeden de request gönderilebilmektedir. Böylelikle administrator kullanıcı ele geçirilerek carlos kullanıcısı silinmektedir.
Lab-8 Insufficient workflow validation
Bu laboratuvar, satın alma workflow’u hakkında hatalı varsayımda bulunmaktadır. Lab’ın tamamlanması için “Leather Jacket” ürünü satın alınmalıdır.
Paranın yetebileceği bir ürün alındığında uygulama sunucuya siparişin onaylandığı hakkında bir request göndermektedir. Bu request saklanmaktadır.
Daha sonra istenilen çeket ürünü alınmaya çalışıldığında hesaptaki para yetmediğinden sunucuya siparişin onaylanmadığına dair bir request göndermek istemektedir. Bu request yakalanarak droplanmaktadır ve daha önce yakalanan siparişi onaylayan request onun yerine gönderilmektedir.
Lab-9 Authentication bypass via flawed state machine
Bu laboratuvardanın login işleminde, güvenlik zafiyeti barındıran bir varsayımda bulunmaktadır. Lab’ın tamamlanamsı için Carlos kullanıcısının silinmesi gerekmektedir.
Uygulamaya login olunmaya çalışıldığında role-selector seçimini çağırıp yetkimizi seçmemizi istemektedir. Ancak görseldeği request sunucuya gönderilmeden droplanırsa ve home page ziyaret edilirse administrator yetkileri varsayılan olarak ayarlanmış olacaktır.
Lab-10 Infinite money logic flaw
Bu laboratuvarda bulunan satın alma işleminde logic zafiyet bulunmaktadır. Lab’ın tamamlanması için “Leather Jacket” satın alınmalıdır.
Gift card aldıktan sonra indirip kuponu girildiğinde 10 dolar veren ama maaliyeti 7 dolar olan bir akış gerçekleşmektedir. Bu akış macro yardımıyla otomatize edilerek sonsuz paraya doğru ilerlenebilmektedir.
7 dolar vererek Gift card satın alma + indirim kuponu gerçekleştirme+ checkout+ confirmed+ gift card verisi ile 10 dolar geri alma
Intruder yardımıyla bu akış tekrarlanmaktadır.