Oturum yönetimi ve oturum sabitleme
- Oturum kimliğinin üretimini, yenilenmesini ve çerez bayraklarını test edip oturum sabitleme zincirini kırmayı öğrenirsin.
- Oturum kimliği, giriş yapmış kullanıcının tek kanıtıdır.
- Zinciri kıran tek adım, girişte oturum kimliğini yenilemektir.
Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +50 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
HTTP her isteği birbirinden bağımsız görür; kendiliğinden kimseyi hatırlamaz. Uygulama seni hatırlasın diye bir oturum kimliği üretir ve tarayıcı onu çerezde taşır.
O kimlik elinde olan kişi senin adına konuşur. Yani oturum kimliği, bir süreliğine sabit bir parola gibi davranır. Bu yüzden kimliğin üretimi, saklanması ve ömrü aynı parola kadar ciddiye alınır.
Testte iki soruyu ayrı ayrı sorarsın: kimlik tahmin edilebilir mi ve kimlik ne zaman yenilenir? İkinci soru çoğu ekipte gözden kaçar. Ekipler kimlik üretimine güvenir ama yaşam döngüsünü aynı titizlikle tasarlamaz. Oysa güçlü üretilmiş bir kimlik bile yanlış anda yenilenmezse hesap devralmaya kapı açar.
Oturum sabitleme
Oturum sabitleme saldırısı şöyle işler. Saldırgan siteden geçerli bir oturum kimliği alır. Sonra o kimliği kurbanın tarayıcısına yerleştirir.
Bir bağlantı, devralınmış bir alt alan adı ya da eski bir enjeksiyon açığı bunu yapar. Kurban aynı kimlikle giriş yapar. Sunucu girişte kimliği yenilemezse, aynı değer artık yetkili bir oturuma karşılık gelir.
Saldırgan elindeki kimliği kullanır, parolayı hiç bilmeden panele girer ve kurbanın yerine işlem yaparak hesabı ele geçirir. Dikkat et: saldırgan kimliği çalmıyor, önceden dikip kurbanın onu yetkilendirmesini bekliyor. Bu ayrım savunmanın nereye konacağını da belirler.
Zincirin nerede kırıldığını görmek testin özüdür. Saldırganın kimliği alması, kurbana taşıması ve kurbanın giriş yapması engellenmesi zor adımlardır. Ama sunucunun girişte kimliği yenilemesi tamamen savunmanın elindedir.
Yetki seviyesi değiştiği an, yani kimliksiz ziyaretçi giriş yapmış kullanıcıya döndüğü an, eski kimlik atılır ve yeni bir kimlik üretilir. Böylece saldırganın önceden diktiği değer bir işe yaramaz. CWE-384 bu zafiyeti tam olarak şöyle tanımlar: yeni bir oturum kurarken var olan kimliği geçersiz kılmamak. Test ederken giriş yanıtında yeni bir Set-Cookie başlığı arar, aynı değerin sürüp sürmediğine bakarsın.
Etkinlik 1 / 6
Oturum sabitleme testi yapıyorsun. Giriş isteğine, girişten önce aldığın çerezi taşı.
İsteği tamamla ve gönder.
Aynı saldırıyı bir kez de adım adım düşün. Saldırgan geçerli bir kimlik alır, onu kurbana taşır, kurban giriş yapar, sunucu kimliği yenilemez ve saldırgan aynı kimlikle içeri girer. Bu beş adımı ezberlemek değil, hangisini savunmanın kestiğini görmek önemlidir.
İlk üç adım büyük ölçüde kurbanın ve saldırganın davranışına bağlıdır; dördüncü adım ise tümüyle sunucunun kararıdır. Bir savunmacı olarak enerjini bu tek adıma, yani girişte kimliği yenilemeye yoğunlaştırırsan zinciri en ucuz yerinden kırarsın. Saldırının adımlarını doğru sırayla görmek, hangi kontrolün nereye konacağını da netleştirir.
Etkinlik 2 / 6
Oturum sabitleme saldırısının adımlarını laboratuvar akışına göre sırala.
Bir öğeye odaklan, yukarı ve aşağı ok tuşlarıyla taşı. Home tuşu en üste, End tuşu en alta alır.
- 1Saldırgan aynı kimlikle yetkili oturuma girer
- 2Sunucu kimliği yenilemez
- 3Kurban aynı kimlikle giriş yapar
- 4Saldırgan siteden geçerli bir oturum kimliği alır
- 5Kimliği kurbanın tarayıcısına taşır
Kimlik yenileme
Kimlik yenileme yalnız giriş anına ait bir kural değildir. Yetki seviyesi değişen her nokta aynı işlemi ister. Parola değişimi, iki adımlı doğrulamanın tamamlanması ve rol yükseltme anlarında kimlik yenilenir.
Yalnız giriş anını düşünmek eksik kalır, çünkü bir saldırgan düşük yetkili bir oturumu dikip kurbanın onu yükseltmesini de bekleyebilir. OWASP oturum kılavuzu bunu net söyler: oturum kimliği, ilişkili oturumdaki her yetki değişiminden sonra yeniden üretilmelidir. Yenileme, eski değeri gerçekten geçersiz kılmalı; yalnız yeni bir çerez yollayıp eskisini sunucuda ayakta bırakmak koruma vermez.
Bu kuralı test ederken her yetki geçişini ayrı ayrı denersin. Giriş öncesi, giriş sonrası ve çıkış sonrası çerez değerini yan yana kaydedersin. Üç değer arasındaki fark, oturum yönetiminin kalitesini tek tabloda gösterir. Aynı yaklaşımı parola değişimi ve rol yükseltme için de tekrarlarsın.
Değişmeyen bir kimlik gördüğün her nokta bir bulgu satırıdır. Kullandığın hesabı da not edersin, çünkü oturum davranışı role göre değişebilir; yönetici oturumu farklı bir ömre sahipse bu ayrı bir bulgu olur ve rapora ayrı satır olarak girer.
# 1. Giriş öncesi: sunucunun verdiği çerezi kaydet
$ curl -s -D - -o /dev/null https://panel.altaykargo.test/giris | grep -i set-cookie
Set-Cookie: oturum=3f9c1a7e52b84d06; Path=/; Secure; HttpOnly; SameSite=Lax
# 2. Aynı çerezle test hesabına giriş yap
$ curl -s -D - -o /dev/null -b oturum=3f9c1a7e52b84d06 \
-d 'kullanici=test1&parola=Deneme-2026' https://panel.altaykargo.test/giris
HTTP/1.1 302 Found
Location: /panel
# 3. Çıkış yaptıktan sonra eski değerle paneli iste
$ curl -s -o /dev/null -w '%{http_code}\n' -b oturum=3f9c1a7e52b84d06 https://panel.altaykargo.test/panel
200Örneği satır satır oku. Birinci komutta -D - seçeneği yanıt başlıklarını ekrana döker, grep de yalnız Set-Cookie satırını süzer. Sunucu girişten önce oturum=3f9c1a7e52b84d06 değerini veriyor; bu değeri not edersin.
İkinci komut aynı değeri -b ile geri yollar ve test hesabıyla giriş yapar. Yanıtta yeni bir Set-Cookie satırı yok. Sunucu girişten önceki kimliği olduğu gibi yetkili oturuma çevirmiş; sabitleme açığının kanıtı tam olarak budur.
Üçüncü komut çıkıştan sonra aynı değerle paneli ister ve 200 alır. Kimlik sunucuda iptal edilmemiş, demek ki ikinci bir bulgu daha var. Sağlam bir uygulamada ikinci adımda yeni bir değer gelir, üçüncü adım ise giriş sayfasına yönlendirir. Üç değeri bir tabloya koyduğunda fark tek bakışta görünür.
Etkinlik 3 / 6
Oturum sabitlemeyi kesen temel önlem hangisidir?
Kimlik üretimi ve ömür
Kimlik üretiminin kalitesi ayrı bir kontrol başlığıdır. Kimlik kriptografik rastgele üreticiden gelmeli ve yeterli uzunlukta olmalıdır. OWASP oturum kılavuzu bunu somut bir eşiğe bağlar: kimlik en az 64 bit entropi taşımalı, onaltılık yazımda en az 16 karakter olmalıdır.
Artan sayaç ya da zaman damgası üstüne kurulmuş kimlikler tahmin edilebilir kalır ve dar bir arama uzayı bırakır. İsimlendirme de küçük bir ipucu verir. Çerçevelerin öntanımlı çerez adları teknolojiyi ele verir. Bu adı genel bir değere çevirmek, saldırganın hangi yığını hedeflediğini anlamasını zorlaştırır ve otomatik araçların kalıp eşlemesini bozar.
Oturum ömrü de testin parçasıdır ve iki tür zaman aşımı birlikte çalışır. Hareketsizlik zaman aşımı, kullanıcı bir süre işlem yapmayınca oturumu düşürür. Mutlak zaman aşımı ise oturuma bir üst sınır koyar; kullanıcı aktif olsa bile bu süre dolunca yeniden giriş ister.
OWASP kılavuzu yüksek değerli uygulamalarda hareketsizlik için iki ile beş dakikayı, düşük riskli uygulamalarda on beş ile otuz dakikayı örnek verir. NIST 800-63B-4 orta güvence seviyesinde mutlak süreyi en fazla yirmi dört saat, hareketsizlik süresini en fazla bir saat olarak önerir. Sonsuza kadar yaşayan bir oturum, çalınan çerezi kalıcı bir anahtara çevirir.
Kimliğin nasıl saklandığı da bir tasarım kararıdır. Sunucuda tutulan oturum, bir kayıt olarak durur ve tek satır silinerek anında iptal edilir. İstemcide tutulan imzalı oturum ise ölçeklenir, çünkü sunucu durum tutmaz; ama iptali ayrı bir mekanizma ister, tıpkı jetonlarda olduğu gibi. Bu iki yaklaşımın ödünleşimini bilmek, bir bulgunun ağırlığını doğru tartmana yarar.
Sunucu tarafı oturumda eksik iptal kolay düzeltilir; istemci tarafı imzalı oturumda ise iptal yolu baştan tasarlanmamışsa, çalınan bir oturumu geri almak çok daha zordur. Testte hangi modelin kullanıldığını önce belirler, sorularını ona göre yöneltirsin.
Etkinlik 4 / 6
Bir oturum kimliği kaba kuvvete karşı en az kaç bit entropi taşımalıdır (OWASP)? ____
Çerez bayrakları
Çerez bayrakları savunmanın ikinci katmanıdır ve her biri ayrı bir saldırıyı keser. HttpOnly bayrağı betiğin çerezi okumasını engeller, böylece bir XSS oturum kimliğini dışarı taşıyamaz. Secure bayrağı çerezi yalnız şifreli bağlantıya bağlar, ağı dinleyen kişinin onu düz metinde görmesini önler.
SameSite bayrağı çerezin siteler arası isteklerde gönderilmesini sınırlar; Strict en katı, Lax ortadaki dengeli seçenektir ve siteler arası istek sahteciliğini zorlaştırır. SameSite değeri None yapılırsa çerez Secure bayrağı olmadan kabul edilmez. Bu bayraklar birbirini tamamlar, biri diğerinin yerini tutmaz.
Çerezin kapsamı da bir savunma ayarıdır. Domain alanı yazılmazsa çerez yalnız onu üreten ana bilgisayara döner ve alt alan adları onu göremez. Domain yazılırsa bütün alt alan adları çereze erişir. Devralınmış tek bir alt alan adı böylece oturum çerezini okuyabilen bir konuma dönüşür.
__Host- öneki bu riski daha da daraltır. Bu önekli çerez yalnız tam alan adına ve kök yola bağlanır, Domain alanı taşımaz ve alt alan adından ekilemez. Devralınmış bir alt alandan çerez fırlatma denemesi böylece kırılır. OWASP kılavuzu oturum kimlikleri için bu öneki açıkça önerir.
Etkinlik 5 / 6
Çerez bayrağını görevi ile eşleştir.
Çıkış ve eşzamanlı oturum
Çıkış davranışı testin ayrı bir parçasıdır. Çıkış yapınca kimlik yalnız tarayıcıdan silinmez, sunucuda da geçersiz kılınır. Bu ikincisi asıl önemli olandır, çünkü kopyası elinde olan kişi tarayıcıdaki silmeyi hiç görmez. Sunucu tarafında iptal edilmeyen bir oturum, kullanıcı çıkış yaptığını sansa bile davetsiz misafir için açık kalır.
Testte çıkıştan sonra eski çerezi tekrar yollar ve sunucunun onu hâlâ kabul edip etmediğine bakarsın. Kabul ediyorsa çıkış işlevi görünüşten ibarettir. Oturum kimliğini adres çubuğunda taşımak da hâlâ görülür; adres tarayıcı geçmişine, sunucu kayıtlarına ve yönlendiren başlığına düşer, bu yüzden kimlik yalnız çerezde durur.
Eşzamanlı oturum davranışı da sorulur. Kullanıcı üç farklı cihazdan girdiğinde hepsi görünür mü ve panelden tek tek düşürülebilir mi? Bu yetenek olmadan kullanıcı, şüphelendiği bir erişimi kendi kesemez.
İyi bir tasarım aktif oturumları listeler, tanıdık olmayan bir konum ya da tarayıcı imzası gördüğünde kullanıcıyı uyarır ve tek dokunuşla uzaktaki oturumu kapatma imkânı verir. Testin sonunda kimlik üretimi, yenileme, ömür, bayraklar ve çıkış davranışını tek tabloda özetlersin. Müşteri eksik satırı bir bakışta görür ve öncelik sırasını kolayca kurar.
Savunma ekibi için bu davranışların hepsi izlenebilir. Aynı hesaba çok kısa sürede birbirinden uzak konumlardan gelen oturumlar, bir kimlik hırsızlığının işareti olabilir ve bir kurala bağlanır. Kullanıcı aracısının ya da ağ adresinin oturum ortasında beklenmedik biçimde değişmesi de aynı biçimde öne çıkarılır.
Sunucu, ürettiği ve geçersiz kıldığı her oturum kimliğini kaydederse, iptal edilmiş bir kimliğin yeniden kullanılmaya çalışılması hemen fark edilir. Bu yüzden oturum yönetimi yalnız bir önleme değil, aynı zamanda bir tespit yüzeyidir; iyi bir rapor bulunan boşluğun yanında bu tespit fırsatını da anar.
Etkinlik 6 / 6
Doğru mu, yanlış mı?
Çıkış yapınca oturumu yalnız tarayıcıdan silmek yeterlidir.
Derinleş:Oturum sabitleme: 2002'den bugüne
Oturum sabitleme adını, güvenlik araştırmacısı Mitja Kolšek'in 2002 Aralık ayında ACROS Security için yazdığı Session Fixation Vulnerability in Web-based Applications adlı makale koydu. Kolšek, o güne kadar bilinen üç saldırı sınıfına, yani kimliği araya girip yakalamaya, tahmin etmeye ve kaba kuvvetle denemeye bir dördüncüyü ekledi: kimliği önceden sabitlemek.
Makalenin gösterdiği çözüm bugün de geçerli: kullanıcı giriş yaptığı anda sunucu yeni bir oturum kimliği üretmelidir. Bu zafiyet daha sonra CWE-384 numarasıyla ortak zayıflık sözlüğüne girdi ve OWASP Top 10:2025 listesinde kimlik doğrulama hataları başlığı altında hâlâ örneklenir. Yirmi yılı aşkın süredir bilinen bu hatanın çözümü tek satırlıktır, ama girişte kimlik yenileme adımını atlamak yaygın olmayı sürdürür.
Derinleş:Çerez öneki nasıl çalışır
Tarayıcı, adı __Host- ile başlayan bir çerezi yalnız belirli kurallar sağlanırsa kabul eder: çerez Secure bayrağı taşımalı, Domain alanı olmamalı ve Path=/ ile ayarlanmalıdır. Bu kurallar bir arada, çerezin yalnız onu üreten tam ana bilgisayara ait olduğunu ve o ana bilgisayarda hiçbir yoldan üzerine yazılamayacağını garanti eder.
Daha gevşek olan __Secure- öneki ise yalnız Secure bayrağını ve şifreli bir kaynaktan üretilmiş olmayı ister. Öneklerin gücü, kuralı sunucuya değil tarayıcıya uygulatmasındadır: kötü yapılandırılmış ya da devralınmış bir alt alan, __Host- önekli bir çerezi taklit edemez, çünkü tarayıcı bu adı taşıyan uygunsuz çerezi baştan reddeder. Oturum kimlikleri için OWASP kılavuzu bu öneki açıkça önerir.
Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.