top of page

Lab: Infinite money logic flaw

Yazarın fotoğrafı: Songül ÖZÜGÜRLER
Songül ÖZÜGÜRLER
28 Nis
2 dakikada okunur

Lab: Infinite money logic flaw

Lab: Infinite money logic flaw

Bu labda hedef oldukça netti: satın alma akışındaki bir mantık hatasını kullanarak “Lightweight l33t leather jacket” ürününü satın almak. Ama olay hiç de “ürünü al” kadar basit değildi; sistemin para hesabı ciddi şekilde sınıfta kalıyordu.

Lab’a wiener:peter bilgileriyle giriş yaptım ve önce ortamı biraz yokladım.

Siteyi incelerken newsletter’a kayıt olanlara SIGNUP30 isimli bir kupon verildiğini fark ettim. Kupon, %30 indirim sağlıyordu. Normal şartlarda çok masum. Asıl ilginç kısım, hediye kartı tarafında başlıyor.

Hesap sayfasında 10 dolarlık hediye kartı satın alabiliyordum. Denemek için sepete bir tane ekledim, kuponu uyguladım ve satın alma işlemini tamamladım. Kartı 7 dolara almış oldum.

Lab: Infinite money logic flaw

Sonra bu kartı My account sayfasından kullandım. Ve burada sistem resmen kendini ele verdi.

Kartı kullandığımda, mağaza bakiyeme 10 dolar eklendi. Yani sistem, indirimli aldığım kartın tam değerini sorgusuz sualsiz bakiyeye yazıyordu. Aradaki fark? 3 dolar net kazanç.

Bu noktada şunu düşündüm:

“Bu işlem tekrar edebiliyorsa, burada sınırsız para var.”

Burp Proxy üzerinden trafiği incelemeye başladım. Hediye kartı kullanma işlemi oldukça basitti:

Lab: Infinite money logic flaw

Tek kontrol edilen şey, request içindeki gift-card parametresiydi. Kart nereden geldi, daha önce kullanıldı mı, hangi siparişe bağlı… hiçbirini umursamıyordu.

Yani sistem için önemli olan tek şey: “Bana bir kart kodu ver.”

Bu da işi otomasyona bağlamak için fazlasıyla yeterliydi.

Bu noktadan sonra Burp’ün Session Handling Rules ve Macro özelliğini kullandım.

Lab: Infinite money logic flaw

Macro’ya şu akışı ekledim:

- Sepete hediye kartı ekle

- Kuponu uygula

- Checkout yap

- Order confirmation response’undan hediye kartı kodunu al

- Aynı akışta bu kartı kullan

Order confirmation response’undan kart kodunu custom parameter olarak çıkardım ve bu değeri POST /gift-card isteğine bağladım.

Lab: Infinite money logic flaw
Lab: Infinite money logic flaw

Macro’yu test ettiğimde her şey beklediğim gibi çalışıyordu:

- Yeni kart üretiliyor

- Kart otomatik kullanılıyor

- Sunucu 302 response dönüyor

- Bakiye artıyor

Sistem, olan bitenden tamamen habersizdi.

Artık süreci tek tek çalıştırmanın anlamı yoktu. İşi Burp Intruder ’a devrettim.

- GET /my-account isteğini Intruder’a gönderdim

- Attack type: Sniper

- Payload type: Null payloads

- Payload sayısı: 412

Lab: Infinite money logic flaw

Sunucuyu yormamak için resource pool ayarladım ve aynı anda yalnızca 1 istek gönderdim.

Lab: Infinite money logic flaw

Saldırıyı başlattım ve Burp’un benim yerime çalışmasını izledim.

Intruder tamamlandığında mağaza bakiyem fazlasıyla yeterliydi. Ceketi sepete ekledim, satın aldım ve lab teknik olarak çözülmüş oldu.

Lab: Infinite money logic flaw

Bu lab bana çok net bir şeyi tekrar hatırlattı: İndirim mekanizması + bakiye sistemi + zayıf iş akışı kontrolü bir araya gelirse, sonuç genelde felaket oluyor.

Gerçek hayatta da bu tarz logic flaw’lar genelde “önemsiz” görülüyor. Ama doğru yerde denk gelirse, etkisi injection’dan bile daha yıkıcı olabiliyor.

Bir sonraki labta görüşmek üzere 🌸

 
 
bottom of page