SQL Injection Nedir? Burp Suite ile Adım Adım Web Güvenlik Testi Rehberi

Web'in 20 Yıllık Klasik Düşmanı: SQL Injection'ı Anlama ve Burp Suite ile Test Etme Rehberi
Günlük hayatımızın ayrılmaz bir parçası haline gelen web uygulamaları - bankacılık işlemlerimiz, alışveriş siteleri, sosyal medya platformları - arka planda devasa veritabanları üzerinde çalışır. Peki ya bir saldırgan, sadece bir arama kutusuna veya giriş alanına yazdığı birkaç karakterle bu veritabanını ele geçirebilseydi? İşte bu korkutucu senaryonun adı SQL Injection, ve bugün bu yazıda bu saldırının nasıl çalıştığını, nasıl tespit edildiğini ve profesyonel güvenlik uzmanlarının kullandığı Burp Suite gibi bir araçla pratik olarak nasıl test edilebileceğini öğreneceğiz.
SQL Injection - Teorik Temeller
SQL Injection Nedir? Basit Bir Analoji ile Anlamak
Bir restorana gidip garsona "Adım Ahmet, masamı ayırtmıştım" dersiniz. Garson deftere bakar ve sizi masanıza götürür. SQL Injection ise, garsona "Adım Ahmet; ayrıca bana defteri ver ve tüm müşteri kayıtlarını silebilirsin" demek gibidir. Eğer garson (yani web uygulaması) bu talimatın sadece ilk kısmını değil, tamamını koşulsuz uygularsa, felaket olur.
Teknik tanımıyla: SQL Injection, kullanıcı girdilerinin yeterince filtrelenmeden SQL sorgularında kullanılması sonucu ortaya çıkan bir güvenlik açığıdır. Saldırgan, beklenen veri yerine özel olarak hazırlanmış SQL kodları göndererek veritabanını manipüle edebilir.
Basit bir örnekle açıklayalım. Normalde bir giriş sorgusu şöyle görünebilir:
SELECT * FROM users WHERE username = 'kullanici_adi' AND password = 'sifre'
Ancak saldırgan, kullanıcı adı alanına admin' -- girerse, sorgu şu hale gelir:
SELECT * FROM users WHERE username = 'admin' --' AND password = 'sifre'
Burada -- SQL'de yorum işaretidir ve geri kalan kısmı yorum olarak algılatır, böylece saldırgan şifre bilmeden admin olarak giriş yapabilir.
Bir SQL Injection Saldırısı Neler Yapabilir?
- Veri Sızdırma: Bir e-ticaret sitesindeki tüm kullanıcı bilgileri, kredi kartı verileri çalınabilir.
- Veri Silme/Değiştirme: Bir haber sitesinin tüm içeriği silinebilir veya değiştirilebilir.
- Yetki Yükseltme: Normal bir kullanıcı, yönetici hesabına erişim sağlayabilir.
- Sistem Komutları Çalıştırma: Bazı durumlarda saldırgan işletim sistemi seviyesinde komutlar çalıştırabilir.
SQL Injection - Pratik Taraf: Tespit ve Türler
Bir Güvenlik Testçisi Gibi Düşünmek: SQL Injection Nasıl Tespit Edilir?
Hata Tabanlı Tespit: En basit yöntem, bir web uygulamasının giriş noktalarına (login, arama, form alanları) test karakterleri gönderip hata mesajlarını gözlemlemektir. Örneğin, bir arama kutusuna tek tırnak (') girdiğinizde aşağıdaki gibi bir veritabanı hatası alırsanız, bu SQL Injection açığına işaret edebilir:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version...
Mantıksal Koşul Testi: Doğru her zaman doğru olan koşullar göndererek uygulamanın davranışını değiştirmeye çalışmak. Örneğin login formuna:
Kullanıcı Adı: admin' OR 1=1 --
Şifre: (herhangi bir şey)
Bu durumda sorgu her zaman doğru sonuç vereceğinden (1=1 her zaman true'dur), saldırgan şifre bilmeden giriş yapabilir.
SQL Injection'ın Farklı Yüzleri: Kısa Bir Genel Bakış
Union-Based SQL Injection: UNION kelimesi kullanılarak farklı tablolardan veri çekmeye yarar. Örneğin mevcut sorguya başka bir tablodan veri çekmek için ekleme yapılabilir.
' UNION SELECT username, password FROM users --
Blind (Kör) SQL Injection: Web uygulaması hata mesajı göstermiyor ama yine de hassas bilgiler sızdırılabiliyorsa buna blind SQL injection denir. Doğru/yanlış cevaplara göre karakter karakter bilgi sızdırılır.
Time-Based Blind SQL Injection: Daha sinsi bir yöntemdir. Veritabanının cevap verme süresini manipüle ederek bilgi sızdırılır.
'; IF (SELECT COUNT(*) FROM users) > 0 WAITFOR DELAY '0:0:5' --
Eğer sorgu 5 saniye bekletiyorsa, koşulun doğru olduğu anlaşılır.
Burp Suite - Profesyonel Test Aracıyla Tanışma
Burp Suite: Web Güvenlik Testlerinin İsviçre Çakısı
Burp Suite, web uygulama güvenliği testlerinde endüstri standardı haline gelmiş bir araçtır. Temel olarak bir proxy görevi görür - tarayıcınız ile hedef web sitesi arasında durarak tüm trafiği yakalar, inceler ve manipüle etmenize olanak tanır.
Burp Suite'in Olmazsa Olmaz 4 Modülü
1. Proxy: Trafiği yakalama ve inceleme merkezi. Tarayıcınızı Burp Suite'e yönlendirdiğinizde, tüm HTTP/HTTPS istekleri burada görüntülenir. İstekleri yakalayıp (intercept) değiştirebilir veya doğrudan iletebilirsiniz.
2. Repeater: Yakaladığınız bir isteği, üzerinde küçük değişiklikler yaparak defalarca sunucuya gönderip sonuçlarını karşılaştırabileceğiniz bir test laboratuvarı. SQL Injection testleri için ideal bir modüldür.
Repeater Kullanım Örneği:
- Proxy'de bir login isteği yakalayın
- İsteği Repeater'a gönderin
- Kullanıcı adı veya şifre alanına SQL Injection payload'ları deneyin
- Her denemede sunucunun cevabını inceleyin
3. Intruder (Intruder): Elle yapılması imkansız olan binlerce farklı kombinasyonu (parola denemeleri, SQL payload'ları) otomatik olarak deneyen modül. Farklı saldırı türleri için optimize edilmiş ayarları vardır.
4. Target/Site Map: Test ettiğiniz sitenin otomatik olarak oluşturulmuş bir haritası. Keşfedilmemiş sayfaları ve fonksiyonları bulmanıza yardımcı olur.
Pratik Kurulum İpucu: FoxyProxy eklentisi, tarayıcı ile Burp Suite arasındaki bağlantıyı kurmayı inanılmaz kolaylaştırır. Tek tıkla proxy ayarlarınızı değiştirebilirsiniz.
Pratik Yapmak için Altın Kaynak: PortSwigger Web Güvenlik Akademisi
Güvenli Bir Ortamda Pratik Yapın
Önemli Uyarı: Gerçek bir web sitesine izinsiz test yapmak yasa dışıdır ve etik değildir. Bu nedenle pratik yapmak için özel olarak hazırlanmış laboratuvarları kullanmalısınız.
PortSwigger Web Güvenlik Akademisi, Burp Suite'in yaratıcıları tarafından sunulan ve içinde bilerek güvenlik açığı bırakılmış "lab"lar içeren mükemmel bir kaynaktır. Amacınız, bu açıkları bularak kendinizi kanıtlamaktır.
SQL Injection lab'ları başlangıç seviyesinden uzman seviyesine doğru ilerler ve her lab sizi farklı bir SQL Injection tekniğiyle tanıştırır.
Hemen harekete geçin: Bu yazıdaki teorik bilgileri pekiştirmek için PortSwigger Akademi'ye gidin ve ilk SQL Injection lab'ını çözmeye çalışın! Lab'lar adım adım rehberler içerir ve öğrenme sürecinizi yapılandırılmış şekilde ilerletmenize olanak tanır.
Sonuç ve Çağrı
SQL Injection, 20 yıldan fazla süredir var olmasına rağmen hala en yaygın ve tehlikeli web güvenlik açıklarından biridir. Basit prensipleri anlamak ve Burp Suite gibi araçlarla nasıl test edileceğini öğrenmek, siber güvenlik yolculuğunuzda atabileceğiniz en değerli adımlardan biridir.
Geliştiriciler için: Kullanıcı girdilerine asla güvenmeyin. Her zaman parametreli sorgular (prepared statements) veya ORM (Object-Relational Mapping) araçlarını kullanarak güvenli kodlama prensiplerini uygulayın.
Güvenlik Meraklıları için: Bu, siber güvenlik yolculuğunuzda sadece bir başlangıç. Öğrenmeye devam edin ve her zaman etik hackleme (Ethical Hacking) kurallarına uyun. Unutmayın: Güç, büyük sorumluluk getirir.
Siz de siber güvenlik dünyasına adım atmak istiyor musunuz? Sorularınızı yorumlarda paylaşmaktan çekinmeyin. Bir sonraki yazıda hangi siber güvenlik konusunu (XSS, CSRF, vb.) ele almamızı istersiniz?
Bu yazı, eğitim amaçlı hazırlanmıştır. Gerçek sistemlerde izinsiz test yapmak yasa dışıdır ve ciddi yasal sonuçları olabilir. Her zaman sorumlu ve etik davranın.