Checklist for Web App Pentesting - IV
5. Yetkilendirme (Authorization) Testleri
5.1 Yetki Artırımı (Privilege Escalation)
- Yönetici yetkisi “admin=yes”, “true”, “1” gibi bir değişken (gizli bir alanda da olabilir); bu tür değişkenlerin varlığının test edilmesi gerekir.
- POST yada GET istekleri içinde kullanıcı ismi de parametre olarak gönderiliyor ise, bu isim yerine “admin” yada “yonetici” gibi değerlerin yerleştirilip test edilmesi gerekmektedir. Ayrıca “userid” gibi parametreler için de 0 değeri kullanılıp yönetici yetkileri test edilebilir. Benzer şekilde POST isteğinde “Session=A239ffade359fe&role=3” gibi bir veri tespit edilmişse, “role=0” ile daha yetkili haklara sahip olunup olunamayacağı denenmelidir.
- Yatay yetki artırımı için isteklerdeki numerik alanlara dikkat etmek gerekir; bunlar kullanıcı sıra numaraları olabilir.
5.2 Yetki Dışı İşlem
- Yetkilendirme gerektiren fonksiyonlar mutlaka kullanıcı yetki sorgusuna tabi tutulduktan sonra kullanılmalıdır.
5.3 Dizin Gezinimi (Path Traversal)
Dizin gezinimi, herhangi bir GET ya da POST parametresinin bir işletim sistemi dosyasını doğrudan dosya yolu kullanılarak okunması sonucu ortaya çıkar. Örneğin bir POST talebinde “page” isimli bir parametre değeri “header.html” değeri alıyor ise ve ilgili uygulama kodu da bu dosyayı /dosya/yolu/header.html şeklinde çağırıyor ise, “page=../../../../../etc/passwd” gibi bir çağrı ile kullanıcı ve yetki atamaları elde edilmeye çalışılabilir. Özellikle uygulama sunucularının konfigürasyon dosyaları ilginç dosyalar arasındadır.
- Null karakteri (%SıfırSıfır) ile deneme yapmak unutulmamalı. Uygulama, pathin sonuna ".html" vb koyuyor olabilir, bunu atlatmak için.
- Bazen null karakteri soyulup çıkarılıyor olabilir, bir de enter (%0a) göndermekte yarar var.
- Nokta (.) ve slash (/) karakterleri filtreleniyor olabilir, bu durumda bu karakterlerin URL encode değerleri denenebilir. Karakter ve URL kodlama (encoding) karma şekilde de denenmelidir.
- Hata mesajları mutlaka sınanmalıdır. Uygulama, olmayan bir file için (../../../../../blablabla) için "path not found" mesajı verirken var olan bir adres için (../../../../../Program%20Files/) için "permission denied" mesajı veriyor olabilir.
5.4 Yetki Kontrolü Atlatma (Bypassing Authorization)
- Kullanıcı, yetkisi dışında bulunan sayfalara erişebilir mi? Örneğin AddUser.jsp sayfası sadece admin erişimi için öngörülmekle beraber, standart kullanıcı bu bağlantıyı çağırarak ne tür işlemler yapabilir?
- Yetkimiz olmayan bir işlemin gerçekleştirilmesi mümkün müdür? Örneğin banka internet sitesi cep telefonu numara değişikliğini yasaklamış olabilir. Fakat uygun bir istek oluşturarak, bu kısıtlama aşılabilir mi?
- Uygulamalar yetki bazlı erişim kontrolünü dokümanlara erişimi denetlemek için kullanıyor olabilirler. Örneğin bütün kullanıcılara ait PDF dosyaları aynı klasörde tutuluyor olabilir. Başka kullanıcıların bilgilerine erişim test edilebilir.
- İsteklerdeki parametreler manipüle edilerek yetkisi olunmayan bilgilere (örneğin oturum açılan kullanıcı dışında başka bir kullanıcının bilgilerine) erişim sağlanabilir.
Hiç yorum yok:
Yorum Gönder