THT DUYURU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

chat
Seçenekler

Injection Flaws İnjection / S4cuRıTy EneMy

S4cuRiTy EneMy - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
04/2012
Nereden:
root@server
Yaş:
24
Mesajlar:
8.779
Konular:
1513
Teşekkür (Etti):
968
Teşekkür (Aldı):
3105
Ticaret:
(0) %
27-05-2014 20:22
#1
Injection Flaws İnjection / S4cuRıTy EneMy
Merhaba arkadaşlar, bu açık dinamik sql sorgulama sistemlerinde çok rastlanmaktadır. Bir kullanıcı adı ve pass şeklinde sınama şeklindedir.

Alıntı:
Select MemberID
From Member
Where Username = ’" + txtUsername.Text + "’ and Password = ’" + txtPassword.Text + "’"
Örnek bir sql cümlesinin kullanıldıgı bir tabloya bakalım

Alıntı:
txtUsername.Text : ’ or 1=1 --
txtPassword.Text : 123
bu ifade sql çaliştirmak için yeterlidir.

Alıntı:
Select MemberID
From Member
Where Username = ’’ or 1=1 -- ’ and Password = ’" + txtPassword.Text + "’"
Where ifadesini inceleyelim :
Username = ’’ false döner, 1 = 1 ise true. Or karşılaştırmasında ise False or True’nun sonucu true’dur. Dolayısıyla doğru kullanıcı adı parola girilmese dahi geriye tüm kayıtlar döner ve saldırgan ilk kaydın yetkisi ile içeriye giriş yapmış olur.
Saldırgan “SQL Injection” yöntemi ile veritabanı hakkında daha detaylı bilgi edinebilir. SQL Server üzerinde System Administrator hesabı açabilir, Tüm Tabloların listesini ve bu tabolardaki bilgilere ulaşabilir. Hatta web uygulaması sa yetkisine sahip bir kullanıcı ile çalıştırılıyorsa xp_cmdshell ‘format C:’ ile sisteme format bile atabilir.

Dinamik SQL sorgularındaki bu içeri sızmaları engellemenin yolu parametre kullanmaktır.

Bunu SqlCommand nesnesine SqlParameter tipinde parametre ekleyerek yapabiliriz.


Alıntı:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "[ ConnectionString ]";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = " Select MemberID"
+ " From Member"
+ " Where Username = @username and Password = @password";
cmd.Parameters.AddWithValue("@username",txtUsernam e.Text);
cmd.Parameters.AddWithValue ("@password",txtPassword.Text);
conn.Open();
int MembetID = Convert.ToInst32(cmd.ExecuteScalar());
conn.Close();
Bu şekilde kullandığımız dinamik SQL sorgularında Injection yönetimini bertaraf etmiş oluruz.


Selametle / S4cuRıTy EneMy
Köstebek-02 Teşekkür etti.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler