Blind SQL Injection nedir, ne işe yarar ?

Blind SQL Injection Nedir ?

Bazen kullanılan karakterler sonucu alınan hatalar iş görmeyebilir. Bu du­rumda, bunu bile fırsata çevirmek için kullanılan bir başka Injection yön­temi de Blind SQL Injection tekniğidir. Bu teknik, alınan hataların ” tnıe” veya “false” olmasıyla ilgilenir. Yani yapılan işleme karşı, veritabanından alınan doğru veya yanlış yönlendirmesiyle sonuca varılmaya çalışılır.

Yukarıdaki tablomuzun adı ExampleTable olsun . Bu tabloda First Na­me sütununda Hamza diye bir değer varsa v°eya P_ID sütunund a 1. satır bulunuyorsa, yapacağımız sorgudan olumlu (true) yanıt gelecektir.

Örnekleyelim;

SELECT FirstName FROM ExampleTable WHERE P_ID=l

ExampleTable adlı tablo da, FirstName sütununda P_ID=l olan değeri istedik. Eğer böyle bir kayıt varsa cevap olumlu olacaktır ve Result-Set ” Hamza” yanıtını verecek tir. Ama aynı sorguyu P_ID=4 olarak kullanırsam, cevap olmayacaktır;

SELECT FirstName FROM ExampleTable WHERE P ID=4

Burada olumlu yanıt vermemesinin sebebi P_ID=4 diye bir kayıt olma­masıdır. İşte Blind SQL lnjection bu yöntemi kullanarak çalışır. Yani mantık olarak SQL Injection ile aynı olmasına rağmen, deneme yanıl­ma ile ilerler. Tabi bu işlemi yaparken de tüm bilgileri tek tek den emek uzun zaman alabileceğinden dolayı geliştirilen yöntemler mevcut tur.Bunlar vasıtasıyla, bu mantıkla Blind SQL Injection çalışır.

SQL lnjection konu su hakkında ya zılacak çok şey olmasına rağmen, k onuyu burada sonlandırmak istiyorum. Sonuç olarak saldırılarda ma­n tık karakter enjekte edilmesiyle çalışır ve tamamen hayal güc üyle sın­ır
landırılabilir.

Blind SQL Injection Korunma Yöntemleri Nelerdir ?

• Karakter Filtreleyin
SQL lnjection saldırılardan korunmak için alınabilecek en temel önle,m b azı karakterlerin filtrelenmesidir. Hatırlarsanız birçok SQL ln jection metodunda tek tırnak ( ‘ ) gibi karakterler kullanılıyordu. Bu karakterlerin filtrelenmesi, kısmen caydırıcı olacaktır. Filtreleme işlemi tek tırnağı ( ‘ ), çift tırnağa (“) dönüştür er ek yapılabilir.
Şöyle bir kod işimizi görebilir;

<%Function SQLSecurity(ReplacetQeuso) SQLSecurity = Replace(ReplaceQuotes ,”‘”,”””)

Benzer şekilde istediğiniz değişiklikleri yapabilirsiniz. Size bağlı.

• Kayıt Uzunluklarını Sınırlayın
Veritabanınıza kayıt için ayrıla n alan uzunluğun a göre düzenleme yap­ manız faydalı olacaktır. Örneğin veri girişi yapılacak bir alana, en fazla 15 karakter girişi sağlanmışs a, fazlasına izin verilmemelidir. Bu sınırla­ mayı getiımeniz olası SQL saldırılarına karşı önlem olacaktır.

• Kayıt Türlerini Kontrol Edin
Hazırladığınız bir forma girilen verilerin türlerini kontrol edin. Mesela ilgili forma sayı girilmesi gerekirken başka bir tür girilebilir. Böyle bir durumun önüne geçmek için, bunun kontrnlünü yapacak basit kodlar yazılabilir.

• Yetkileri Sınırlandırın
Mümkünse, veritabanına bağlanma işlemi yönetici ye tkileriyle değil kı­ sıtlı yetkilerle yapılmalıdır.

• Whitelist Kullanın
SQL Injection konusunu anlatırken, saldırı detayları, saldırganın hayal gücüne bağlı demiştim. Çünkü saldırgan, istediği şekilde farklı kombi­nasyonlar üretip saldırılar deneyebilir. Bazı kullanıcılar, saldırı amaçlı kullanılabilecek cümlecikleri filtreleyen Blacklist uygulaması yaparak bu sorunu aşmaya çalışırlar. Oysa tamamen zaman kaybı olarak görü­yorum. Düşünsenize saldırı cümleciklerinin başında ki veya sonundaki boşluk sayısım değiştirmek bile, o cümleciği değiştirmek anlamını taşı­ yorken hangi birirıi filtrelemek yeterli olur ki? Basit değişikliklerle oluşturulabilecek onlarca farklı saldırı cümleciği varken , Blacklist uygula­ması yanlış. O nedenle Whitelist kullanmanızı tavsiye ederim. Yani kö­tü olarak nitelendirdiğiniz kodları filtreleme yerine , sadece iyi olanlar çalışsın, demiş olursunuz.

• GreenSQL Kullanın
GreenSQL, SQL Injection saldırılarına karşı veritabanını koruyan bir DB Firewall uygulamasıdır. Açık kaynak kodlu ve GPL lisansı altında­dır. Proxy şeklinde çalışır ve MySQL uyumluluğu vardır.

GreenSQL, istemci tarafından gönderilen SQL komutlarıyla MySQL arasında konumlanarak, gönderilen komutları analiz eder ve risk oluş­turmayan komutları MySQL’e gönderir. Güvenli görünmeyen ve whi­telist’e eklenmeyen komutları ise filtreleyerek MySQL’e gitmesine­ engel olur. Güvenlik açısından kullanmanızı önerdiğim GreenSQL hakında detaylı bilgiyi http://www.greensql.net /community/docs sayfa­ sından alabilirsiniz.

• Uygulamanızı Tarayın
Gelişmiş birçok Web tarayıcıları, SQL Injection saldırılarına karşı web uygulamanızı tarama özelliğine sahiptir. Tüm önlemlerinizi aldıkt an sonra, bir de tarama yapmanız faydalı olacaktır.

Yazan; X-master

Yorum Yap

E-posta hesabınız yayımlanmayacak. Doldurulması zorunlu alanlar işaretlendi *