ForumTayfa  

Go Back   ForumTayfa > Güvenlik & Bilgisayar & İnternet & Webmaster & Programlama Bölümü > Güvenlik & Bilgisayar & İnternet & Webmaster & Programlama > Güvenlik ve Güvenlik Açıkları

Güvenlik ve Güvenlik Açıkları Pc güvenliği ile ilgili tüm konuların tartışıldığı bölüm...

Yeni Konu aç  Cevapla
 
LinkBack Seçenekler Stil
Alt 01.03.09, 13:39   #1 (permalink)
zBi
Yeni Tayfa
 
zBi - ait Kullanıcı Resmi (Avatar)
 
Üyelik Tarihi: Jan 2009
Nereden: İstanbul İçecek: RedBull Sigara: Uzun Parliament Racon: Eyvallah Yaş: 19
Mesaj Sayısı: 178
Konu Sayısı: 33
Takım: Beşiktaş
Rep Gücü: 21877
Rep Puanı: 2186533
Rep Derecesi : zBi 0-3000000zBi 0-3000000zBi 0-3000000zBi 0-3000000zBi 0-3000000zBi 0-3000000zBi 0-3000000zBi 0-3000000zBi 0-3000000zBi 0-3000000zBi 0-3000000
Ruh Hali:

Wink Sql Server & Sql İnjection Açıkları ve Önlemleri




Sql Server kullanan sistemlerdeki sql injection tehlikesi ve çözümü.
Bu dökümanda size çoğu web sitesinin hacklenmesinde kullanılan ve hala birçok sitede bulunan sql injection açığından bahsedeceğim.

Sql injection temel olarak “‘” ve “—“ kullanılarak yapılır.
‘ karakteri ****** ifadeyi kapatır, “--“ ise kendisinden sonraki komutları iptal eder.

Çoğumuz yaptığımız işlerde işin kolayına kaçıp sql sorgularını

sql="select * from admin where kullanici_ad="'& request.query******("kullanici_ad") &"' and sifre="'& request.query******("sifre") &""'

sorgusuna benzer şekilde oluşturuyoruz. Bu sorgunun yaptığımız sitedeki admin konsolu giriş kontrolünü yaptığını düşünelim.

İlk etapta lamer’ ımız “x“ ve “x” yazarak giriş yapmaya çalışsın.
Bu durumda sql sorgumuz :

select * from admin where kullanici_ad='x' and sifre='x'

olacaktır. Burda sorun yok. Ama eğer lamer kullanıcı adı olarak “x’ or 1=1 -- “ girerse sql sorgusu :

select * from admin where kullanici_ad='x' or 1=1 --' and sifre='x'

olacaktır. Sql server bu sorguyu çalıştırıken “--“ karakterlerinden sonra gelen ifadeleri açıklama olarak yorumlayacak ve çalıştırmayacaktır. Yani aslında yürütülen deyim

select * from admin where kullanici_ad='x' or 1=1

olacaktır ve konsola giriş yapacaktır!

Lamer’ ımız bunu görünce işi büyütmek isteyecektir. Bu sefer tablonun yapısını öğrenmek isterse “'having 1=1 “ gönderir. Ve bir hata mesajı :

[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'admin.ID' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.

Tablo adını ve ilk alanın adını öğrenmiş oldu. Sonra “'group by ID “ gönderir. Bir hata mesajı daha :

Microsoft][ODBC SQL Server Driver][SQL Server]Column 'admin.kullanici_ad' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Böylece ikinci alanın adını da öğrenmiş oldu. Sonra “'group by ID, kullanici_ad“ gönderir. Bir hata mesajı daha :

