top of page

Lab: Inconsistent handling of exceptional input

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

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:

Lab: Inconsistent handling of exceptional input

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ı:

Lab: Inconsistent handling of exceptional input

“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.

Lab: Inconsistent handling of exceptional input
Lab: Inconsistent handling of exceptional input

Yaptığımız denemeler sonucunda şunu fark ettim:

- Email alanı maksimum 255 karakter kabul ediyordu

Lab: Inconsistent handling of exceptional input

- 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

Lab: Inconsistent handling of exceptional input

- 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ı.

Lab: Inconsistent handling of exceptional input

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

Lab: Inconsistent handling of exceptional input

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

Lab: Inconsistent handling of exceptional input

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 🌸

 
 
bottom of page