Checklist for Web App Pentesting - III
4. Session Management (Oturum Yönetimi) Testleri
4.1. Oturum Sabitleme (Session Fixation) – Giriş Sonrası Oturum Bilgisi Yenileme
- Uygulama login öncesi bir oturum bilgisi gönderiyor ise, login sonrası oturum bilgisinin mutlaka değiştiğine emin olmak gerekmektedir. Aksi takdirde oturum sabitleme (session fixation) saldırıları test edilebilir. Burada iki senaryo vardır:
- Oturum bilgisi URL içinde taşınıyor ise Session Fixation saldırısı gerçekleştirilebilir. Bu işlem sadece kullanıcıyı bir bağlantı ziyarete ikna etmek kadar basittir.
- Oturum bilgileri POST talepleri ile taşınıyor ise, CSRF yöntemi kullanılarak, kullanıcının bizim belirlediğimiz oturum bilgisi ile uygulamaya giriş yapmasını sağlayabiliriz.
4.2. Çerezlerin İçeriği
Set-Cookie: SESSIONID=iojew984389hui78g; path=/appl/portal; secure; HttpOnly
- Çerez mutlaka “HttpOnly” seçeneğini içermelidir. Bu seçenek yeni versiyon tarayıcıların JavaScript kodu kullanılarak çerez bilgisine erişmesini engellemektedir.
- Uygulama SSL üzerinden çalışıyor ise “secure” seçeneğinin de kullanılmış olması gerekmektedir.
- Çerezin etki alanı (domain) kullanılarak oluşturulması, aynı etki alanı altında çalışan bütün uygulamalara aynı çerezin gönderilmesi anlamına geleceğinden, etki alanının belirtilmemiş olması önemlidir. Sunucu ismi bazında bir takip yapıldığı kontrol edilmelidir. Yani yanıttaki Set-Cookie başlığında Domain=./example.org gibi bir parametre olmaması beklenir.
- “Path” değişkeni uygun bir korunan alanı işaret etmelidir. Sadece bu yolun çağrılması durumunda internet tarayıcısı çerez bilgisini gönderecektir.
4.3. Oturum Sonlandırma
- Session timeout varlığı kontrol edilmelidir.
- Uygulama kullanıcıya logout seçeneği sunmalıdır.
- Logout olmadan browser kapatıldığında oturumun sonlandırılıp sonlandırılmadığı kontrol edilmelidir.
- Uygulama beklenmeyen bir hata oluştuğunda (örn: saldırı tesbiti) oturumu sonlandırmalıdır.
4.4. CSRF (Sitelerarası İstek Sahteciliği) ve Oturum Çalma (Session Riding)
CSRF, kurbanın saldırgan tarafından hazırlanmış bir siteyi ziyaret etmesi ve saldırganın kurbana tarayıcısı üzerinden herhangi bir GET ya da POST isteği gönderterek, kurban adına işlem yapması olarak özetlenebilir.
- Hassas işlemlerin GET (URL) isteği gönderilerek yapılıp yapılmadığı kontrol edilmeli. Yapılıyor ise mutlaka token (SessionCode) olarak adlandırılabilecek tek kullanımlık rastgele kodlar üretilip isteklerin doğruluğunu kontrol için kullanılmalı.
- Hassas işlemlerin POST istekleri ile gerçekleştirilmesi durumunda, rastgele ve her işlemde değişen değerlerin kullanıldığından emin olunmalı. Kritik POST isteklerini ortaya çıkarmak için sistemde kullanıcı sahibi olmayı gerektirebilir.
Hiç yorum yok:
Yorum Gönder