[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'admin.sifre' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Sonra “'group by ID, kullanici_ad,sifre“ gönderir. Hata mesajı gelmedi. Demek ki tabloda 3 alan varmış : )

Sonra uğraşmamak için kendisine bir kayıt açar. Tabii ki “' insert into admin values('x','x')” göndererek.
Artık ilk denediğin “x”, “x” bilgileriyle giriş yapabilir.

Sonra tek admin olmak ister. “' delete from admin where kullanici_ad<>'x'” gönderir. Kendi kaydı hariç bütün kayıtlar silinir.

Bunlar işin ufak çaplı kısmı. Sp’ leri kullanabilir, diğer db’ lere ulaşabilir, db’ deki bütün kayıtları silebilir, kendi mesajını sitenin anasayfasına yazabilir vs...

Çözüm nedir?
Çok basit. Kullanıcıdan gelen "‘" karakterini kabul etmemek.

Genel kabul gören çözüm “’” karakterini “’’” ile değiştirmek :

kullanici_adi=trim(request.query******("kullanici_ adi "))
kullanici_adi=replace(kullanici_adi,”’”,”’’”)

Benim önerim ise “’” karakterini 146 ascii numaralı karakterle değiştirmektir. Ascii 146 karakteri sql server’ ın ****** olarak yorumladığı “’” karakteridir. Sitede arama yapan biri arama sözcüğünün içine “‘” karakteri de kullanabilmelidir.

kullanici_adi=trim(request.query******("kullanici_ adi "))
kullanici_adi=replace(kullanici_adi,”’”,chr(146))


Dökümandaki örnek kodlar sadece yaygın kullanıldığı ve okunabilirliği yüksek olduğu için asp(vbscript) olacak ancak bu diğer dil ve ortamlarda bu tehlikenin olmadığı veya daha az olduğu anlamına gelmiyor.

Eğer zamanınız ve bilginiz yeterliyse sql sorgularını stored procedure kullanarak yapmanızı öneririm.



Sql injection diğer db' lerde de geçerli. Sadece kullanım şekilleri farklılık gösteriyor.


zBi isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 28.05.09, 17:05   #2 (permalink)
Yeni Tayfa
 
WaTaNS3W3R - ait Kullanıcı Resmi (Avatar)
 
Üyelik Tarihi: May 2009
Mesaj Sayısı: 3
Konu Sayısı: 1
Rep Gücü: 0
Rep Puanı: 10
Rep Derecesi : WaTaNS3W3R 0-250000
Standart Cevap: Sql Server & Sql İnjection Açıkları ve Önlemleri




hımm . . . GüzeLmiş ELine SağLık


WaTaNS3W3R isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
SQL İnjection Korunma Yöntemleri - Asp ile Form Post ShıFтdєLєтє ASP, Perl, Php, Html 0 24.12.08 23:43
PHP'de RFI/LFI Açıkları ve Korunma Yolları ShıFтdєLєтє ASP, Perl, Php, Html 0 24.12.08 23:39
Sistem Açıkları Ve Kapatılması_ Süper Bir döküman -BuRAk- Güvenlik ve Güvenlik Açıkları 0 30.11.08 20:52
Kurban Bayramı önlemleri vadaa Türkiye Gündemi 0 16.12.06 12:39


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 03:44.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.6.0
User Alert System provided by Advanced User Tagging v3.0.6 (Lite) - vBulletin Mods & Addons Copyright © 2020 DragonByte Technologies Ltd.
ForumTayfa

Arşiv: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 95 96 97 98 99 100 102 103 104 105 106 155 156 157 158 159 160 161 162 163 164 167 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271


ForumTayfa - Link Değişimi
Telinka İletişim | Voip Ürünleri | Link Değişimine Katılın |

Sitemiz bir forum sitesi olduğundan dolayı, kullanıcılar her türlü görüşlerini önceden onay olmadan anında siteye yazabilmektedir. ForumTayfa Yöneticileri mesajları itina ile kontrol etse de, bu yazılardan dolayı doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. Yine de sitemizde yasalara aykırı unsurlar bulursanız [email protected] email adresine bildirebilirsiniz, şikayetiniz incelendikten sonra en kısa sürede gereken yapılacaktır.

Any member of our web site has the right of adding comments instantly without getting permisson due to the forum structure of our site basis. Althought, our site modarators check comments with care, all the responsibilities sourced from these comments directly belong to the members. If you still find any illegal content in our site ( A.buse, H.arassment, S.camming, H.acking, W.arez, C.rack, D.ivx, Mp.3 or any Illegal Activity ), please report us via [email protected] .Your reports will be evaluated as soon as the arrival of your e-mail.