top of page

Lab: Weak isolation on dual-use endpoint

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

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

Lab: Weak isolation on dual-use endpoint

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:

Lab: Weak isolation on dual-use endpoint

İ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&current-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:

Lab: Weak isolation on dual-use endpoint

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 .

Lab: Weak isolation on dual-use endpoint

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

Lab: Weak isolation on dual-use endpoint

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

 
 
bottom of page