SQL Nedir?
SQL (Structured Query Language), Yapılandırılmış Sorgu Dili anlamına gelir. Bu dil pek çok veritabanına hitap eder. Veri sistemlerinin gelişmesi sonucu bu verileri yönetebilme ihtiyacı SQL dilinin doğmasına sebep olmuştur. SQL komutları sayesinde veri tabanına veri ekleyebilir, mevcut veriyi silebilir ya da veriyi düzenleyebiliriz.
SQL Injection Nedir?
SQL injection, veri tabanı altyapısının bulunduğu tüm sistemlerde sıklıkla görülen bir siber güvenlik tehdidi olarak tanımlanır. Siber saldırı düzenleyen kişiler tarafından en çok tercih edilen yöntemlerden biri SQL injection’dır. Öyleki uzun süredir OWASP TOP 10’da yer alır.
SQL injection bir güvenlik açığıdır. Bir web sitesinde herhangi bir form doldurulduğunda arka planda bir SQL sorgusu çalışır. Bu sorgu veri tabanı ile iletişim sağlar. SQL injection temelde zararsız komutlar arasına zararlı kod parçacıklar eklenerek yetkisiz erişimler sağlanmasıdır. Örneğin, bir kullanıcı sisteme giriş yapmak istediğinde arka planda kullanıcı adı ve şifresini eşleştiren SQL sorgusu çalışır. Sorgu sonucunda sadece kendisinin yetkisi olduğu bilgileri görebilir. SQL sorgularının arasında bir kod parçacığı eklendiğinde yani SQLi yapıldığında sistemde kayıtlı tüm kullanıcıların bilgisine yetkisiz erişilebilir. Bu yetkisiz erişim ile sistemde kayıtlı tüm kullanıcı verilerini düzenleyebilir, dilediği gibi kullanabilir, farklı ortamlara yedekleyebilir ya da silebilir.
Örneğin, bir müşteri sisteme giriş sağlamak için kendi kullanıcı adı ve şifresini girmek durumundadır. Bu şekilde girdiği sistemde yalnızca kendine ait bilgilere erişimi sağlayabilir. Ancak SQL injection yöntemi ile bir saldırgan, pek çok farklı kullanıcının kişisel bilgilerine ve web uygulamasına dair diğer verilere erişim sağlayabilir. Burada meydana gelen SQL injection açığı sayesinde siber saldırı düzenleyen kişiler, verileri diledikleri gibi kullanabilir, farklı bir yere aktarabilir, silebilir ya da değiştirebilir.
SQL Injection Türleri?
1-Union SQLi
Web uygulamasındaki formda normal olan SQL sorgusunun yanına “union” komutu ile saldırganın zararlı sorgusu birleştirilir. Bu sorgu sonucunda saldırgan veri tabanında istediği bir veriye ulaşabilir. Union komutu iki farklı SQL sorgusunu tek sorguda birleştirmeye yarar. Örnek sorgu:
SELECT name, age, email FROM users WHERE username = ‘username’ UNION SELECT password, null, null FROM users WHERE username = ‘admin’;
2-Error-based SQLi
Saldırgan, web uygulamasında deneme yanılma yolları ile hata mesajlarından yararlanır. Hata mesajlarından aldığı bilgilerle veri tabanını keşfeder ve saldırıyı ona göre şekillendirir. Örnek sorgu:
SELECT name, age, email FROM users WHERE username = ‘username’ AND 1/0;
3-Time-based SQLi
Saldırgan burda web uygalamasındaki zaman gecikmelerinden faydalanır. Yapılan sorguları yavaşlatarak ya da durdurarak veri tabanını keşfeder ve saldırıyı gerçekleştirir. Örnek sorgu:
SELECT name, age, email FROM users WHERE username = ‘username’ AND IF(SLEEP(5),1,0);
4-Boolean-based SQLi
Saldırgan, web uygulamasına mantıksal ifadeleri kullanarak sorular sorar. Soruların çıktısındaki True ya da False değerlerine göre veri tabanını keşfeder. Örnek sorgu:
SELECT name, age, email FROM users WHERE username = ‘username’ AND (SELECT COUNT(*) FROM users) > 0;
5-Out-of-band SQLi
Saldırgan, veri tabanı dışındaki sistemlerle iletişime geçer. DNS sorguları ya da HTTP istekleri gibi veri tabanı dışındaki sistemlerle haberleşerek veri çalar. Örnek sorgu:
SELECT name, age, email FROM users WHERE username = ‘username’ AND extractvalue(1,concat(0x3a,(SELECT password FROM users WHERE username=’admin’)));
SQL Injection Saldırıları Nasıl Önlenir?
SQL injection saldırılarını önlemek için birkaç farklı önlem vardır. Bunlardan bazıları şöyledir:
1-Kullanıcı Girdilerinin doğrulanması
Kullanıcı girdileri kontrol edilip filtrelenmesi gerekir. Bu, saldırganların özel karakterler veya kod parçaları ekleyerek sorguları manipüle etmesini önler.
2-Sorguların Parametlendirilmesi
Sorguların parametrelerle oluşturulması, kullanıcı girdilerinin amacına uygun şekilde çalışmasını sağlar. Parametreli SQL kodu, saldırganların komut ekleseler bile sorgunun amacını değiştirmesini engeller
3-Kullanıcı izinlerini sınırlamak
Kullanıcılara ihtiyaç duydukları minimum izinler verilmelidir.
4-Güvenlik Duvarları
Güvenlik duvarlarını kullanarak SQL injection gibi saldırılar otomatik tespit edilir ve önlenebilir.
5-Güncel Yazılım
Güncel yazılımlar, güvenlik açıklarını kapatır ve SQL injection gibi saldırıları önleyebilir.
6-Sorgu izlenmesi
Web uygulamalarına yapılan sorguların incelenmesi, saldırıların tespit edilmesinde ve önlenmesinde büyük önem taşır.
a a için bir yanıt yazın Yanıtı iptal et