Merhabalar,
SQL Injection (SQLi), en yaygın ve en tehlikeli web uygulaması güvenlik açıklarından biridir. Saldırganların zararlı SQL sorguları enjekte ederek bir uygulamanın veritabanını manipüle etmesine izin verir. Bu durum yetkisiz erişime, veri hırsızlığına ve hatta veritabanının tamamen kontrol edilmesine yol açabilir. Aşağıda, saldırganların SQL Injection’ı nasıl gerçekleştirdiği, saldırı türleri ve korunma yöntemleri detaylıca açıklanmıştır.Bölüm 1: SQL Injection Nedir?
SQL Injection, saldırganların giriş alanlarına (ör. giriş formları, arama kutuları) zararlı SQL sorguları yerleştirerek veritabanını manipüle etmesine olanak tanıyan bir kod enjeksiyonu tekniğidir. Uygulama, kullanıcı girdilerini doğru şekilde doğrulamaz veya filtrelemezse bu zararlı sorgu çalıştırılır ve saldırgana hassas verilere erişim imkânı verir.
SQL Injection Neden Tehlikelidir?
- Veri Hırsızlığı: Kullanıcı adı, şifre, kredi kartı bilgileri gibi kritik veriler çalınabilir.
- Veri Manipülasyonu: Veritabanındaki veriler silinebilir, değiştirilebilir veya ekleme yapılabilir.
- Tam Sistem Ele Geçirme: Bazı durumlarda SQLi, sunucuda komut çalıştırmaya kadar gidebilir.
Bölüm 2: SQL Injection Nasıl Çalışır?
SQL Injection, uygulamanın veritabanı ile etkileşiminde bulunan güvenlik açıklarını hedef alır. İşte adım adım saldırı süreci:
Adım 1: Açık Olan Giriş Alanlarının Belirlenmesi
Saldırganlar veritabanı ile etkileşime giren alanları araştırır:
- Giriş formları
- Arama kutuları
- URL parametreleri
- HTTP başlıkları
Adım 2: Zararlı SQL Sorgularının Enjekte Edilmesi
Saldırgan bu alanlara zararlı SQL kodu yazar. Örneğin:
- Giriş Formu:
SQL:
' OR '1'='1
Eğer uygulama şu sorguyu çalıştırıyorsa:
SQL:
SELECT * FROM users WHERE username = '[input]' AND password = '[input]';
Enjekte edilen sorgu şu hale gelir:
SQL:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '' OR '1'='1';
Bu her zaman true döner ve kimlik doğrulama atlanır.
- Arama Kutusu:
SQL:
'; DROP TABLE users; --
Bu sorgu users tablosunu veritabanından tamamen silebilir.
Adım 3: Açığın İstismar Edilmesi
Sorgu çalıştırıldığında saldırgan:
- Kullanıcı adı, şifre, kredi kartı gibi verileri çekebilir.
- Verileri değiştirebilir veya silebilir.
- Sunucuda zararlı yazılım çalıştırabilir.
Bölüm 3: SQL Injection Saldırı Türleri
1. Klasik SQL Injection
- In-Band SQLi: Saldırgan, aynı kanal üzerinden saldırı yapıp sonuçları alır.
- Union-Based SQLi: UNION operatörü ile birden fazla sorgunun sonuçları birleştirilir.
- Error-Based SQLi: Hata mesajlarından veritabanı yapısı hakkında bilgi alınır.
2. Blind (Kör) SQL Injection
- Sonuçlar doğrudan görünmez, saldırgan uygulamanın davranışına göre bilgi çıkarır.
- Boolean-Based Blind: True/False mantığına göre sonuç alınır.
- Time-Based Blind: Sorgunun ne kadar sürdüğüne göre bilgi çıkarılır.
3. Out-of-Band SQL Injection
- Farklı iletişim kanalları (ör. DNS, HTTP isteği) kullanılarak veri elde edilir.
Bölüm 4: SQL Injection’ın Gerçek Hayat Örnekleri
Örnek 1: Sony Pictures (2011)
SQL Injection ile 1 milyondan fazla kullanıcının kişisel verisi (şifreler, kredi kartları) çalındı.
Örnek 2: Heartland Payment Systems (2008)
SQL Injection ile sisteme zararlı yazılım yüklendi, 130 milyondan fazla kredi kartı bilgisi sızdırıldı.
Örnek 3: TalkTalk (2015)
SQL Injection açığı sayesinde 157.000 müşterinin verileri ele geçirildi ve şirkete £400.000 ceza kesildi.
Bölüm 5: SQL Injection’a Karşı Korunma Yöntemleri
1. Parametreli Sorgular Kullanmak
SQL sorgusu ile kullanıcı girişi ayrıştırılır, zararlı kod çalıştırılamaz.
2. Girdi Doğrulama ve Temizleme
Kullanıcıdan gelen veriler formatına göre doğrulanmalı ve filtrelenmelidir.
3. Stored Procedure Kullanmak
Önceden tanımlanmış prosedürler saldırganın zararlı kod yazmasını zorlaştırır.
4. Web Application Firewall (WAF) Kullanmak
Gerçek zamanlı olarak SQL Injection denemelerini engeller.
5. Yazılımları Güncel Tutmak
Veritabanı ve framework’ler düzenli olarak güncellenmelidir.
6. Güvenlik Testleri Yapmak
Düzenli olarak pentest ve güvenlik taramaları yapılmalıdır.
Bölüm 6: SQL Injection Açıklarını Tespit Eden Araçlar
1. SQLMap
SQL Injection tespitini ve istismarını otomatikleştiren açık kaynaklı araç.
2. Burp Suite
SQL Injection dâhil pek çok güvenlik açığını bulabilen tarayıcı aracı.
3. OWASP ZAP
Ücretsiz bir güvenlik aracı, SQL Injection açıklarını da tespit edebilir.
4. Acunetix
Ticari bir güvenlik tarayıcısı, detaylı SQLi raporları sunar.





