İş Mantığı Zafiyetleri
OWASP A04 difficulty: değişken
İş mantığı zafiyetleri, uygulamanın teknik olarak “doğru” çalışıp iş kurallarının varsaydığı senaryoların dışına çıkılabilmesidir. Otomatik tarayıcılar bunları nadiren bulur; iş akışını anlayıp beklenmedik ama geçerli girdiler denemek gerekir.
Sık görülen desenler
Section titled “Sık görülen desenler”# Negatif / aşırı miktarqty = -5 → bakiye artışı / ücret iadesiqty = 0 → bedava ürünqty = 999999 → stok / integer overflow# Fiyat istemciden geliyor{"productId":1,"price":0.01}{"currency":"IDR"} # döviz arbitrajı# Akış adımı atlamastep3'e step1-2 olmadan POSTödeme onayından önce kargo adresi değiştir# Kupon / indirimaynı kuponu iki kez uygulaindirimleri istifleyerek %100+ düşsüresi dolmuş kuponu tarih manipülasyonuyla kullan# Referral / puankendi referral kodunu kullanpuan transfer döngüsüMetodoloji
Section titled “Metodoloji”-
Akışı haritala — uçtan uca gez; her adımın sunucu durumunu not al (sepet id, ödeme intent, sipariş status).
-
Varsayımları kır — adım atla, sıra değiştir, geri dön, paralel sekmeden eski isteği replay et.
-
Güven sınırlarını test et — fiyat, rol, miktar, indirim, userId istemciden mi geliyor?
-
Sınır değerleri — negatif, sıfır, 0.001 , “1e6” , boş dizi, aşırı uzunluk.
-
Yarış ve tekrar — tek kullanımlık işlemler → Race .
-
Rol farkı — aynı akışı user vs support vs admin ile karşılaştır.
Örnek senaryolar
Section titled “Örnek senaryolar”E-ticaret fiyat manipülasyonu
Section titled “E-ticaret fiyat manipülasyonu”POST /api/cart/checkout HTTP/1.1Content-Type: application/json
{"items":[{"id":42,"qty":1,"unitPrice":0.00}]}POST /api/cart/checkout{"items":[{"id":42,"qty":1}],"discount":100,"shipping":-10}Feature / plan yükseltme
Section titled “Feature / plan yükseltme”POST /api/subscription{"plan":"enterprise","priceId":"price_free_tier"}Multi-step wizard atlama
Section titled “Multi-step wizard atlama”1) GET /apply → applicationId=A12) POST /apply/A1/review (step 2 atlanarak)3) POST /apply/A1/submit → onaylandıGift card / bakiye
Section titled “Gift card / bakiye”□ Kart bakiyesini iki hesaba harca (race)□ İade + harcama sırasını boz (refund after use)□ Düşük entropili gift card brute□ İade miktarı > ödenenShipping / tax
Section titled “Shipping / tax”□ Ülke kodunu ucuz vergi bölgesine çevir (client-side)□ Digitals üründe physical shipping ücreti iadesi□ Adres değişikliği ödeme sonrası ama kargo öncesiReview / trust
Section titled “Review / trust”□ Satın almadan yorum□ Kendi ürününe puan□ Rapor/flag limit aşımıProxy’den UI kısıtı aşma
Section titled “Proxy’den UI kısıtı aşma”disabled button → yine de POSTmin=1 max=5 → qty=100hidden input role=user → role=adminfrontend currency lock → body currency değiştirTest notları
Section titled “Test notları”□ İş kurallarını dokümandan / ürün sahibinden öğren□ Her "impossible" UI kısıtını proxy'den aş□ Eski API sürümlerinde logic farkı ara□ Raporla: beklenen kural → manipülasyon → etki ($$ / veri / yetki)□ Demo hesap + kanıt sipariş ID'leriSaldırı zinciri
Section titled “Saldırı zinciri”Checkout akışını haritala → unitPrice/qty oynat → kupon stack + race → bedava / negatif ödeme PoC