TR | EN | DE | Our Site

PEN-200'de SQL Enjeksiyon

 

 PEN-200'de SQL Enjeksiyon

    SQL Injection (SQLi), web uygulamalarında yaygın ve kritik bir güvenlik açığıdır ve PEN-200 dersinde önemli bir odak noktasıdır. 

SQL Enjeksiyonunu Anlamak

    SQL Enjeksiyonu, bir saldırganın bir web uygulamasındaki giriş alanları aracılığıyla SQL sorguları ekleyebildiği veya bunları değiştirebildiği zaman meydana gelir. Bu güvenlik açığı, yetersiz giriş doğrulamasından kaynaklanır ve saldırganların veritabanına karşı keyfi SQL kodu yürütmesine olanak tanır. Etkileri, yetkisiz veri erişiminden veritabanı sunucusu üzerinde tam kontrole kadar değişebilir.

SQL Enjeksiyon Tekniklerinin Türleri

  1. Klasik SQL Enjeksiyonu :
    • Bu, kötü amaçlı SQL kodunu doğrudan giriş alanlarına enjekte etmeyi içerir. Örneğin, arka uç sorgusunun şu olduğu bir oturum açma formunu düşünün:
      sql
      SELECT * FROM users WHERE username='$username' AND password='$password';
    • Bir saldırgan şunları girebilir:
      metin
      $username = 'admin' OR '1'='1'; $password = 'any_password';
    • Sonuçta ortaya çıkan sorgu şu şekilde olacaktır:
      sql
      SELECT * FROM users WHERE username='admin' OR '1'='1' AND password='any_password';
    • Bu sorgu her zaman true değerini döndürecek ve yetkisiz erişime izin verecektir.
  2. Birliğe Dayalı SQL Enjeksiyonu :
  3. Hata Tabanlı SQL Enjeksiyonu :
    • Bu yöntem, veritabanı tarafından döndürülen hata mesajlarını kullanarak bilgi çıkarır. Sorgularda kasıtlı olarak hatalara neden olarak saldırganlar, veritabanı yapısı hakkında içgörüler elde edebilir.
    • Örneğin, geçersiz bir sütun adı kullanılması, mevcut sütunları ortaya çıkaran bir hata mesajına neden olabilir.
  4. Kör SQL Enjeksiyonu :
    • Hata mesajlarının bastırıldığı senaryolarda bile saldırganlar, uygulamanın yanıt süresine veya davranışına dayanarak bilgi çıkarabilirler.
    • Örneğin, şu gibi koşullu ifadelerle zaman gecikmelerini kullanmak:
      sql
      IF (SELECT COUNT(*) FROM users) > 0 WAITFOR DELAY '00:00:05';
    • Uygulamanın yanıt vermesi daha uzun sürerse, bu koşulun doğru olduğu anlamına gelir.

SQL Enjeksiyonunu Kullanmanın Pratik Örneği

Bir saldırganın güvenlik açığı olan bir web uygulamasını hedef aldığı pratik bir senaryoyu örnekleyelim:

Senaryo: Kullanıcı Verilerine Erişim

  1. Güvenlik Açığının Belirlenmesi :
    • Bir saldırgan, uygulamanın uygun bir temizleme yapılmadan doğrudan veritabanıyla etkileşime giren bir arama özelliğine sahip olduğunu keşfeder.
  2. Kötü Amaçlı Girdi Oluşturma :
    • Saldırgan şunu girer:
      metin
      ' OR '1'='1'; --
    • Bu girdi, temeldeki SQL sorgusunu şu şekilde değiştirir:
      sql
      SELECT * FROM users WHERE username='' OR '1'='1'; --';
  3. Veri Alınıyor :
  4. Ek Verileri Çıkarmak İçin UNION Kullanımı :
    • Saldırganın başka bir tablodan hassas bilgileri almak istediğini varsayalım. Şunu deneyebilirler:
      sql
      ' UNION SELECT username, password FROM users; --
    • Uygulamanın etkili bir şekilde çalışması için eşleşen sütun sayısına sahip sonuçlar döndürmesi gerekir.
  5. Sömürünün Sonlandırılması :
    • Başarılı enjeksiyon ve veri alımının doğrulanmasının ardından saldırgan, bu erişimi ayrıcalık yükseltme veya veri sızdırma gibi daha ileri istismarlar için kullanabilir.

Çözüm

SQL enjeksiyon açıklarını anlamak ve kullanmak, PEN-200 kursuna katılan penetrasyon test uzmanları için hayati önem taşır. Çeşitli enjeksiyon tekniklerinde (klasik, birleşim tabanlı, hata tabanlı ve kör) ustalık, test uzmanlarının web uygulamalarındaki açıkları etkili bir şekilde değerlendirmesini ve göstermesini sağlar. Bu süreçlerin uygun şekilde belgelenmesi, sınav gerekliliklerine uyum sağlamak ve değerlendirmeler sırasında açık bir şekilde istismar kanıtı sağlamak için önemlidir.

Yorum Gönder

Daha yeni Daha eski

İletişim Formu