Sql injection korunma(ASP için Form post olayı)

çağdaş001

Uzman üye
29 May 2009
1,379
1
*
Alıntı falan değil kendim yazıyorum alıntı deyip benim canımı sıkmayın.


Bu konumuzda post methodundan gelen sql inj. saldırılarını engellemeyi öğreneceğiz.

TurkWarrior

Tabi saldırıyı önlemek için benim anlattıklarım şimdilik yeterli olabilir.İleride yeni yöntemler çıkacaktır.Her yöntem için tutup döküman yazacak değiliz.Bunun için size sql inj. saldırısı nasıl yapılır ondanda yüzeysel olarak bahsedeceğim.Çünkü bir sisteme nasıl saldırıldığını bilmiyorsanız o sistemi koruyamazsınız.;)

TurkWarrior

Evet başlayalım ;

Bu korunma yöntemi asp sayfalarda post methodundan gelen saldırılar içindir.Diğerlerini Allah izin verirse ileride ele almayı düşünüyorum.

Öncelikle bir sisteme sql inj. uygulayabilmek için en çok gerekli olan unsur sayfamızın sql sorgusunda işleyeceği veriyi dinamik olarak almasıdır.Yani kullanıcı bu sorgulara dışarıdan müdahale edebilmelidir.


TurkWarrior

İşte böyle durumlarda gelen ataklardan korunmak için düzenli bir filtreleme uygulamanız gerekmektedir.

Örnek bir saldırıyı ele alalım :

Bir login bölümümüz var.Bu bölüme giriş formlar aracılığı ile sağlanıyor.2 adet form alanımız olsun.Birisi kullaniciadi diğeri iste sifre olsun.Ve bunlar form aracılığı ile denetleme.asp ye gönderiliyor olsun.

Verileri request.form ile çekip veritabanımıza sql sorgusunda kullanıyoruz.Ve buna göre işlem yaptırıyoruz.

Örnek kodlama :

Kod:
dim uye,sifre
uye = request.form("kullaniciadi")
sifre = request.form("sifre")
"Select * from Uyeler where uye_ad="& uye &" and Uye_pass="& sifre &""
İşte bu şekilde kodlanmış bir sistem kodlamadanda görüldüğü gibi sql inj. açığını barındırmaktadır.

Burada attacker(saldırkan-hacker ne derseniz deyin işte :)) 'or' 'or 1=1 'or''=' gibi cümleciklerle login bölümümüzü bypass etmiş olur.

TurkWarrior

Evet yüzeysel olarak form atağını ele aldık şimdi sıra korunma yönteminde :


Bu saldırılardan korunmak için sql sorgusunda kullanılan veriyi filtreden geçirmemiz gerekmektedir.

Peki nasıl yapacağız bunu?

Basit bir fonksiyon ile işimizi halledeceğiz.


Kod:
<%
'/////////////////////////////////////////////////////
'// Güvenlik için girilen karakterleri uygun karakterlere çeviriyoruz
'/////////////////////////////////////////////////////
function TurkWarrior(turkhackteam)
turkhackteam = Replace (turkhackteam ,"`","",1,-1,1)
turkhackteam = Replace (turkhackteam ,"=","",1,-1,1)
turkhackteam = Replace (turkhackteam ,"&","",1,-1,1)
turkhackteam = Replace (turkhackteam ,"!","",1,-1,1)
turkhackteam = Replace (turkhackteam ,"*","",1,-1,1)
turkhackteam = Replace (turkhackteam ,"/","",1,-1,1)
turkhackteam = Replace (turkhackteam ,"\","",1,-1,1)
turkhackteam = Replace (turkhackteam ,"And","",1,-1,1)
turkhackteam = Replace (turkhackteam ,"'","",1,-1,1)
turkhackteam = Replace(turkhackteam, "-", "")
TurkWarrior=turkhackteam
end function
%>
Fonksiyonumuz bu şekilde gelen verideki " işaretlerini vs.. karakterleri filtreliyor.Yani sorguya katmadan temizliyor.

Bunun kullanımı ise : TurkWarrior(request.form("Gelenveri")) şeklindedir.

Bu şekilde form-post saldırılarından korunabiliriz.

Sorularınızı konu altından belirtebilir veya profilimden msn adresimi alıp iletişime geçebilirsiniz.

Bu dökümanda sadece ASP sayfalarda form post saldırılarından korunmayı öğrendik.Diğer dökümanlarda diğer yöntemleri ve php sayfalarıda ele alacağız bizi izlemeye devam edin.;)


Hep hack değil ya birazda güvenlik öğrenin.Yıkıcı olacağınıza yapıcı olmayı deneyin bu vatana daha faydalı olacaksınız emin olun.Sql inj. zaafiyeti güncel bir zaafiyettir.Hemen sizinde önlem almanızı tavsiye ederim.


 
Son düzenleme:

çağdaş001

Uzman üye
29 May 2009
1,379
1
*
Bu ve bunun gibi dökümanlar var kendi yorumunla yazmışsın heralde.Eline sağlık...


Evet kendi yorumumla yazıyorum görüyorumki herkes sql inj. saldırıları ile hack yapmaya çalışıyor.Bu tip saldırılara karşı birde korunma yöntemleri vardır nasıl korunacağız diyenler için yazdım.Evet bu tip dökümanlar var fakat çoğu alıntı bu durumda ufacık bir kod hatasında tüm döküman bir işe yaramaz hâle geliyor.Tamamen 0'dan yazdım.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.