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
- 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:
- Bir saldırgan şunları girebilir:
- Sonuçta ortaya çıkan sorgu şu şekilde olacaktır:
- Bu sorgu her zaman true değerini döndürecek ve yetkisiz erişime izin verecektir.
- 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:
- Birliğe Dayalı SQL Enjeksiyonu :
- 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.
- 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:
- 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
- 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.
- Kötü Amaçlı Girdi Oluşturma :
- Saldırgan şunu girer:
- Bu girdi, temeldeki SQL sorgusunu şu şekilde değiştirir:
- Saldırgan şunu girer:
- Veri Alınıyor :
- Ek Verileri Çıkarmak İçin UNION Kullanımı :
- Saldırganın başka bir tablodan hassas bilgileri almak istediğini varsayalım. Şunu deneyebilirler:
- Uygulamanın etkili bir şekilde çalışması için eşleşen sütun sayısına sahip sonuçlar döndürmesi gerekir.
- Saldırganın başka bir tablodan hassas bilgileri almak istediğini varsayalım. Şunu deneyebilirler:
- 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.