Lab: High-level logic vulnerability
Lab: High-level logic vulnerability
Amaç
Bu lab’da amaç, Lightweight l33t leather jacket ürününü normalde mümkün olmayan bir fiyatla satın alarak lab’ı çözmek.
Giriş Bilgileri
Lab bize şu kullanıcıyı veriyor:
- Username: wiener
- Password: peter
- Store credit: $100
Sepete ürün ekleme işlemi sırasında, uygulamanın POST /cart isteğinde geçen quantity parametresini düzgün doğrulamadığını fark ettim. Yani kullanıcı “adet” bilgisini manipüle edince, sunucu bunu filtrelemeden kabul ediyordu

Önce lab’a girdim ve wiener:peter ile login oldum. Ardından hedef ürün olan Lightweight l33t leather jacket ’ı satın almak istedim ama $100 kredi yetmediği için checkout aşamasında satın alma gerçekleşmedi.

Buradan sonra “sepette bir şeyler oynanabiliyor mu?” diye Burp’e geçtim.
Herhangi bir ürünü sepete ekledim ve Burp Suite’te:
Proxy → HTTP history kısmından POST /cart isteğini yakaladım.
İçerikte şunu gördüm:
Ürün adedi tamamen quantity parametresinden gidiyor.
Yani arayüzdeki butonlardan bağımsız, sunucu aslında “gelen quantity neyse” ona göre işlem yapıyor.
Burada test amaçlı quantity değerini negatife çektim. Burp’te isteği şu şekilde gönderdim:

Sonuç: Uygulama bunu reddetmedi. Yani “negatif adet olmaz” gibi bir sunucu doğrulaması yoktu. Sepet tarafında da toplam fiyatın aşağı doğru etkilendiğini gördüm.
Sepet toplamını çok düşürdüğümde checkout sırasında site bu sefer:
“eksi bakiye ile işlem yapılamaz” benzeri bir engel çıkardı.
Yani:
Sepette negatif değerleri kabul ediyor
Ama checkout tarafında “eksi senaryo” kontrolü var
Bu yüzden tek başına “toplamı negatife düşürmek” siparişi geçirmeye yetmedi.
Burada şu stratejiyle ilerledim:
Ceketi sepete normal şekilde ekledim

toplamı düşürmek için productId=1 üzerinde negatif quantity kullandım.
Checkout engeline takılmamak için toplamı tekrar “ödenebilir” aralığa getirmem gerekiyordu.
Bu noktada productId=6 olan ürünü kullandım:
productId=6 → Hydrated crackers ( $92 )
Sonra sepete normal ekledim:

Ben bu ürünü 13 kez sepete ekledim.
Böylece checkout’ın “eksi” kontrolüne takılmayacak şekilde sepet toplamı tekrar toparlandı,
ama negatif quantity’nin “toplamı düşürme” etkisi devam ettiği için,
toplam tutarı $100 store credit altına çekebildim.
Toplam tutar $100 altına düştükten sonra checkout yaptım ve sipariş başarıyla geçti. Böylece Lightweight l33t leather jacket normal fiyatının altında satın alınmış oldu ve lab çözüldü.

Bir sonraki lab’da görüşmek üzere🌸







