4 Haziran 2012 Pazartesi

HTTP - Nass oluyor da oluyor? HTTP Basic Authentication

Windows domain ya da workgroup (hala kullanan yoktur sanıyorum) ortamında IIS web sunucu seviyesinde uygulama erişimi kontrolü için eskiden sıkça kullanılan bir yöntemdi. Basic Authentication yani temel kimlik doğrulaması aktif hale getirilmiş bir web uygulamasına erişilmeye çalışıldığında trafik şu şekilde işler;
İstemci sunucuya bildik HTTP isteği gönderir (ekran görüntüsünde kök dizinine erişme isteği)

Sunucu kimlik doğrulama isteğini,istemciye gönderdiği cevapta "HTTP 401 Unauthorized" mesajıyla birlikte  "WWW-Authenticate" header'ını ekleyerek belirtir (ekran görüntüsünde herhangi domain ya da realm bilgisi tanımlanmamış sunucunun gönderdiği cevapta real olarak sunucu ip adresinin eklendiği görülüyor)
bu noktadan sonra işletim sistemi devreye giriyor ve kullanıcıya web sunucusuna gönderebilmesi için kullanıcı adı/parola penceresi gösteriyor. Yukarıdaki HTTP cevabında dikkat edilirse kullanıcı önüne gelen kullanıcı adı/parola penceresini doldurmadan kapatırsa alacağı cevap da hali hazırda gönderilmiş durumda. Yani kullanıcı, kullanıcı adı/parola bilgisi vermek istemezse tarayıcı bu isteği (aslında isteksizliği) tekrar web sunucusuyla muhatap olmadan cevaplıyor, web sunucusuna bir istek daha gönderilmiyor.

İstemci bilgisayarında kullanıcı, kullanıcı adı/parola kutucuğunu doldurduktan sonra tarayıcı bir önceki isteğin aynısını tekrar web sunucusuna gönderiyor, tabi sunucunun ısrarla istediği kimlik doğrulama bilgisini HTTP Request'in "Authorization" header'ına ekleyerek.
Aslında bu bilgi kimlik doğrulama için yani "Authentication", ama "Authorization" ise kimlik doğrulama yapıldıktan sonraki yetkilendirme adımı, yani kullanıcı kimliği doğrulandıktan sonra hangi kaynaklara hangi yetkiyle erişebileceğinin belirlenmesi adımı. Bu tip ayrıntılara fazla takılmadan devam edecek olursak, kullanıcı adı ve parola web sunucu tarafından kabul edilirse web sunucu istemciye istediği kaynak bilgisini yani web sayfasını göndermeye başlar,kullanıcı da tarayıcı program penceresini kapatana kadar her HTTP isteğinde kullanıcı adı/parola bilgisini "Authorization" header'ında göndermeye devam eder.
Kullanıcı adı ve parola geçersizse web sunucu 401 Unauthorized mesajıyla birlikte ilk cevabını gönderir,kullanıcı da bu durumu gösteren bir web sayfasıyla karşılaşır.

"Authorization" header'da görünen karışık karakterler Base64 denen bir algoritmanın ürünüdür ama bunu bir şifreleme algoritması olarak kabul etmemek lazım çünkü bu karışık karakterler kullanılarak asıl düz metni elde etmek çok kolay ( Google Base64 decoder).
Ekran görüntüsündeki kırmızı kutucuk içindeki değer "Authorization" header'da gönderilen "Kullanıcı Adı:Parola" değerini gösteriyor. Bu aslında ciddi bir zaafiyet, çünkü web sunucusu ile aranızdaki trafiği dinleme, koklama (tap,sniff) kabiliyetine sahip herhangi biri kritik öneme sahip bu bilgiyi görüldüğü gibi kolaylıkla ele geçirebilir, zaafiyet SSL protokolü ya da Digest Authentication kullanılarak giderilebilir.



İlgili Yazılarım
HTTP - Nass oluyor da oluyor? 3-way-handshake
HTTP - Nass oluyor da oluyor? HTTP Headerlar ve HTTP Mesaj Yapısı
HTTP - Nass oluyor da oluyor? HTTP Windows Authentication
HTTP - Nass oluyor da oluyor? HTTP Digest Authentication
HTTP - Nass oluyor da oluyor? HTTPS - HTTP over SSL

Hiç yorum yok:

Yorum Gönder