SQL Injection neden dolayı oluşur ve Nasıl Korunulur?
Okuyucu : 7.645
Günlük Okuyucu : 16,1
SQL Injection neden dolayı oluşur ve Nasıl Korunulur?
Bu yazı dizisi temel olarak saldırıya dayalı olduğundan dolayı detaylı korunma ve defans yolları anlatılmamıştır ve bu yazı dizisi etrafında anlatılmayacaktır. Saldırıyı anlamak korunmayı anlamanın en önemli kısımlarından biridir. Yazıda sadece yöntemlere değinilmiş ve ilgili dil-platform implementasyon pratiği okuyucuya bırakılmıştır.
SQL Injection açığı neden oluşur ?
SQL Injection şüphe götürmez ki web uygulamalarında yaygınlık / hasar oranı en yüksek açıktır. Muhtemelen exploit etmesi de en eğlenceli ve bazen tahmin edilenden daha zor olan açıktır.
Belirttiğimiz gibi SQL Injection’ ın ana nedeni web uygulamasının kullanıcıdan gelen girdiyi doğru şekilde kontrol etmeden o girdi ile dinamik bir SQL cümleciği oluşturmasından kaynaklanmaktadır.
Bir önceki bölümdeki örnekte dikkat ettiyseniz saldırı girdisi (') tırnak karakteri ile başlamıştı. Çünkü SQL’ e istediğimiz komutu göndermek için öncelikle string bölümünden (') tırnak karakteri ile kaçıp daha sonra istediğimiz SQL komutunu SQL cümleciğine ekledik. Burada eklediğimiz komut “OR 1=1” gibi bir komuttu. Bu komut sayesinde SQL cümleciği tüm kayıtları döndürdüğünden dolayı sisteme başarılı bir şekilde giriş yapabilmiştik.
Özetle normalde SQL cümleciğinin yapısını değiştirerek yapması gerekeni değil yapmasını istediğimiz şeyi yaptırdık. Bunun ana nedeni ise SQL cümleciğinin içerisine dışarıdan (') tırnak karakteri aracılığı ile komut ekleyebilmemizdi.
Hacker Kültürü
SQL Injection ilk defa Rain Forest Puppy tarafından “How I hacked PacketStorm” makalesinde dokümante edilmiştir. Bu makale PacketStorm’ un SQL Injection ile hack edilmesini anlatır. İlginç olan ise bu dokümanda bu atak “SQL Injection” olarak tabir edilmez. Bu terim daha sonradan ortaya çıkıp kabul görmüştür.
SQL Injection açığı neden oluşur ?
SQL Injection’ dan korunma da iki altın kural vardır.
- Tüm meta-karakterlerden kaçılmalıdır,
- Nümerik olarak beklenen parameterlerin nümerik olup olmadığı kontrol edilmelidir.
Birinci Kural;
Dinamik oluşturulan tüm SQL cümlecikleri meta karakterlerden başarılı bir şekilde kaçmalıdır. Örnek olarak SQL Server için (') tek tırnak karakterini uygulama (') iki tek tırnak ile değiştirilmelidir. Bu sayede SQL Server bunun tek tırnak karakteri olduğunu anlayabilir.
İkinci Kural;
Eğer oluşturulacak SQL cümlesi için beklenen data nümerik ise nümerik mi diye kontrol edilmeli eğer ve nümerik değilse uygulama bu datayı kabul etmemelidir.
Saldırının anatomisi anlaşıldıktan sonra defansı gayet basit olacaktır.
SQL cümleciği oluşturulmadan önce SQL cümleciğini oluşturmaya yardımcı olan tüm dinamik dataların beklenen data tiplerine uyup uymamasının kontrol edilmesi. Nümerik beklenen data gerçekten nümerik mi? gibi.String kayıtlarda kesinlikle meta karakterlerden kaçmaParameterized SQL cümlecikleri oluşturmaStored Procedure Kullanma (Stored Procedure lerde güvenli şekilde yazılmalıdır)Whitelisting, Sadece beklenen karakterlerin kabul edilmesi. Mesela isim girilecek bir yerde noktalama işaretlerinin kabul edilmemesi gibi. Whitelisting yapıldıktan sonra gene meta-karakterlerden kaçılmalıdır.Detaylı korunma metotları bu yazı dizisinin konusu dışındadır.

Yorumlar
Yorum Ekle
SQL Injection neden dolayı oluşur ve Nasıl Korunulur? ile İlişkili Olabilecek Yazılar - Haberler
SQL Tunnelling - Exploiting Internal Networks via SQL Injectionİleri Seviye Javascript
Türkçe SQL Injection Referansı
Web Güvenlik Topluluğu 9 Mart Kadıköy Buluşması
Hala SSL' i Anlayamadılar
Diğer Yazılar
SQL Injection SubSelects and IF Statements
SQL Injection Test Laboratuarı Kurma
SQL Injection Videoları Düzeldi
SQL Injection Videosu
SQL Server' da tablo sahibini (ownership) değiştirme
SQL Server Database Logu Temizleme
SQL Server için Araçlar
SQL Server Performanısını Arttırma
SQL Serverda ve SQL Injectiondan Data Alma
SQL Tunnelling - Exploiting Internal Networks via SQL Injection
sqlmap - Another SQL Injection tool
SQLNinja
SSL Implementation Security FAQ
SSL Tekrar Aktif
SSS : ASP ile RSS Feed Oluşturmak
SSS : Şifre Kırma İşlemi Çok Uzun Sürüyor?
SSS : WEP Şifrelerini Kırınca Çıkan Karakterler Ne?
Star Wars' ı sevmiyorum ve biliyorum o da beni sevmiyor
Steal this Film
Neredeyim ?
Ferruh.Mavituna » SQL Injection Dersleri » SQL Injection neden dolayı oluşur ve Nasıl Korunulur?