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

Login Sayfası Acıkları

Recepakcareis - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
04/2016
Nereden:
TURKİYE
Mesajlar:
1.893
Konular:
450
Teşekkür (Etti):
552
Teşekkür (Aldı):
1663
Ticaret:
(0) %
05-05-2016 21:19
#1
Login Sayfası Acıkları


Login Sayfası İstismarı Nedir ?

Arkadaşlar günümüz uygulamarındaki (web,desktop) hemen hemen hepsinde kimlik doğrulama mekanizmaları
bulunmaktadır. Bu kimlik doğrulama işlevi ise bir veritabanı tablosunda bulunan kullanıcı adı ve parola
bilgilerinin kullanıcının girmiş olduğu veriler ile karşılaştırılması ile yapılmaktadır. Bu karşılaştırma
SQL cümleciği bir SQL enjeksiyonu zafiyetine sahip ise ,uygulamanın kimlik doğrulama mekanizmasını göz
ardı edilerek , herhangi bir bazen özellikle seçtiğimiz kullanıcı ile uygulama giriş yapma olanağı oluşabilmektedir.
Bu kontrol ise kimlik doğrulama işlevi barındırdan her uygulamaya yapılacak ilk testlerinden biridir.
İlgili kimlik doğrulama mekanizmalarına basit bir örnek vererek , zafiyeti örnekleme adına bişiler yapalım ;


Kod:
public Users login (String username, String password) {
Users user = new Users();

...

   ResultSet rs=stmt.executeQuery(’’select*FROM users WHERE username=’’+username+’’ and password=’’+password+’’);
   while (rs.next()) {
                 
          user=newUsers(rs.getInt(’’userıd’’),Usertype.USER,rs.getstring(’’username’’));


   }

...
   
   return user ;

}

Login metoduna gönderilen username ve password parametrelerinin hiç bir kontrolden geçmeden SQL cümleciği içerisine
eklendiğini varsayalım . İlgili SQL cümleciği ise users tablosunda kullanıcıdan gelen kullanıcı adı ve parola bilgilerine
bakarak kullanıcının bilgilerini bir obje içine doldurmaktadır.Dolayısıyla uygulamada bu obje içerisindeki verinin varlığını
kontrol ederek , kullanıcıya giriş hakkı vermektedir.Şimdi kullanıcıdan gelebilecek ne tür bir girdi ile bu kontrolün
aşılabileceğine bakalım .




Resimdeki örnekte arkadaşlar parolaya ihtiyaç yoktur , ister THT yazın isterseniz TC yazın önemi yoktur .
İlgili örneğimizde kullanıcı adı ve parolanın sorgulandığı SQL cümleciği içerisine yerleştiğinde SQL cümleciği oluşacaktır ;


SELECT * FROM users WHERE username=’a’ or ’1’=’1’--’ and password=’t4’

Cümleciğine baktığımızda ise users tablosundan username bilgisi a olanlar veya 1=1 olanlar diye bir ifade görülüyor olacaktır.
İfade içerisinde veya(OR) kullanıldığı için WHERE’in sağ tarafı her zaman 1(true) dönecektir.İlgili veritabanının da ORACLE
olduğunu varsayarak -- karakteri sonrası yorum satırı olarak algılanacak ve işlenmeyecektir.Dolayısıyla bu sorgu ;

SELECT * FROM users WHERE username=’a’ or ’1’ halini alacaktır .

Buda users tablosundaki tüm kullanıcıların listelenmesini sağlayacaktır ve tek bir user objesi oluştuğu için ilgili tablodaki
son kullanıcının bilgileri dolacaktır.Bu sayede uygulamanın users tablosundaki son kullanıcı ile uygulamaya giriş yapılacaktır.

Bu durumda ilk kanı arkadaşlar ; İlk kullanıcının yönetici olduğu yönündedir , açıkcası genelde durum böyledir.Eğerki arkadaşlar
lk kullanıcı ile girilmek isteniyorsa aşağıdaki fotoğraf daki gibi bir yöntem izlenebilir .





Şimdi resimdeki test parametresi girildikten sonra SQL cümleciği aşağıdaki gibi olacaktır .

SELECT * FROM users WHERE username=’a’ or’1’=’1’ and rownum=1-- and password’’t4’’

rownum=1 sayesinde ilgili SQL cümleciğinin döndürmeye çalışacağı kullanıcılardan sadece ilki alınacaktır. İlk kullanıcının da yönetici
olma varsayımıyla uygulamaya yönetici kullanıcısı ile giriş yapmış olunur.



Aynı şekilde arkadaşlar aynı şekilde olmasa bile UNION sorguları yardımı ile uygulama üzerinde tanımlı olmayan bir kullanıcıyla da kimlik
doğrulama mekanizmasını geçme imkanımız vardır. Hedef uygulamamızın ’users’ tablosunun id,username,password,name,lastname, alanlarından
oluştuğunu varsayalım yani varsayım yapalım öyle bir uygulamanın olduğunu düşünelim ; Varsayım yanlış olsa da bulmak sadece deneme ve
yanılmalardan ibaret olacaktır.





Bu arkadaşlar fotoğrafta varsayım olarak yapmış olduğumuz test parametremizi SQL sorgusu içine girdiğinde aşağıdakine benzer bir sordu oluşacaktır ;

SELECT *FROM users WHERE username=’’UNION SELECT 999,’T4’,’D3’,’İSMAİL’,’bülbül’ FROM dual--’andpassword=’x’

Bu sorgu sayesinde kullanıcı adı : İSMAİL olan bir kullanıcı ile uygulamaya giriş imkanı bulacaktır.

opsfentek - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
10/2014
Mesajlar:
391
Konular:
16
Teşekkür (Etti):
156
Teşekkür (Aldı):
27
Ticaret:
(0) %
05-05-2016 21:28
#2
Güzel konu eline sağlık
--------------------- Hayat mı ? Benim için sadece 3 şeyden ibaret...
Oyun, Yazılım, Hack...
zSafakVakti - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
05/2016
Mesajlar:
138
Konular:
12
Teşekkür (Etti):
77
Teşekkür (Aldı):
52
Ticaret:
(0) %
28-05-2016 14:36
#3
Alıntı Yazsaydın bari dostum.
--------------------- Her Canını Sıkanla Düşman, Her Elini Sıkanla Dost olma...
MiniHackerMH - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2015
Mesajlar:
724
Konular:
36
Teşekkür (Etti):
0
Teşekkür (Aldı):
104
Ticaret:
(0) %
28-05-2016 14:44
#4
Dorku Varmı Hocam ?
---------------------
📉📈📉📈📉📈📉📈📉📈📉📈📉📈📉📈📉📈📉📈📉📉📈📉📈📉📈📉📈📉📈📉📈📉📈📉📈
Limanları değil dünyaları yaksalar fayda etmiyor.

PHP // HTML // CSS DEVELOPER
█║▌│█│║▌║││█║▌║▌║

© Copyrigt 2013-2016
📉📈📉📈📉📈📉📈📉📈📉📈📉📈📉📈📉📈📉📈📉📉📈📉📈📉📈📉📈📉📈📉📈📉📈📉📈
bilgazli - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
05/2016
Nereden:
KANADA B.İİ
Mesajlar:
343
Konular:
26
Teşekkür (Etti):
7
Teşekkür (Aldı):
16
Ticaret:
(0) %
28-05-2016 14:51
#5
bunu konuda gördüm

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler