Session Hijacking Nedir? Nasıl Önlem Alınır?

gpsq4f1.png


Session Hijacking Nedir?


Session hijacking, web uygulamalarında sıklıkla karşılaşılan bir güvenlik tehdididir. Bu saldırı türünde, bir saldırganın bir kullanıcının oturumunu ele geçirerek, kullanıcının hesabına erişebilmesi mümkün olur. Böylece, saldırganın kullanıcının hesabında işlem yapabilmesi, veri çalabilmesi veya değiştirmesi mümkün hale gelir.

Bir web uygulamasında, kullanıcıların oturumları, sunucuda tutulan session dosyaları aracılığıyla yönetilir. Kullanıcının girdiği kullanıcı adı ve şifre gibi kimlik doğrulama bilgileri, sunucuda bir oturum oluşturmak için kullanılır. Oturum dosyası, kullanıcının oturumunun yönetilmesi için bir oturum anahtarı (session ID) içerir. Bu anahtar, kullanıcının isteklerini sunucuda gerçekleştirmek için kullanılır. Session hijacking saldırısı, bu oturum anahtarının ele geçirilmesi yoluyla gerçekleştirilir.

Session Hijacking Nasıl Çalışır?


Session hijacking saldırıları, genellikle aşağıdaki adımlarla gerçekleştirilir:

  1. Saldırgan, hedef kullanıcının ağ trafiğini izler. Bu, saldırganın aynı ağda olması gerektiği anlamına gelir. Saldırgan, bir ağ analiz aracı kullanarak, hedef kullanıcının isteklerini ve cevaplarını izler.
  2. Hedef kullanıcı, web uygulamasına giriş yapar ve oturum açar. Bu, sunucuda bir oturum dosyası oluşturur ve oturum anahtarı (session ID) alır.
  3. Saldırgan, hedef kullanıcının oturum anahtarını ele geçirmek için bir yöntem kullanır. Bunun için, saldırgan aşağıdaki yöntemlerden birini kullanabilir:
  • Cookie sniffing: Saldırgan, hedef kullanıcının tarayıcısında saklanan oturum çerezini (session cookie) ele geçirir.
  • XSS (Cross-Site Scripting): Saldırgan, bir XSS açığı kullanarak, hedef kullanıcının tarayıcısına kötü amaçlı bir kod enjekte eder ve oturum anahtarını ele geçirir.
  • Man-in-the-Middle (MITM) saldırısı: Saldırgan, ağdaki trafiği dinleyerek, hedef kullanıcının oturum anahtarını ele geçirir.
  1. Saldırgan, ele geçirdiği oturum anahtarını kullanarak, hedef kullanıcının hesabına erişir. Bu, saldırganın hedef kullanıcının adına işlem yapabilmesine olanak sağlar.
  2. Saldırgan, hedef kullanıcının hesabını kullanarak, çeşitli kötü niyetli eylemler gerçekleştirebilir. Örneğin, kullanıcının verilerini değiştirebilir, para transferleri yapabilir, sahte işlemler gerçekleştirebilir veya başka bir kullanıcıya zararlı dosyalar gönderebilir.

Session Hijacking Yöntemleri


Session hijacking saldırıları, farklı yöntemlerle gerçekleştirilebilir. En yaygın yöntemler şunlardır:

  1. Cookie Sniffing: Bu yöntemde, saldırgan aynı ağda olan hedef kullanıcının trafiklerini izler ve HTTP trafiklerinde yer alan oturum çerezlerini ele geçirir. Bu oturum çerezleri, genellikle HTTP başlıklarında yer alır ve saldırganlar tarafından ele geçirildiğinde, saldırganlar oturum anahtarını elde etmiş olurlar.
  2. XSS (Cross-Site Scripting): XSS açıkları, web uygulamalarında sıklıkla görülen bir güvenlik açığıdır. Bu açıklar, saldırganların kötü amaçlı bir kodu web sayfasına enjekte etmelerine izin verir. Bu kod, hedef kullanıcının tarayıcısında çalıştırıldığında, oturum anahtarını ele geçirmek gibi kötü amaçlı eylemler gerçekleştirebilir.
  3. Man-in-the-Middle (MITM) Saldırısı: Bu yöntemde, saldırgan, hedef kullanıcının internet trafiğini dinler ve hedef kullanıcının isteklerine sahte cevaplar gönderir. Bu, saldırganın oturum anahtarını ele geçirmesine olanak sağlar.
  4. Session Fixation: Bu yöntemde, saldırgan, hedef kullanıcının oturum anahtarını önceden belirler ve hedef kullanıcının bu anahtarı kullanmasını sağlar. Bu, saldırganın, hedef kullanıcının oturumunu ele geçirmesine olanak sağlar.

Session Hijacking Önleme Yöntemleri


Session hijacking saldırılarından korunmak için birkaç önlem alınabilir. Bu önlemler şunları içerir:

  1. HTTPS Kullanımı: HTTPS, trafiği şifreleyerek, saldırganların trafiği izlemesini ve oturum anahtarını ele geçirmesini önler.
  2. Güçlü Oturum Anahtarları: Oturum
    anahtarını tahmin etmesini zorlaştırır. Oturum anahtarları, düzenli olarak değiştirilmeli ve depolanırken güvenli bir şekilde şifrelenmelidir.
    1. Kullanıcı Doğrulama: Web uygulamaları, kullanıcıların kimliklerini doğrulamak için oturumları kullanır. Kullanıcıların oturumlarının güvenliği, web uygulamalarının doğru bir şekilde kullanıcı kimliklerini doğrulamasına bağlıdır.
    2. Güncelleme: Web uygulamalarının güncel olması, güvenlik açıklarının azaltılmasına ve güncel güvenlik önlemlerinin uygulanmasına olanak sağlar.
    3. HTTPOnly ve Secure Flag Kullanımı: Oturum çerezleri, HTTPOnly ve Secure flag'leri ile işaretlenebilir. HTTPOnly flag, tarayıcıların, çerezlere JavaScript kodu yoluyla erişmesini önler. Secure flag, yalnızca HTTPS bağlantıları üzerinde oturum çerezlerinin gönderilmesine izin verir.
    4. Kullanıcı Eğitimi: Kullanıcılar, oturumlarının güvenliğine dikkat etmelidir. Örneğin, kullanıcılar, oturumlarını her zaman kapatmalı ve paylaşmamalıdır. Ayrıca, oturum anahtarlarını ve parolalarını güçlü ve tahmin edilmesi zor olan rastgele dizeler olarak seçmelidirler.
    5. Örnek Kod

    Aşağıdaki örnek kod, PHP kullanarak basit bir oturum oluşturur ve bu oturumun nasıl korunacağı hakkında örnekler sunar:


    PHP:
    <?php
    session_start(); // Oturum başlatma
    
    // Oturum anahtarı oluşturma
    if (!isset($_SESSION['key'])) {
        $_SESSION['key'] = bin2hex(random_bytes(32)); // Güçlü rastgele dize
    }
    
    // Oturum anahtarı doğrulama
    if ($_SESSION['key'] !== 'güçlü rastgele dize') {
        session_regenerate_id(true); // Oturum anahtarını yenileme
        $_SESSION = array(); // Oturum verilerini temizleme
        session_destroy(); // Oturumu sonlandırma
        header('Location: login.php'); // Kullanıcıyı oturum açma sayfasına yönlendirme
        exit;
    }
    
    // Güvenli oturum çerezi oluşturma
    session_set_cookie_params([
        'lifetime' => 0, // Oturum süresi
        'path' => '/',
        'domain' => '.example.com', // Web sitesi alan adı
        'secure' => true, // Sadece HTTPS üzerinden iletişim
        'httponly' => true, // Sadece HTTP üzerinden iletişim
        'samesite' => 'Lax', // XSS saldırılarını önleme
    ]);
    session_name('example_session');
    session_start();

    Yukarıdaki koda bakarsak, öncelikle session_start() fonksiyonu kullanılarak oturum başlatılır. Daha sonra, bir oturum anahtarı oluşturulur ve eğer daha önce oluşturulmamışsa $_SESSION değişkeninde depolanır. bin2hex(random_bytes(32)) fonksiyonu kullanılarak güçlü bir rastgele dize oluşturulur.

    Daha sonra, oturum anahtarının doğruluğunu kontrol ederiz. Eğer oturum anahtarı doğru değilse, oturum anahtarını yenileriz, oturum verilerini temizleriz, oturumu sonlandırırız ve kullanıcıyı oturum açma sayfasına yönlendiririz.

    Son olarak, session_set_cookie_params() fonksiyonu kullanılarak güvenli bir oturum çerezi oluşturulur. lifetime parametresi, oturumun süresini belirler. path ve domain parametreleri, oturum çerezi için kullanılan yol ve alan adını belirler. secure parametresi, oturum çerezinin sadece HTTPS üzerinden iletilmesini sağlar. httponly parametresi, oturum çerezine sadece HTTP üzerinden erişim sağlar. samesite parametresi, XSS saldırılarını önlemek için kullanılır.

    Son olarak, session_name() fonksiyonu kullanılarak oturumun adı belirlenir ve session_start() fonksiyonu tekrar kullanılarak oturum başlatılır.

    Sonuç olarak, oturum hijacking, web uygulamaları için önemli bir güvenlik riskidir. Ancak, oturum hijacking saldırılarını önlemek için kullanabileceğimiz birçok yöntem vardır. Bu makalede, oturum hijacking'in ne olduğunu ve nasıl önleyebileceğimizi anlattık. Ayrıca, örnek bir kodla, oturumlarımızı nasıl daha güvenli hale getirebileceğimizi de gösterdik.
 

Tengry

Üye
22 Şub 2023
76
46
Ötüken

gpsq4f1.png

Session Hijacking Nedir?


Session hijacking, web uygulamalarında sıklıkla karşılaşılan bir güvenlik tehdididir. Bu saldırı türünde, bir saldırganın bir kullanıcının oturumunu ele geçirerek, kullanıcının hesabına erişebilmesi mümkün olur. Böylece, saldırganın kullanıcının hesabında işlem yapabilmesi, veri çalabilmesi veya değiştirmesi mümkün hale gelir.

Bir web uygulamasında, kullanıcıların oturumları, sunucuda tutulan session dosyaları aracılığıyla yönetilir. Kullanıcının girdiği kullanıcı adı ve şifre gibi kimlik doğrulama bilgileri, sunucuda bir oturum oluşturmak için kullanılır. Oturum dosyası, kullanıcının oturumunun yönetilmesi için bir oturum anahtarı (session ID) içerir. Bu anahtar, kullanıcının isteklerini sunucuda gerçekleştirmek için kullanılır. Session hijacking saldırısı, bu oturum anahtarının ele geçirilmesi yoluyla gerçekleştirilir.

Session Hijacking Nasıl Çalışır?


Session hijacking saldırıları, genellikle aşağıdaki adımlarla gerçekleştirilir:

  1. Saldırgan, hedef kullanıcının ağ trafiğini izler. Bu, saldırganın aynı ağda olması gerektiği anlamına gelir. Saldırgan, bir ağ analiz aracı kullanarak, hedef kullanıcının isteklerini ve cevaplarını izler.
  2. Hedef kullanıcı, web uygulamasına giriş yapar ve oturum açar. Bu, sunucuda bir oturum dosyası oluşturur ve oturum anahtarı (session ID) alır.
  3. Saldırgan, hedef kullanıcının oturum anahtarını ele geçirmek için bir yöntem kullanır. Bunun için, saldırgan aşağıdaki yöntemlerden birini kullanabilir:
  • Cookie sniffing: Saldırgan, hedef kullanıcının tarayıcısında saklanan oturum çerezini (session cookie) ele geçirir.
  • XSS (Cross-Site Scripting): Saldırgan, bir XSS açığı kullanarak, hedef kullanıcının tarayıcısına kötü amaçlı bir kod enjekte eder ve oturum anahtarını ele geçirir.
  • Man-in-the-Middle (MITM) saldırısı: Saldırgan, ağdaki trafiği dinleyerek, hedef kullanıcının oturum anahtarını ele geçirir.
  1. Saldırgan, ele geçirdiği oturum anahtarını kullanarak, hedef kullanıcının hesabına erişir. Bu, saldırganın hedef kullanıcının adına işlem yapabilmesine olanak sağlar.
  2. Saldırgan, hedef kullanıcının hesabını kullanarak, çeşitli kötü niyetli eylemler gerçekleştirebilir. Örneğin, kullanıcının verilerini değiştirebilir, para transferleri yapabilir, sahte işlemler gerçekleştirebilir veya başka bir kullanıcıya zararlı dosyalar gönderebilir.

