TeknoTR  

Geri Dön   TeknoTR > Bilgisayar > Bilgisayarınızın Güvenliği > Guncel Guvenlik Aciklari
Üye Ol SSS Sxe indir Sosyal Gruplar Takvim Resim Galerisi Etiketler Bütün Forumları okunmuş kabul et

MS SQL Server`da Tampon Belleği Kötüye Kullanmak

Guncel Guvenlik Aciklari bölümünde MS SQL Server`da Tampon Belleği Kötüye Kullanmak konusu , Bu makale son zamanlarda onların değer biçilmiş uygulamalarının rotası kabul edilmiş bir saldırı tekniği olan Sec-1 için tasarlanmıştır. Bu tekniğin ana prensibi bazı zamanlar için vardır. Fakat umuyoruz ki bu makale web uygulamalarında yaygın bir saldırı olarak kabul edilen “şifremi ...

Cevapla
 
LinkBack Konu Seçenekleri
Eski 30-12-2007, 03:09   #1 (permalink)
ach
Webmaster
 
ach - ait Avatar
 
Giriş: 15-05-2006
Mesajlar: 15.084
Blog Konuları: 2
Rep Puanı: 5790
ach Rütbe Artı +10ach Rütbe Artı +10ach Rütbe Artı +10ach Rütbe Artı +10ach Rütbe Artı +10ach Rütbe Artı +10ach Rütbe Artı +10ach Rütbe Artı +10ach Rütbe Artı +10ach Rütbe Artı +10ach Rütbe Artı +10
Rep Gücü: 500
E-Güven: (21/100)

