SQL İnjeksiyonu Nedir, Nasıl korunuruz?

Hopeツ︎

Profesör
Katılım
9 Mart 2016
Mesajlar
2,396
Çözümler
1
Reaksiyon puanı
2,268
Puanları
113
Yaş
26
Sql injection günümüzde, kötü niyetli bilgisayar korsanları tarafından php, asp, aspx, net vb. gibi script veritabanı türevlerinden faydalanıp sistemi etkisiz hale getirmeye yarayan bir atak çeşididir. Büyük bir güvenlik zafiyetidir ve gerekli önlemler alınmadıkça olası sorunlara kapı açar. Veritabanını ve websiteyi düzenleyip yayınlanmasını sağlayan yazılımcı coderlar, işi usulüne göre yaparlar akabinde maalesef kapıları teker teker açarlar. Veritabanı ve bağlı websitesi tamamen korunmasızdır, artık tamamen makûs kaderine yenik düşmeyi bekliyordur... Sql injeksiyon atakları çeşitli manuel yöntem, girdilerle ya da yazılımlar yardımıyla gerçekleştirilir. Biz burada SQL injeksiyonu için yapılması gereken adımlardan veya yardım alabileceğimiz araçlardan elbette bahsetmeyeceğiz. Bizim konumuz SQL ne demek, bu ataktan nasıl korunabiliriz yöntemleri nelerdir? olacak.

SQL injection, veritabanındaki yanlış hatalı girdi ve döngülerden yararlanır. Durum vahimdir zira; Veritabanı bilgilerini dump etme (çalma) , değiştirme, silmeye kadar gider iş... Düşünün büyük bir proje sahibisiniz ve sitenizin hiti oldukça yüksek çok fazla da üyeniz var. Korsan Sql atağını doğru uyguladığında bu bilgilerin tümü bir anda eline geçebilir. İnjeksiyon atakları; content,time based,blind olmak üzere ayrılırlar. Ama durumun birde derin detayları vardır ki en tehlikeli noktası da orasıdır. Korsan ileri düzeyse bir yazılım yardımıyla bu işlemi gerçekleştirmeye çalışıyorsa çeşitli olarak Level, Risk, Tamper ve Bypass yöntemlerini devreye sokabilir. Korsanlar bunu genelde manuel injeksiyondan ve time,based,blind yöntemlerinin kullanıldığı kabaca yazılımlardan sonuç alamadıklarında devreye sokarlar. Her websitesi için değişik değerler uygulanır farklı bypasslar öne sürülür.

SQL İnjection, Korsanların Kullandığı Yöntemler

#1. Content Based (İçerik Enjektesi)

Korsan sayfada döndürülen parametre isteklerininn doğruluğunu ve yanlışlık derecesini çeşitli testlere tabi tutarak öğrenebilir. Content Based'de bunu www.sqldenemesi.net/....id?= şeklinde veritabanına bir sorgu göndererek sağlamak mümkündür. False bir parametre sonrasında enjekteye maruz kalabilir... Web sayfası her zaman sorgu döndürmez, korsan bu esnada doğru sorgulatmayı bulmayı başarırsa true'ya çevirip istediğine ulaşması an meselesidir.

#2. Time Based (Zaman Bazlı)

Vulnerable yani enjeksiyonlu parametreleri veritabanını zorlayarak true değerleri döndürme işlemidir. Veriler parçalar halinde çekilerek bir bütüne ulaştırılmaya çalışılır.
http://sqldenemesi.net?id=3 , 'waitfor delay' 00: 00: 15 '- vb. şeklinde gelişir. BENCHMARK ve -ENCODE yine verileri döndürme ve zorlama amacıyla time based'de kullanılırlar.

#3. Blind İnjection (Kör Saldırı)

Çeşitli yazılımlar yardımı ile gerçekleştirilen SQL saldırılarıdır. Manuel (elle) yapılan saldırılara benzer nitelik taşır. Fakat gelişkin olarak level,risk, tamper,bypass, vb. Parametreleri saldırıyı geliştirir üstün saldırı gücüne kavuşturur.

SQL İnjection'dan Korunma Yöntemleri

✓︎ Bir ' işareti bile her şeyi berbat edebilir... ''mysql_real_escape_string()'' doğrulaması bu adımda yardımcı olacaktır. Ayrıca içerikler kategorilerine göre tümüyle ayırılmalı ve düzenlenmelidir. Filtreleme bu adımda büyük önem taşır.
✓︎ Hazır ifadeler, parametreli sorgular ve saklı yordamlar kullanılmalı.
✓︎ Korsanların vulnerable ifadeleri keşfetmesi o kadar da zor olamayacağından yönetim patchleri güncel olmalı ki fix görsün.
✓︎ Application Firewall (WAF) Güvenlik duvarlarınız olsun.
✓︎ İhtiyacınız olmayan parametreleri sunucu da barındırmayın, korsanlara yol göstermek istemeyiz...
✓︎ Gerekli değilse üst düzey yönetici hesabıyla sunucuya bağlanmayın, bu yine korsanın işini kolaylaştıracaktır.
✓︎ Önemli veriler encrypt edilmeli.
✓︎ Sayfaya düşecek hata mesajları en aza indirgenmeli, mümkünse error sayfası oluşturulmalı.
✓︎ Sunucu için doğru yazılımlar tercih edin.

*Alıntı değildir.
 
Son düzenleme:
Üst