Lab: Weak isolation on dual-use endpoint
Lab: Weak isolation on dual-use endpoint
Bu labda, uygulamanın kullanıcının yetki seviyesini belirlerken istemciden gelen girdilere güvenmesi nedeniyle ortaya çıkan bir mantık hatası bulunuyor. Özellikle hesap yönetimi işlemlerinde kullanılan endpoint, hem normal kullanıcılar hem de yönetici işlemleri için ortak (dual-use) olarak tasarlanmış ancak aradaki yetki izolasyonu düzgün yapılmamış.
Bu hatayı kullanarak, herhangi bir kullanıcının başka bir kullanıcının hesabı üzerinde işlem yapması mümkün hale geliyor. Labın amacı, bu zayıf izolasyonu istismar ederek administrator hesabına erişmek ve ardından carlos kullanıcısını silmek.
Teste başlamak için bana verilen hesap bilgileri:
- Kullanıcı adı: wiener
- Şifre: peter
Çözüm
İlk olarak wiener:peter bilgileriyle uygulamaya giriş yaptım. Giriş yaptıktan sonra karşıma My Account sayfası çıktı. Bu sayfada e-posta güncelleme ve şifre değiştirme alanları bulunuyordu

Amacım, şifre değiştirme fonksiyonunun nasıl çalıştığını görmek olduğu için, kendi şifremi değiştirmeyi denedim ve bu sırada oluşan tüm istekleri Burp Suite üzerinden yakaladım.
Şifre değiştirme işlemi sırasında aşağıdaki endpoint’e bir POST isteği gönderildiğini gördüm:

İsteği Burp’te incelediğimde gözüme çarpan en kritik nokta, username parametresinin istemciden gönderiliyor olmasıydı. Normalde böyle bir işlemde sunucu, hangi kullanıcının şifresinin değiştirileceğini session üzerinden belirlemeliydi.
Önce normal bir şifre değiştirme isteği şu şekildeydi:
csrf=UYnaw7Z0KGHAosbKSXH5cnWGYjIglcYT&username=wiener¤t-password=peter&new-password-1=pass&new-password-2=pass
Burada iki önemli zafiyet olduğunu fark ettim:
- username değeri tamamen kullanıcı kontrolünde.
- current-password alanı sunucu tarafından gerçekten doğrulanmıyor.
Bunu test etmek için isteği Burp Repeater’a gönderdim ve username parametresini administrator olarak değiştirdim. Ayrıca dikkat çekici bir şekilde, administrator hesabı için herhangi bir mevcut şifre bilgisi girmem gerekmedi.
Manipüle ettiğim istek şu hale geldi:

csrf=UYnaw7Z0KGHAosbKSXH5cnWGYjIglcYT&username=administrator&new-password-1=pass&new-password-2=pass
Bu isteği gönderdiğimde sunucu, yetki kontrolü veya mevcut şifre doğrulaması yapmadan isteği kabul etti. Böylece administrator hesabının şifresini başarıyla değiştirmiş oldum .

Ardından belirlediğim yeni parola ile administrator hesabına giriş yaptım . Admin paneline erişim sağladıktan sonra labın istediği şekilde carlos kullanıcısını sildim ve lab başarıyla tamamlandı.

Bu zafiyetin temel sebebi:
- Aynı endpoint’in hem normal kullanıcılar hem de admin işlemleri için kullanılması
- Kullanıcının yetki seviyesinin session yerine istemci girdilerine göre belirlenmesi
- Kritik işlemler sırasında sunucu tarafı yetkilendirme ve doğrulama kontrollerinin eksik olması
Bu lab, küçük gibi görünen bir tasarım hatasının nasıl tam yetki ele geçirmeye kadar gidebileceğini çok net gösteriyor. Özellikle hesap yönetimi gibi kritik fonksiyonlarda, istemciden gelen hiçbir veriye güvenilmemesi gerektiğini pratikte görmüş oldum.Bir sonraki labda görüşmek üzere.🌸