Session Hijacking Yöntemleri


Session hijacking saldırıları, farklı yöntemlerle gerçekleştirilebilir. En yaygın yöntemler şunlardır:

  1. Cookie Sniffing: Bu yöntemde, saldırgan aynı ağda olan hedef kullanıcının trafiklerini izler ve HTTP trafiklerinde yer alan oturum çerezlerini ele geçirir. Bu oturum çerezleri, genellikle HTTP başlıklarında yer alır ve saldırganlar tarafından ele geçirildiğinde, saldırganlar oturum anahtarını elde etmiş olurlar.
  2. XSS (Cross-Site Scripting): XSS açıkları, web uygulamalarında sıklıkla görülen bir güvenlik açığıdır. Bu açıklar, saldırganların kötü amaçlı bir kodu web sayfasına enjekte etmelerine izin verir. Bu kod, hedef kullanıcının tarayıcısında çalıştırıldığında, oturum anahtarını ele geçirmek gibi kötü amaçlı eylemler gerçekleştirebilir.
  3. Man-in-the-Middle (MITM) Saldırısı: Bu yöntemde, saldırgan, hedef kullanıcının internet trafiğini dinler ve hedef kullanıcının isteklerine sahte cevaplar gönderir. Bu, saldırganın oturum anahtarını ele geçirmesine olanak sağlar.
  4. Session Fixation: Bu yöntemde, saldırgan, hedef kullanıcının oturum anahtarını önceden belirler ve hedef kullanıcının bu anahtarı kullanmasını sağlar. Bu, saldırganın, hedef kullanıcının oturumunu ele geçirmesine olanak sağlar.

Session Hijacking Önleme Yöntemleri


Session hijacking saldırılarından korunmak için birkaç önlem alınabilir. Bu önlemler şunları içerir:

  1. HTTPS Kullanımı: HTTPS, trafiği şifreleyerek, saldırganların trafiği izlemesini ve oturum anahtarını ele geçirmesini önler.
  2. Güçlü Oturum Anahtarları: Oturum
    anahtarını tahmin etmesini zorlaştırır. Oturum anahtarları, düzenli olarak değiştirilmeli ve depolanırken güvenli bir şekilde şifrelenmelidir.
    1. Kullanıcı Doğrulama: Web uygulamaları, kullanıcıların kimliklerini doğrulamak için oturumları kullanır. Kullanıcıların oturumlarının güvenliği, web uygulamalarının doğru bir şekilde kullanıcı kimliklerini doğrulamasına bağlıdır.
    2. Güncelleme: Web uygulamalarının güncel olması, güvenlik açıklarının azaltılmasına ve güncel güvenlik önlemlerinin uygulanmasına olanak sağlar.
    3. HTTPOnly ve Secure Flag Kullanımı: Oturum çerezleri, HTTPOnly ve Secure flag'leri ile işaretlenebilir. HTTPOnly flag, tarayıcıların, çerezlere JavaScript kodu yoluyla erişmesini önler. Secure flag, yalnızca HTTPS bağlantıları üzerinde oturum çerezlerinin gönderilmesine izin verir.
    4. Kullanıcı Eğitimi: Kullanıcılar, oturumlarının güvenliğine dikkat etmelidir. Örneğin, kullanıcılar, oturumlarını her zaman kapatmalı ve paylaşmamalıdır. Ayrıca, oturum anahtarlarını ve parolalarını güçlü ve tahmin edilmesi zor olan rastgele dizeler olarak seçmelidirler.
    5. Örnek Kod

    Aşağıdaki örnek kod, PHP kullanarak basit bir oturum oluşturur ve bu oturumun nasıl korunacağı hakkında örnekler sunar:


    PHP:
    <?php
    session_start(); // Oturum başlatma
    
    // Oturum anahtarı oluşturma
    if (!isset($_SESSION['key'])) {
        $_SESSION['key'] = bin2hex(random_bytes(32)); // Güçlü rastgele dize
    }
    
    // Oturum anahtarı doğrulama
    if ($_SESSION['key'] !== 'güçlü rastgele dize') {
        session_regenerate_id(true); // Oturum anahtarını yenileme
        $_SESSION = array(); // Oturum verilerini temizleme
        session_destroy(); // Oturumu sonlandırma
        header('Location: login.php'); // Kullanıcıyı oturum açma sayfasına yönlendirme
        exit;
    }
    
    // Güvenli oturum çerezi oluşturma
    session_set_cookie_params([
        'lifetime' => 0, // Oturum süresi
        'path' => '/',
        'domain' => '.example.com', // Web sitesi alan adı
        'secure' => true, // Sadece HTTPS üzerinden iletişim
        'httponly' => true, // Sadece HTTP üzerinden iletişim
        'samesite' => 'Lax', // XSS saldırılarını önleme
    ]);
    session_name('example_session');
    session_start();

    Yukarıdaki koda bakarsak, öncelikle session_start() fonksiyonu kullanılarak oturum başlatılır. Daha sonra, bir oturum anahtarı oluşturulur ve eğer daha önce oluşturulmamışsa $_SESSION değişkeninde depolanır. bin2hex(random_bytes(32)) fonksiyonu kullanılarak güçlü bir rastgele dize oluşturulur.

    Daha sonra, oturum anahtarının doğruluğunu kontrol ederiz. Eğer oturum anahtarı doğru değilse, oturum anahtarını yenileriz, oturum verilerini temizleriz, oturumu sonlandırırız ve kullanıcıyı oturum açma sayfasına yönlendiririz.

    Son olarak, session_set_cookie_params() fonksiyonu kullanılarak güvenli bir oturum çerezi oluşturulur. lifetime parametresi, oturumun süresini belirler. path ve domain parametreleri, oturum çerezi için kullanılan yol ve alan adını belirler. secure parametresi, oturum çerezinin sadece HTTPS üzerinden iletilmesini sağlar. httponly parametresi, oturum çerezine sadece HTTP üzerinden erişim sağlar. samesite parametresi, XSS saldırılarını önlemek için kullanılır.

    Son olarak, session_name() fonksiyonu kullanılarak oturumun adı belirlenir ve session_start() fonksiyonu tekrar kullanılarak oturum başlatılır.

    Sonuç olarak, oturum hijacking, web uygulamaları için önemli bir güvenlik riskidir. Ancak, oturum hijacking saldırılarını önlemek için kullanabileceğimiz birçok yöntem vardır. Bu makalede, oturum hijacking'in ne olduğunu ve nasıl önleyebileceğimizi anlattık. Ayrıca, örnek bir kodla, oturumlarımızı nasıl daha güvenli hale getirebileceğimizi de gösterdik.
eline sağlık faydalı
 

Phobos'

Uzman üye
22 Nis 2022
1,744
1,365
"Mükemmel" diye bir kelime olmasaydı da ben bu konuya "Mükemmel" derdim.

Elinize sağlık.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.