Lab: Inconsistent handling of exceptional input
Lab: Inconsistent handling of exceptional input
Bu labda uygulama, kullanıcı girdilerini yeterince doğrulamıyor. Özellikle hesap kayıt (registration) sürecinde bulunan bir mantık hatası (logic flaw) istismar edilerek admin yetkilerine erişmek mümkün.
Lab’ı çözmek için yapılması gerekenler:
- Admin paneline erişmek
- carlos kullanıcısını silmek
Lab banner’ında yer alan bağlantı üzerinden, kişisel bir mail sunucusuna bağlı e-posta istemcisine erişebiliyoruz. Bu istemci:

attacker@exploit-0aac003204e292d380de431f01ad003c.exploit-server.net
- ve bu domain’in tüm alt domainlerine
gönderilen mailleri görüntülüyor.
Her kullanıcıya özel olan email ID , bu mail istemcisinde açıkça gösteriliyor. Bu yapı, lab boyunca yapacağımız email manipülasyonları için kritik öneme sahip.
Bu labda ilk olarak normal bir kullanıcı hesabı oluşturarak uygulamayı gözlemledik. Register sayfasında dikkatimizi çeken kritik bir mesaj vardı:

“If you work for DontWannaCry, please use your @dontwannacry.com email address”
Bu mesaj, admin yetkisinin email domain’ine göre belirlendiğini açıkça gösteriyordu.
Burp üzerinden content discovery yaptığımızda /admin endpoint’inin var olduğunu gördük. Bu endpoint’e normal bir kullanıcıyla erişmeye çalıştığımızda erişim reddedildi ancak hata mesajı şunu ima ediyordu:
Sadece DontWannaCry çalışanları admin paneline erişebilir
Bu noktada hedefimiz netleşti: Sistemin bizi @dontwannacry.com kullanıcısı sanmasını sağlamak .
Email alanında bir manipülasyon yapmamız gerektiği belliydi. Bunun için Burp Intruder kullanarak email parametresini test ettim.


Yaptığımız denemeler sonucunda şunu fark ettim:
- Email alanı maksimum 255 karakter kabul ediyordu

- 255 karakterden sonrası backend tarafından otomatik olarak kesiliyordu (truncate)
Bu çok kritik bir detaydı çünkü:
- Yetkilendirme kontrolleri , kesilmiş email üzerinden yapılıyor
- Mail gönderimi ise tam email adresine yapılıyordu
Yani uygulama, aynı girdiyi iki farklı şekilde ele alıyordu.
Bu tutarsızlığı avantaja çevirmek için email adresini şu mantıkla oluşturduk:
Email’in ilk 255 karakterinin , @dontwannacry.com ile bitecek şekilde ayarladım

- Bu limite ulaşmak için email’in başı AAAAA... şeklinde dolduruldu
- 255 karakterden sonra , kendi exploit server mail domain’imiz eklendi
Sonuç olarak:
Uygulamanın kayıt ettiği email:
- AAAAA...AAAA@dontwannacry.com
- Gerçek mailin gittiği adres:
- attacker@exploit-XXXX.exploit-server.net
Mail doğrulama bağlantısı bize ulaştı, ancak uygulama bizi DontWannaCry çalışanı olarak algıladı.

Hesabı doğrulayıp giriş yaptıktan sonra /admin endpoint’ine erişim sağladım

Admin paneli üzerinden carlos kullanıcısı silindi ve lab başarıyla tamamladım

Bu lab, bize şunu çok net gösteriyor:
- Input validation, storage ve authorization aynı mantıkla ele alınmalıdır
- Email gibi kritik alanlarda length sınırları , ciddi yetki yükseltmelere yol açabilir
- Domain’e bakarak yapılan basit yetkilendirme kontrolleri yüksek risklidir
Inconsistent handling of exceptional input , gerçek hayatta da sıkça karşılaşılan ve etkisi büyük olan bir zafiyet türüdür.Bir sonraki abta görüşmek üzere 🌸







