Sql nedir?
SQL Injection ; bir web uygulamasındaki SQL sorgularına dışarıdan müdahale ile yeni komutlar ekleyerek yapılan bir saldırı yöntemidir. 2000`li yıllardan beri etkili bir şekilde kullanılan bu saldırı yöntemi saldırganın veritabanını yönetmesini sağlar.
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.
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.
SQL Injection Nasıl Çalışır?
SQL injection yöntemi, web sitenizdeki herkese açık olarak sunulan giriş, iletişim gibi formlarda etkilidir. Kodlaması yanlış ya da eksik yapılan formlarda girilen bir metnin veya sorgu dizisinin, yabancı birisi tarafından veri tabanına yetkisiz erişim imkânı sağlar. Web sitenizde bulunan bu tarz formlar bu şekilde bir saldırıya açıktır. Bu sayfaların güvenliğini önemsemelisiniz. Bu sayfalardaki en ufak bir zafiyet, şirketiniz için geri dönülemez veri ihlallerine sebep olabilir.
2020 yılında milyonlarca üyesi olan ücretsiz resim stok sitesi Frepik kullanıcılarının verileri SQL injection hack yöntemiyle çalındı. Şirket 8 milyon kullanıcının verilerinin çalındığını, verilerin arasında yaklaşık 3,5 milyon kullanıcının şifresinin olduğunu bildirdi. KOBİ ya da kurumsal bir firma olun, böyle bir durum yaşamak ister misiniz?
Bu konuyu SQL injection örnek sorgular ile daha iyi anlayabilirsiniz. Kullanıcı adı ve şifre ile oturum açması sağlanan bir uygulama giriş sayfanız var diyelim. Burada bir kullanıcının “ahmet” kullanıcı adı ile birlikte “ahm.135” şifresini kullanarak uygulamaya giriş yaptığını varsayın. Bu durumda uygulama aşağıdaki sorguyu sorup, doğru cevap alırsa kullanıcıya giriş izni verir.
Bir hacker, bu sorgudaki parola sorgusunu kaldırarak giriş yapmayı dener. Bu şekilde veri tabanına sızma girişiminde bulunur. Oturum açma ekranındaki POST isteğini aşağıdaki sorguyla düzenleyip gönderirse veri tabanına yönetici rolüyle erişir.
Buna benzer başka SQL injection örnek sorguları da yapılarak veri ihlalleri ile karşı karşıya kalabilirsiniz. Örneğin bir e-ticaret sitenizde filtreleme esnasında aşağıdakine benzer bir sorgu döner.
Saldırgan bu sorgunun yanına UNION komutunu ekleyerek farklı tablolardan veri çekmeye çalışır.
Gördüğünüz gibi web uygulamanızda SQL injection açığı varsa sistemde kayıtlı kullanıcı adları, şifreler ve diğer kişisel veriler bu şekilde kolay bir şekilde erişime açık olur.
Yorumlar
Yorum Gönder