SQL Injection (SQL Enjeksiyonu), kötü niyetli kişilerin bir web uygulamasına zararlı SQL sorguları ekleyerek veya mevcut sorguları manipüle ederek veritabanına erişim kazanmaya çalıştığı bir web uygulama güvenlik açığıdır. Bu, web uygulamasının geliştiricileri tarafından düzgün bir şekilde filtrelenmeyen veya sorgu parametrelerini güvenli bir şekilde işlemeyen kullanıcı girişi nedeniyle olur.
SQL Injection’ın temel amacı, bir saldırganın veritabanı üzerinde istediği işlemi gerçekleştirmesine veya hassas bilgilere erişim sağlamasına izin vermektedir. Bu nedenle, SQL Injection sıkça kullanılan ve tehlikeli bir saldırı türüdür.
SQL Injection Örnekleri
SQL Injection’ın bazı temel çeşitleri ve örnekleri şunlar olabilir:
Klasik SQL Injection:
- Bu en temel SQL Injection türüdür. Saldırgan, web uygulamasının giriş formlarına veya URL parametrelerine zararlı SQL kodları ekler. Örneğin:
SELECT * FROM users WHERE username = 'admin' AND password = ' OR '1'='1';
Bu sorgu, ‘1’=’1′ her zaman doğru olduğu için tüm kullanıcıları döndürür ve oturum açmayı atlatabilir.
Blind SQL Injection:
Bu türde, saldırgan sonucun kendisine gösterilmediği durumları hedefler. Sorguların sonucunu görmese de sorguları manipüle eder ve veritabanı yanıtlarını analiz eder. Örneğin:
SELECT * FROM users WHERE username = 'admin' AND substring(password, 1, 1) = 'a';
Saldırgan, bu sorguları kullanarak parola harf harf deneyerek doğru parolayı tahmin edebilir.
Time-Based Blind SQL Injection:
Bu tür, saldırganın sorguların yanıtlarındaki gecikmeleri kullanarak veritabanı hakkında bilgi elde etmeye çalıştığı bir varyasyondur. Örneğin:
IF(1=1, SLEEP(5), 0)
Bu sorgu, “1=1” doğru olduğunda 5 saniyelik bir gecikme oluşturur.
Second-Order SQL Injection:
Bu tür, saldırganın ilk isteği manipüle ederek ikinci bir SQL Injection’a neden olduğu bir senaryoyu içerir. İlk istekteki veriler, ikinci bir istekte kullanılır.
Out-of-Band SQL Injection:
Bu türde, saldırgan, SQL Injection sonuçlarını aynı kanal üzerinden değil, farklı bir kanal üzerinden alır. Örneğin, veritabanından veri çekilirken DNS istekleri gönderilir.