Lab: Excessive trust in client-side controls
Lab: Excessive trust in client-side controls
Bu lab’da, uygulamanın satın alma sürecinde client tarafından gönderilen verilere aşırı güvenmesi nedeniyle ortaya çıkan bir business logic zafiyetini istismar ettim. Amaç, fiyatı normalde bakiyemin çok üzerinde olan bir ürünü, fiyat manipülasyonu yaparak satın almaktı.
Lab Bilgileri
Lab adı: Excessive trust in client-side controls Seviye: Apprentice Hedef: Lightweight “l33t” Leather Jacket ürününü satın almak Kullanıcı: wiener:peter Başlangıç bakiyesi: $100
Hesaba giriş yaptıktan sonra ürünü inceledim. Ceketin fiyatı $1337 olarak görünüyordu

ve mevcut bakiyem bu ürünü almaya yeterli değildi. Satın alma denemesi yaptığımda sistem, yetersiz bakiye hatası verdi.Bu noktada, satın alma sürecindeki istekleri Burp Suite ile incelemeye karar verdim.
Ürünü sepete eklerken gönderilen isteği Burp’te yakaladım.

Bu istekte dikkatimi çeken nokta, ürün fiyatının client tarafından gönderiliyor olmasıydı . Server tarafında fiyatın yeniden hesaplandığına dair herhangi bir mekanizma görünmüyordu.
Bu noktada price parametresini manuel olarak değiştirdim.

İsteği tekrar gönderdiğimde ürün sepete eklendi ve fiyat $0.01 olarak hesaplandı. Server, gönderilen fiyat değerini doğrulamadığı için bu değişikliği olduğu gibi kabul etti. Daha sonra ürün miktarını artırarak iki adet ceket ekledim. Sepet ekranında toplam tutar $0.02 olarak görünüyordu.

Mevcut bakiyem bu tutarı karşıladığı için ödeme işlemi sorunsuz şekilde tamamlandı ve lab başarıyla çözüldü.

Bu lab’daki temel problem, uygulamanın client-side kontrollere aşırı güvenmesi ydi. Ürün fiyatı gibi kritik bir bilginin, server tarafında hesaplanmak yerine kullanıcıdan gelen veriye dayanması ciddi bir business logic zafiyetidir.
Bu tür bir hata gerçek bir e-ticaret uygulamasında:
- Ürünlerin çok düşük fiyatlarla satın alınmasına
- Finansal kayıplara
- Stok ve kampanya sistemlerinin istismar edilmesine neden olabilir.
Sonuç
Bu lab, business logic zafiyetlerinin yalnızca teknik açıklarla sınırlı olmadığını ve doğru varsayımlar yapılmadığında çok ciddi sonuçlar doğurabileceğini gösteriyor. Clienttan gelen hiçbir kritik veri, server tarafında doğrulanmadan kullanılmamalıdır.