MS SQL Server`da Tampon Belleği Kötüye Kullanmak


Bu makale son zamanlarda onların değer biçilmiş uygulamalarının rotası kabul edilmiş bir saldırı tekniği olan Sec-1 için tasarlanmıştır. Bu tekniğin ana prensibi bazı zamanlar için vardır. Fakat umuyoruz ki bu makale web uygulamalarında yaygın bir saldırı olarak kabul edilen “şifremi unuttum” saldırısına karşı size bir bakış açısı sağlayacaktır.
Bu doküman iki bölüme ayrılmıştır. Birinci bölüm tekniğin temel esaslarından bahsetmektedir, ikinci bölüm ise ticari uygulamalarına karşı olan atakları içermektedir.
“ŞİFREMİ UNUTTUM ” ATAĞI
Web uygulamalarında çoğunlukla kullanıcının hesabının doğrulanması gerekmektedir. Ayrıca kullanıcının şifresini yenilenmesi ya da yeniden verilmesini sağlayan yöntemlerde bulunmaktadır.
Bu parçalar farklı genişlikte çalışmaktadırlar. Bunun bir kaç nedeni bulunmaktadır. Örneğin: stil, dil, mantık ya da işletilen sistem. Bu atağı bir ortam yâda geliştirme stili ile sınırlandırmamak gerekir. Bu dokuman ile aşağıdaki bilinen parçalara adapte olunmuştur.
NOT: Bu örnek Sec-1 ASNA takımı ile gerçek bir web uygulamasına
dayanmaktadır.
Ortam
Tür
Tanıtım Serverı
Microsoft IIS 6.0
Server Side Scrip Türü
ASP[Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ].NET (Visual Basic)
Veritabanı
MS SQL Server (Stored Procedure [Saklı Yordam] kullanılmıştır)

Şifre Hatırlatma İşlemi
1- Kullanıcı e-mail adresini girer.
2- E-mail adresi SQL değişkenine yüklenir. Daha sonra değişken bir SQL veritabanında kullanıcının hesabını bulmak için arama işleminde kullanılır. Kullanıcı adı (e-mail) adresi ve şifre elde edilir.
3- Uygulamanın e-maili (yani web sayfası) kullanıcıya hesap bilgilerini gönderir.
SALDIRI ÖNSÖZÜ
Önce saldırı işlemini ayırıyoruz. Çünkü bu anahtar öğenin üzerini örtmek için önemlidir. Anahtar öğe bu atağın gerçekleşmesini olanaklı hale getirir. Şayet VB.Net ve Microsoft SQL değikenlerini
biliyorsanız bu kısmı geçebilirsiniz.
Server Değişkenleri
Değişkenlerin boyutu ve tipi saldırılar ve kusurlar için vurgulanacak bir anahtardır.Bu örnekte VB ( ASP .NET) ve Microsoft SQL server kullanılmıştır. Bunların her birinde değişken tanımı birazcıkta olsa farklıdır. Aşağıdaki örnekleri inceleyin:
ASP .NET (VB) De Değişken Tanımı
Dim UserNameAsEmail AS String
Yukarıdaki değişken programcı tarafından oluşturulur. Değişkenin adı UserNameAsEmail dir ve kullanıcının email adresini tutar. (bu durumda email adresi ve kullanıcı adı bir tane ve aynıdır)Madem ki bu bir Visual Basic uygulaması programcının maksimim boyutu belirtmesi gerekmemektedir. (default değeri 64KB tır.) Fakat bu önerilir.
Microsoft SQL De Değişken Tanımı
Declare @UserNameAsEmail varchar(320)
Yukarıdaki SQL ifadesi en fazla 320 karakter tutacak şekilde bir değişken oluşturur RFC 2821 ye gore geçerli bir e-mail adresinin uzunluğu en fazla 320 karakterdir. Varchar tipinin maksimum alabileceği uzunluk 8000 bytes dır.
Beyaz Boşluk
Microsoft SQL server string değerlerindeki beyaz boşluk izlerini önem vermez.. Aşağıdaki SQL ifadesinde bu gösterilmiştir.
1> declare @UserNameAsEmail varchar(320)
2> set @UserNameAsEmail = ’[Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ]
3> select username,password FROM UserEmail where username=@UserNameAsEmail
4> go
username password
------------------- -------------
[Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ] d32ed£%dZZA
Beyaz boşluk izleri yaparakta yanı sonuc elde ederiz.
1> declare @UserNameAsEmail varchar(320)
2> set @UserNameAsEmail = [Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ]
3> select username,password FROM UserEmail where username=@UserNameAsEmail
4> go
username password
------------------- --
Savunmasızlık (The Vulnerability)
vulnerability ASP.NET değişkenleri ve Microsoft SQL değişkenleri birbiri ile örtüşmediği zaman oluşur. Eğer ASP.NET değişkeninin uzunluğu SQL server ın maksimum uzunluğundn büyük olursa , bizim göndereceğimiz değeri “şifremi unuttum” işlevininde etki etmek için kullanılabilecektir. Bizim amacımız, SQL Servara email adresini geçerli olarak yorumlatmak
ve herhangi bir email adresi aracılığı ile saldırgana bir kullanıcı hesabı göndermektir.
Aşağıdaki öreği inceleyelim
(Not değişken uzunlukları bu döküman için orantılı bir şekilde belirlenmiştir.)
ADIM 1:
Saldırgan email adreslerini girer. [Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ] kurbanın mail adresi
, [Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ] ise saldırganın mail adresi
[Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ] [308 Spaces]; [Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ]
Bu .Net değişkeni olan UserNameAsEmail e yüklenecektir.

ADIM 2:
Kullanıcın email adresi SQL server değişkenine kopyalanacaktır. SQL server değişkeni en fazla verinin 320 byte olan kısmını tutacaktır. Bu nedenle beyaz boşluklar bitten yere kadar olan
yeri kopyalayacaktır.
Misrosoft SQL Server Değişkeni:

Yukarıda gösterildiği şeklide Microsoft SQL değişkeni tutacaktır ve daha sonra kullanıcının şifresinin detaylarını getirecektir.
ADIM 3:
Kurban kullanıcı için geçerli bir email adresi girdiğimiz varsayalım.
SQL server kullanıcının hesabını güvenli bir şekilde .NET uygulamasına getirecektir. Kullanıcının “şifremi unuttum” için bir bölüm dizayn edilecektir.Beyaz boşluk ASP.NET email fonksiyonu tarafından istenilen mail adresini yapmak için görmezlikten gelinecektir:
[Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ]; [Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ]
Bir email kullanıcı hesabının detaylarını içerebilir ve hem kullanıcıya hemde saldırgana mail gider.
SAVUNMASIZLIĞI AZALTMAK
Bu makalede tanımlanan problem güvenli uygulamalr geliştirmek için kolay bir yöntemdir. Örneğin bu makaledeki ufak bir kod değişiklik ile savunmasızlığın ortadan kaldırıyoruz.
Input (Girdi ) Doğruluğu
İlk adım olarak sadece iyi karakterlere izin verilip geçerli bir mail adresi girilmeli .Herhangi bir ihlalin filitrelenmesi diğer analiz için kilitlenmeli. Bir emailde iyi karakterler için RFC28223 ve Wikipedia makalelerine bakılabilir.
Güvenli Değişken Oluşturmak
.NET ve Microsoft SQL server değişkenlerinin maksimum uzunluğunun aynı olduğundan emin olun. Yukarıdaki örnekte aşağıdaki gibi tanımlanması gerekmektedir:
Dim UserNameAsEmail AS String * 320
Declare @UserNameAsEmail varchar(320)
Çeviren: Özlem ARSLAN
Kaynak: [Bu Linki Görüntüleyebilmeniz İçin Üye Olmanız Gerekiyor. ]

__________________
Zıt fikirlerin olmadığı memlekette gelişme olmaz.
ach isimli üyemiz çevrimdışıdır. (Offline)  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Konu Seçenekleri

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık
Gitmek istediğiniz klasörü seçiniz


Şu an saat 14:13 .
Tarih 11-10-2008


Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
Türkçe Çeviri : ach

eXTReMe Tracker


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 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 58 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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191