SQL Injection Nedir ?

SQL injection (SQL enjeksiyonu), web uygulamalarının güvenliğini tehdit eden ciddi bir güvenlik açığıdır. Bu saldırı türü, saldırganların bir uygulamanın veritabanına zararlı SQL komutları enjekte etmesini sağlar. Bu komutlar, veritabanındaki verilere yetkisiz erişim sağlamaya, verileri değiştirmeye veya silmeye yönelik olabilir.

SQL injection, bir saldırganın bir web uygulamasının veri giriş noktalarını kullanarak veritabanı sorgularını manipüle etmesine olanak tanıyan bir saldırı türüdür. Bu, uygulamanın veritabanına gönderdiği SQL sorgularına kötü niyetli kod parçacıkları ekleyerek gerçekleştirilir. Amaç, veritabanındaki hassas bilgilere erişmek, veritabanını bozmak veya yönetimsel kontrolleri ele geçirmektir.

Başka bir deyişle  bilgisayar korsanlarının tetiklediği sorguyu başarıyla çalıştıran dinamik SQL ifadelerini zehirlediği bir saldırı türüdür. Örneğin, bir saldırgan site veritabanınıza erişebilir ve herhangi bir tabloyu silebilir.

Genellikle SQL Injection, kötü tasarlanmış web uygulamalarından kaynaklanır. Bu nedenle saldırganlar, SQL ifadelerinden yararlanarak ve kötü niyetli SQL kodlarını uygulayarak bundan yararlanır. Bazen saldırganlar, sunucunun veya arka uç altyapısının güvenliğini tehlikeye atabilecek bir  saldırı yükseltebilir veya hizmet reddi saldırıları gibi başka saldırılar gerçekleştirebilir.

sql injection

Saldırıları Türleri

Uzun yıllar OWASP TOP 10 listesinin başında yer alarak en tehlikeli saldırı türü seçilmiştir.

Union Based SQL Injection

En az iki “SELECT” sorgusunu tek bir sorguda birleştirerek yapılan saldırı yöntemidir. Yapılan istek sonrasında dönen HTTP yanıtı saldırgan tarafından kullanılabilecek veriler içerebilir.

Blind SQL Injection 

Blind SQL Injection, genellikle diğer  saldırı türlerinden daha karmaşık ve gerçekleştirilmesi daha zordur. Bu saldırıda, hedeflenen kurban genel hata mesajları aldığında bilgisayar korsanları bir saldırı gerçekleştirir.

Veri tabanından bilgi aldığı için diğer  saldırılarından farklıdır. Örneğin bilgisayar korsanları doğru veya yanlış sorular için veritabanını sorgular ve daha sonra alınan cevaba göre cevap belirlenir. Son olarak, zamana dayalı bir saldırı olduğunda bir sunucu yanıtı almak için zaman alınır.

Boolean Based SQL Injection

Veritabanı üzerinden tam sorgu sonuçları ve kritik bilgiler döndüren hata mesajları kullanır. Ayrıca bu yöntem aynı zamanda bir web uygulamasının veya web sitesinin savunmasız olup olmadığını öğrenmek ve kötü niyetli ve zararlı sorguları yeniden yapılandırmaya yardımcı olan diğer bilgileri bulmak için de kullanılır.

Time-Based SQL Injection

Veritabanına yapılan isteğin saniye cinsinden belirlenen sürede içerisinde tepki vermesini bekleyerek yapılansaldırı yöntemidir.Saldırgan, veri tabanının yanıt vermesi için geçen süreyi, bir sorgunun doğru mu yanlış mı olduğunu görebilir.

Benzer şekilde, bu zamana saldırıları, Blind  saldırısı sırasında Boolean Based  yöntemlerle birlikte hedeflenen web uygulamalarında veya web sitelerinde güvenlik açıklarının olup olmadığını belirlemeye çalışırken saldırganlar tarafından yaygın olarak kullanılır.

SQL Injection Araçları

  • SQLMap – Otomatik SQLi ve Veritabanı Devralma Aracı
  • jSQL Injection – Otomatik SQLi için Java Aracı
  • BBQSQL – Bir Blind SQLi Sömürü Aracı
  • NoSQLMap  – Otomatik NoSQL Veritabanı Yönetimi
  • Whitewidow – SQL Güvenlik Açığı Tarayıcısı
  • DSSS – Küçük SQLi Tarayıcı
  • Blind-Sql-Bitshifting – Bitshifting ile Blind SQLi
  • Leviathan – Geniş Kapsamlı Kitle Denetim Araç Seti
  • Blisqy – HTTP Başlıklarında Zamana dayalı Blind SQL yararlanma (MySQL/MariaDB)

 

Korunma Yöntemleri ?

  • Veritabanlarınızı güncel tutun.
  • Önemli verilerin düz metin olarak saklanmasından kaçının
  • Dinamik SQL kullanmamaya özen gösterin.
  • Web uygulaması güvenlik duvarı (WAF) kullanın.
  • Kullanıcı girdilerini direk göndermek yerine filtreden geçirerek gönderin.
  • Hata mesajlarının görüntülenmesini engelleyin.
  • Veritabanı izin ve ayrıcalıklarını sınırlayın.
  • Düzenli olarak güvenlik taraması yapın ve güncel zaafiyetleri kontrol edin.
  • Güvenli yazılım geliştirme eğitim ve seminerlerine katılın.
  • Yapılan kötü amaçlı sorguları loglayın ve kara liste oluşturun.
  • Düz sorgular yerine parametleri sorgular kullanın.

 

Teknoloji var oldukça hayatımızda olacak SQL injection saldırılarına karşı koruma sağlamak öncelikle güvenli kod geliştirme ve farkındalık eğitimleri ile başlamalıdır. Her ne kadar güvenli olduğunu düşündüğümüz uygulamalar geliştirsekte bunun %100 mümkün olmadığı değiştirilemez bir gerçektir. 3. bir göz olarak kritik uygulamalarımızı korumak için Web Application Firewall kullanmak ve belirli aralıklarla sızma testi yaptırmak güvenlik seviyemizi arttırmak için faydalı olacaktır.

Ayrıca web uygulama güvenliği için geliştirilmiş olan yazılımlar sayesinde de  güvenlik seviyelerini test edebilirsiniz.

MENÜYÜ KAPAT